[erro] predavanje: fpga 12.1.2017

33
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

Upload: stipe-predanic

Post on 29-Jan-2018

80 views

Category:

Education


2 download

TRANSCRIPT

Page 1: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 2: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 3: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 4: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 5: [ERRO] Predavanje: FPGA 12.1.2017

14.05.17 Copyright Stipe Predanić, 2017 5

Izrada logičkih sklopova (danas)

Page 6: [ERRO] Predavanje: FPGA 12.1.2017

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)

Page 7: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 8: [ERRO] Predavanje: FPGA 12.1.2017

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)

Page 9: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 10: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 11: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 12: [ERRO] Predavanje: FPGA 12.1.2017

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)

Page 13: [ERRO] Predavanje: FPGA 12.1.2017

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?

Page 14: [ERRO] Predavanje: FPGA 12.1.2017

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?

Page 15: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 16: [ERRO] Predavanje: FPGA 12.1.2017

14.05.17 Copyright Stipe Predanić, 2017 16

FPGA

Page 17: [ERRO] Predavanje: FPGA 12.1.2017

14.05.17 Copyright Stipe Predanić, 2017 17

FPGA

CLB = configurable logic block

Page 18: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 19: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 20: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 21: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 22: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 23: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 24: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 25: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 26: [ERRO] Predavanje: FPGA 12.1.2017

14.05.17 Copyright Stipe Predanić, 2017 26

Strojevi stanja (automati)

Page 27: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 28: [ERRO] Predavanje: FPGA 12.1.2017

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

Page 29: [ERRO] Predavanje: FPGA 12.1.2017

14.05.17 Copyright Stipe Predanić, 2017 29

Automati

Minimalni oblik

trenutno stanje ulaz novo stanje

Page 30: [ERRO] Predavanje: FPGA 12.1.2017

14.05.17 Copyright Stipe Predanić, 2017 30

Automat

Page 31: [ERRO] Predavanje: FPGA 12.1.2017

14.05.17 Copyright Stipe Predanić, 2017 31

Automati

Neminimaalni broj bistabila

– svaki izlaz prestavlja jedno stanje

Page 32: [ERRO] Predavanje: FPGA 12.1.2017

14.05.17 Copyright Stipe Predanić, 2017 32

Automati - Moore

● Izlaz povezan sa stanjem

Page 33: [ERRO] Predavanje: FPGA 12.1.2017

14.05.17 Copyright Stipe Predanić, 2017 33

Automati - Mealy

● izlaz povezan s promjenom između stanja