[erro] predavanje: fpga 12.1.2017
TRANSCRIPT
FPGA, HDL, AUTOMATI
Tehničko veleučilište u Zagrebu
Elektrotehnički odjel
Stipe Predanić
12.1.2017
Elektronička računala i računalna oprema
GmailImages
14.05.17 Copyright Stipe Predanić, 2017 2
3. Materijali
● Teme:
– programirljivi logički sklopovi
– programska podrška za izradu programirljivi logičkih sklopova
– pristup razvoju programa za sekvencijalne logičke sklopove
14.05.17 Copyright Stipe Predanić, 2017 3
Kombinacijski i sekvencijalni sklopovi
● Obrađeni na satovima kolegija Digitalni sklopovi
● Kombinacijski – promjena na ulazu odmah rezultira promjenom na izlazu
● Sekvencijalni – promjena na ulazu u kombinaciji s prijašnjim stanjima (memorijom) rezultira promjenom na izlazu i novim stanjima u memoriji → upotreba bistabila
14.05.17 Copyright Stipe Predanić, 2017 4
Izrada logičkih sklopova (nekoć)
● Izrada na pločici
– prvo na protoboard pločici
– potom specijalizirana tiskana pločica
14.05.17 Copyright Stipe Predanić, 2017 5
Izrada logičkih sklopova (danas)
14.05.17 Copyright Stipe Predanić, 2017 6
Programirljivi logički sklopovi
● Potrebno je bilo osmisliti sustav koji se može brzo i lako prepraviti da za određenu kombinaciju na ulazu daje ispravne izlaze - bez korištenja klasičnih logičkih sklopova
● Programmable logic device (PLD)
14.05.17 Copyright Stipe Predanić, 2017 7
Programirljivi logički sklopovi - povijest
● Kroz vrijeme su se tako pojavile tehnologije
– Programmable Read Only Memory (PROM)● svaki bit na adresnoj liniji je jedan ulaz, a svaki bit na
podatkovnoj liniji je jedan izlaz● problem je što to dobro funkcionira
za kombinacijske logičke sklopove,
ali ne funkcionira za sekvencijalne
– Na sličnom principu radi i
PAL (Programmable Array Logic)
ali se spojevi rade na ulazima u
I sklovove
14.05.17 Copyright Stipe Predanić, 2017 8
Programabilni logički sklopovi - povijest
– Programmable Logic Array (PLA)● programabilna i lijeva (I – AND) matrica i desna (OR – ILI)
matrica● funkcionira kroz jednostavno definiranje kanonskih oblika
(suma produkata)
14.05.17 Copyright Stipe Predanić, 2017 9
Programabilni logički sklopovi - povijest
– “Moderniji” PAL sklopovi imaju i memorijske elemente na izlazima u jednostavnom ili kompleksnijem obliku (zvanom makroćelija)
– poznati sklopovi 16R8 (16 ulaza i 8 izlaza) i 22V10
14.05.17 Copyright Stipe Predanić, 2017 10
Programabilni logički sklopovi - povijest
● Complex Programmable Logic Devices (CPLD)
– sastoji se od niza PAL ili PLA blokova zvanih funkcijski blok (eng. function block) ili makroćelija, a koje se međusobno povezuju kroz prespajajuću matricu
14.05.17 Copyright Stipe Predanić, 2017 11
Programabilni logički sklopovi - povijest
● Complex Programmable Logic Devices (CPLD)
– na rubovima sustava nalaze se blokovi odgovorni za komunikaciju s okolinom
14.05.17 Copyright Stipe Predanić, 2017 12
Programabilni logički sklopovi - povijest
● Complex Programmable Logic Devices (CPLD)
– međukonekcijska matrica se sastoji od niza multiplexera koji dopuštaju međusobno spajanje nekih blokova – nisu svi blokovi spojeni zajedno.
– programiranjem pojedinih funkcijskih blokova i prespajanjem multipleksora dobiva se željena funkcionalnost sklopova
– CPLD se koristi kod “manjih” sklopova – tipični CPLD može ostvariti sklop koji bi imao do 10 000 logičkih vrata u klasičnoj izvedbi
– bazira na osnovnim logičkim sklopovima, upisani “program” ostaje i kad nestane el. energije, te je CPLD odmah upotrebljiv za rad
– željena funkcionalnost se može isprogramirati i kad je CPLD već ugrađen u konačni sklop (eng. In-system programming ISP)
14.05.17 Copyright Stipe Predanić, 2017 13
Programabilni logički sklopovi - FPGA
● Field programmable gate array (FPGA) je programirljivi logički sklop koji služi za izvedbu kompleksnih korisnički definiranih digitalnih sustava.
● FPGA arhitektura se sastoji od
– konfigurabilnih logičkih blokova
– konfigurabilnih ulazno izlaznih (I/O) blokova
– programabilne interkonekcije između blokova (linije okomito i vodoravno)
– Pa gdje je onda razlika u odnosu na CPLD?
14.05.17 Copyright Stipe Predanić, 2017 14
Programabilni logički sklopovi - FPGA
– Isti elementi, ista osnovna shema – pa gdje je onda razlika u odnosu na CPLD?
14.05.17 Copyright Stipe Predanić, 2017 15
FPGA
● Razlika CPLD - FPGA
– FPGA može sadržavati i blokove koji imaju dodatne komponente poput aritmetičko logičke jedinice, memorije, dekodere
– FPGA logički blokovi nisu bazirani na jednostavnim I i ILI sklopovima, već na ideji multipleksiranih izlaza s dodatnim sklopovima
Plessey logic blok
LUT = Look-up Table (pregledna tablica)FF – flip flop (bistabil)
XILINX logic block
14.05.17 Copyright Stipe Predanić, 2017 16
FPGA
14.05.17 Copyright Stipe Predanić, 2017 17
FPGA
CLB = configurable logic block
14.05.17 Copyright Stipe Predanić, 2017 18
FPGA
● Zapisivanje podataka za multiplekser ili LUT, te u matricu za spajanje blokove se može napraviti korištenjem:
– SRAM (static RAM)● Prednost: brzo programiranje● Nedostatak: podaci se gube gašenjem sklopa, potrebno
izvana dati programski kod pri pokretanju što može dulje trajati ako se radi o većem “programu” (napomena: neki FPGA chipovi imaju ugrađenu FLASH memoriju iz koje se sklop programira)
– EPROM i EEPROM – svaki LUT je mali električno definiran PROM
● Prednost: podaci se ne gube gašenjem sklopa● Nedostatak: teže programiranje (kod EPROM jednokratno) i
sam postupak spremanja programa je kompleksniji
14.05.17 Copyright Stipe Predanić, 2017 19
FPGA
– Antifuse – programirljivi samo jednom jer kada naprave spoj nije ga više moguće promjeniti
● Prednost: jeftini, mali otpor i parazitski kapacitet● Nedostatak: jednokratno programiranje, nije pogodno za
razvoj novih sklopova
14.05.17 Copyright Stipe Predanić, 2017 20
Zašto koristiti FPGA?
● FPGA bazirani sklopovi :
– su jednostavniji za prototipiranje, brži za izmjenu, otporniji na greške
● napravi se izmjena u “programu” i ispočetka se isprogramira. Nema žica između “logičkih” sklopova jer je sve u samo chipu
– omogućuju spajanje velikog broja sklopova u samo jedan mali chip (jeftini FPGA chipovi imaju ekvivalent 30 do 100 tisuća logičkih vrata, skuplji i preko milijun)
– omogućuju sklopovske izvedbe programa koji može biti paraleliziran (istovremeni rad više linija koda) poput DSP-a
14.05.17 Copyright Stipe Predanić, 2017 21
Primjeri FPGA upotrebe
● u nastavi za područje digitalnih sklopova i mikroelektronike
– E2LP - http://e2lp.piap.pl/moodle/
– FER-ULX2S http://www.nxlab.fer.hr/dl/
● u emulaciji mikroprocesora ili mikroupravljača
– FPGA Arduino http://www.nxlab.fer.hr/fpgarduino/
– 8051 http://www.oreganosystems.at/?page_id=96
– http://opencores.org/projects → processor
● u izradi novih sklopova baziranih na postojećim hardverskim opisima
– http://opencores.org/projects
14.05.17 Copyright Stipe Predanić, 2017 22
Kako napisati program za FPGA?
● Za pripremu programa koriste se hardware description language (HDL)
– VHDL - VHSIC (Very High Speed Integrated Circuit) HDL● više kao programski jezik ADA, jezik je vrlo striktan ali zahtjeva
šire opise● baziran na top down pristupu gdje se veći blokovi dijele na
manje blokove ● više se brine o velikoj slici nego o radu s direktnim sklopovima
– Verilog● više kao programski jezik C, manje je potrebno opisa ali je
potrebno više paziti da se ne napravi nešto pogrešno● bolje opisuje same sklopove nego cjelokupnu sliku
14.05.17 Copyright Stipe Predanić, 2017 23
VHDL vs Verilog
library ieee;use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity counter is port(C, CLR : in std_logic; Q : out std_logic_vector(3 downto 0)); end counter; architecture archi of counter is signal tmp: std_logic_vector(3 downto 0); begin process (C, CLR) begin if (CLR='1') then tmp <= "0000"; elsif (C'event and C='1') then tmp <= tmp + 1; end if; end process; Q <= tmp; end archi;
module counter (C, CLR, Q); input C, CLR; output [3:0] Q; reg [3:0] tmp; always @(posedge C or posedge CLR) begin if (CLR) tmp = 4'b0000; else tmp = tmp + 1'b1; end assign Q = tmp; endmodule
VHDL VERILOG
4 bitno sinkrono brojilo
14.05.17 Copyright Stipe Predanić, 2017 24
VHDL / VERILOG
● Za one koje zanima više:
– http://freerangefactory.org/ - knjige iz VHDL-a; VHDL i Verilog gotovi programi
– FER ● http://ferko.fer.hr/vhdllab2/ - VHDL besplatni simulator. Upute
na http://java.zemris.fer.hr/rektor/vhdllab/● http://www.nxlab.fer.hr/dl/ - digitalna logika predviđena za rad
na pravoj pločici
14.05.17 Copyright Stipe Predanić, 2017 25
Strojevi stanja (automati)
● Sinkroni logički sklopovi sastoje se od kombinacijskih logičkih sklopova i memorije (bistabila)
● Izlazi iz sklopa mogu biti funkcija
– isključivo iz trenutnog stanja (memorije)● Mooreov stroj
– trenutnih ulaza i trenutnog stanja (memorije)● Mealyjev stroj
● broj stanja je određen i konačan pa često govorimo o konačnim automatima
14.05.17 Copyright Stipe Predanić, 2017 26
Strojevi stanja (automati)
14.05.17 Copyright Stipe Predanić, 2017 27
Automati
● Primjer: aparat za proizvode
– pretpostavke:● koriste se kovanice samo od 5 centi (nickel) i 10 centi (dime)● proizvod se daje na 15 centi● nema povrata novca
14.05.17 Copyright Stipe Predanić, 2017 28
Automati
● Mogući načini ubacivanja novca: 3 puta po N, N + D, D + N, D + D (N – nickel (5 centi), D – dime (10 centi))
● Mogući prijelazi:
– Ulaz N, D, Reset
– Izlaz: Open (Otvori)
● Pretpostavke:
– jedna kovanica po ciklusu
sustava
– sustav stoji u istom stanju
do nove kovanice na ulazu
14.05.17 Copyright Stipe Predanić, 2017 29
Automati
Minimalni oblik
trenutno stanje ulaz novo stanje
14.05.17 Copyright Stipe Predanić, 2017 30
Automat
14.05.17 Copyright Stipe Predanić, 2017 31
Automati
Neminimaalni broj bistabila
– svaki izlaz prestavlja jedno stanje
14.05.17 Copyright Stipe Predanić, 2017 32
Automati - Moore
● Izlaz povezan sa stanjem
14.05.17 Copyright Stipe Predanić, 2017 33
Automati - Mealy
● izlaz povezan s promjenom između stanja