reprogramowalne układy fpga, 1iswiki.if.uj.edu.pl/images/d/df/fpga_wyklad_3.pdf · 2019. 4. 3. ·...
TRANSCRIPT
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Reprogramowalne układy FPGA, 1
dr M.Pałka
21.03.2014
1 / 31
c©dr Marek Pałka, Uniwersytet Jagielloński, wydział FAIS, 2013
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Plan wykładu I
1 Plan wykładu
2 VHDL krok po kroku, podstawy część IIJednostaka projektowa - tworzenie komponentówTablice - arrayGenerateFunkcjeProceduryTyp złożony - recordaliaspackagepackage body
3 Obliczenia w układach FPGAPotokowość - ang. piplineRównoległość obliczeń
4 Architektura układów FPGA2 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Plan wykładu II
Sygnały - standardySygnały - niedopasowanieLVDSSetup i HoldFIFODual port RAMRozproszony (ang. distributed) RAMZasoby pamięci w układach FPGAPamięć zewnętrzna SRAMPamięć zewnętrzna DDR RAM
5 Zegar a układy FPGACzęstotliwość pracy układu FPGAJakość zegara - jitterWytwarzanie zegarów - Spartan3Literatura
3 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Plan wykładu III
6 Koniec
4 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Jednostaka projektowa - tworzenie komponentówTablice - arrayGenerateFunkcjeProceduryTyp złożony - recordaliaspackagepackage body
Jednostaka projektowa - tworzenie komponentów
używanie komponentów
Komponent, który będzie użyty w ciele jednostki proejtkowej powinien zostaćnajpierw zadeklarowany. Nie jest to jednak konieczne, zazwyczaj w czasiekompilacji tworzona jest tymczasowa biblioteka work, w której zawarte sąwcześniej skompilowane komponenty będące niżej w hierarchii projektu.
Example
architecture counter of counter
5 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Jednostaka projektowa - tworzenie komponentówTablice - arrayGenerateFunkcjeProceduryTyp złożony - recordaliaspackagepackage body
tablice
Dekleracja nowego typu tablicy o zadanej wielkości, na którą składa się wcześniejzdefiniowany typ danych. Na tej podstawie można deklarować sygnały nowegotypu.
Example
type signal_array_type is array (0 to ARRAY_SIZE 1) of std_logic_vector(7downto 0);signal signal_a_array, siganl_b_array : signal_array_type;
6 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Jednostaka projektowa - tworzenie komponentówTablice - arrayGenerateFunkcjeProceduryTyp złożony - recordaliaspackagepackage body
Generate for
Generate for
signal X : std_logic_vector(9 downto 0);signal Y : std_logic_vector(7 downto 0)beginEtykieta_GEN : generate for i in 0 to 7 generateAND_OR_GEN : AND_OR1port map( A => X(i),B => X(i+1),C => X(i+2),Y => Y(i));end generate Etykieta_GEN; --...
Examples
X(3)
X(2)
X(9)
7 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Jednostaka projektowa - tworzenie komponentówTablice - arrayGenerateFunkcjeProceduryTyp złożony - recordaliaspackagepackage body
Generate if
Generate if
signal X : std_logic_vector(8 downto 0);signal Y : std_logic_vector(7 downto 0);beginEtykieta_GEN_IF : if GEN_COND = 1 generateEtykieta_GEN_FOR : generate for i in 0
to 7 generateSELECT_A_IF : if i = 0 genertateAND_OR_GEN : AND_OR1port map( A => X(i), B => X(i+1),C => X(i+2), Y => Y(i));end genrate SELECT_A_IF;
SELECT_B_IF : if i > 0 genertateAND_OR_GEN : AND_OR1port map( A => Y(i-1), B => X(i+1),C => X(i+2), Y => Y(i));
end genrate SELECT_A_IF;end generate Etykieta_GEN_FOR;end generate Etykieta_GEN_IF;
Examples
8 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Jednostaka projektowa - tworzenie komponentówTablice - arrayGenerateFunkcjeProceduryTyp złożony - recordaliaspackagepackage body
Funkcje
function
function nazwa_funkcji (lista typów) returntyp_zwracany isdeklaracjebeginciało_funckjiend nazwa_funkcji;
Examples
function convert_bool_to_std_logic(bool_in :boolean) return std_logic isbeginif bool_in then return ’1’;else return ’0’;end if;end convert_bool_to_std_logic;
Zastosowania
Funkcje stosujemy dlabloków operacji, które sączęsto wykonywane.Można je stosować wprzypadku częścipodlegającejimplementacji wukładach FPGA lub teżdla symulacji.
9 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Jednostaka projektowa - tworzenie komponentówTablice - arrayGenerateFunkcjeProceduryTyp złożony - recordaliaspackagepackage body
Procedury
procedure
procedure nazwa_procedury (lista typów) isdeklaracjebeginciało_proceduryend nazwa_procedury;
Examples
procedure convert_bool_to_std_logic(bool_in : inboolean; my_std : out std_logic) isbeginif bool_in then my_std <= ’1’;else my_std <= ’0’;end if;end convert_bool_to_std_logic;... convert_bool_to_std_logic(my_bool,
another_my_std);
Zastosowania
Procedura wprzeciwieństwie dofunkcji może zmieniaćwartości zmiennych.Jednakże czy danazmienna może zostaćzmieniona zależne jestod jej rodzaju:
in - zmienna tylkodo odczytu,
out - zmienna tylkodo zapisu,
inout - zmienna doodczytu i zapisu.
10 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Jednostaka projektowa - tworzenie komponentówTablice - arrayGenerateFunkcjeProceduryTyp złożony - recordaliaspackagepackage body
Typ złożony - record
record
type nazwa_zbioru is recorddeklaracje_typów;end record
Examples
type my_record is recordpreambula: std_logic_vector(55 downto 0);destMAC: std_logic_vector(47 downto 0);a_array: signal_array_type;t : time;data_src : ...;end record;signal record_a : my_record;begin...my_eth_frame.destMAC <= x"AABBCCDDEEFF";...
Zastosowania
Record może zostaćużyty dla strukturdanych, które sąużywane w szereguprocesach. Pozwala teżuprościć i sprawić abyzapis stał się bardziejprzejrzysty. Typy array irecord mogą zawierać sięw sobie.
11 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Jednostaka projektowa - tworzenie komponentówTablice - arrayGenerateFunkcjeProceduryTyp złożony - recordaliaspackagepackage body
alias
alias
alias nazwa : typ isnazwa_właściwa(opcjonalnie_zakres)
Examples
signal periph_interface : std_logic_vector(47downto 0);alias special_data : std_logic_vector(7 downto 0)is periph_interface(40 to 47);
Zastosowanie
Alias jest alternatywnąnazwą dla już istniejącejzmiennej. Ułatwiaszybki dostęp dozłożonych typówdanych.
12 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Jednostaka projektowa - tworzenie komponentówTablice - arrayGenerateFunkcjeProceduryTyp złożony - recordaliaspackagepackage body
package
package
package nazwa_package isdeklaracjeend nazwa_package;
Examples
package przyklad_package isconstant FLAG : std_logic_vector(15 downto 0) :=x"ABBA";type FSM_STATE is (IDLE,TEST1,TEST2);end przyklad_package; ...use work.przyklad_package.all; ...beginmy_std <= FLAG; ...
Zastosowanie
Wszystkie zmienne,stałe, componenty itp.dla przejrzystościwłaściwego kodu mogązostać umieszczone woddzielnym pliku.
13 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Jednostaka projektowa - tworzenie komponentówTablice - arrayGenerateFunkcjeProceduryTyp złożony - recordaliaspackagepackage body
package body
package body
package nazwa_package isdeklaracjeend nazwa_package;package body nazwa_package isdefinicjeend nazwa_package;
Examples
package przyklad_package isfunction convert_bool_to_std_logic(bool_in :boolean) return std_logic;end przyklad_package;package body nazwa_package isfunction convert_bool_to_std_logic(bool_in :boolean) return std_logic is ...end convert_bool_to_std_logic;end package body;
Zastosowanie
W ciele package możnadefiniować zachowaniesię funkcji i procedur.Package powinien byćoddzielnym plikiem dlazapewnieniaprzejrzystości kodu.
14 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Potokowość - ang. piplineRównoległość obliczeń
Potokowość - ang. pipline
((A+B)*C)-D
15 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Potokowość - ang. piplineRównoległość obliczeń
Równoległość obliczeń
16 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Sygnały - standardySygnały - niedopasowanieLVDSSetup i HoldFIFODual port RAMRozproszony (ang. distributed) RAMZasoby pamięci w układach FPGAPamięć zewnętrzna SRAMPamięć zewnętrzna DDR RAM
Sygnały - standardy
U(V)
czas(s)
LVTTL
U(V)
czas(s)
LVCMOS
Logiczne '0' '1' NET SIG_IN<0> LOC ="AC9" | IOSTANDARD="LVDS_25";
NET SIG_IN<0> LOC ="AC9" | IOSTANDARD="LVCMOS_25";
NET SIG_IN<0> LOC ="AC9" | IOSTANDARD="LVTTL";
R
U(V)
czas(s)
LVDS
R
ΔVmin/max 100Ω
VO/I Hmax
VO/I HminVO/I Lmax
VO/I Lmin
Pozytywna część sygnału LVDS
Negatywna część sygnału LVDS
17 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Sygnały - standardySygnały - niedopasowanieLVDSSetup i HoldFIFODual port RAMRozproszony (ang. distributed) RAMZasoby pamięci w układach FPGAPamięć zewnętrzna SRAMPamięć zewnętrzna DDR RAM
Sygnały - niedopasowanie
poprawna terminacja
zła terminacjapoziom napięcia dla
jedynki logicznej
poprawne wartości logiczne
zakłócenia spowodowaneniepoprawną terminacją
Sygnał "analogowy"
Jeśli sygnał elektryczny/cyfrowy ma stosunkowo dużą szybkość narastania,wówczas linia transmisyjna powinna być rozpatrywana jako tak zwana linia długa.Sytuacja taka następuje gdy wymiar linii długiej jest porównywalny z długościąfali przesyłanego sygnału elektrynczego.
50Hz - 950 km
fale radiowe (100MHz) - 50 cm
1GHz - 5cm
W takiej sytuacji należy brać pod uwagę dopasowanie linii transmisyjnej doodbiornika - mogą wystąpić odbicia.
18 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Sygnały - standardySygnały - niedopasowanieLVDSSetup i HoldFIFODual port RAMRozproszony (ang. distributed) RAMZasoby pamięci w układach FPGAPamięć zewnętrzna SRAMPamięć zewnętrzna DDR RAM
LVDS
Zakłóceniaelektromagnetyczne
Sygnał LVDS (należący do grupy sygnałów różnicowych) ma tą zaletę, iżzakłócenia pochodzące z zewnątrz są w znacznym stopniu zredukowane. Wynikato z faktu iż wartość logiczna ’0’ lub ’1’ jest zależna od różnicy wartości sygnałudodatniego i ujemnego. To wraz z małą różnicą napięć pomiędzy pozytyną anegatywną częscią sygnały (typowo około +/- 350mV) daje możliwość przesyłaniadanych z szybkością do kilku Gbit/s.
19 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Sygnały - standardySygnały - niedopasowanieLVDSSetup i HoldFIFODual port RAMRozproszony (ang. distributed) RAMZasoby pamięci w układach FPGAPamięć zewnętrzna SRAMPamięć zewnętrzna DDR RAM
Setup i Hold
Stabilne dane
Dane
ts
th
Zegar
Czas Setup (ustalania) - jest to czas w jakim sygnał powinien być stabilny przedpojawieniem się zbocza zegara, Czas Hold (podtrzyamania) - jest to czas, wktórym sygnał powinien zachować swoją wartość po pojawieniu się zbocza zegara.W przypadku niedotrzymania powyższych czasów mogą nastąpić przekłamania wtrancmisji. W układach FPGA są specjalne instrukcje ustawiające powyższe czasy.Jest to bardzo ważne w sytuacji kiedy komunikujemy się z układu FPGA do”świata zewnętrznego”.
20 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Sygnały - standardySygnały - niedopasowanieLVDSSetup i HoldFIFODual port RAMRozproszony (ang. distributed) RAMZasoby pamięci w układach FPGAPamięć zewnętrzna SRAMPamięć zewnętrzna DDR RAM
FIFO
FIFO
dana do zapisu
FIFO
Zapis
FIFO
Zapis kolejnych danych
FIFO
FIFO
Zapis i odczyt
wejś
cie
wejś
cie
wejś
cie
wejś
cie
wejś
cie
wyjś
cie
WR_CLK
D_IN
RESET
RD_CLK
EMPTY
FULL
RD_DATA_CNTR
WR_EN RD_EN
D_OUT
FIFO
Pamięci FIFO w szególności są wykorzystywane w sytacji kiedy przekraczamydwie domeny zegarowe (części układu FPGA taktowane różnymi zegarami).Można je też wykorzystywać do zmiany szerekości magistrali dla napływającychdancyh (przykładowo 1bit na 16 bitów). Najczęściej szerkość magistrali danychjest potęgą liczby 2.
21 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Sygnały - standardySygnały - niedopasowanieLVDSSetup i HoldFIFODual port RAMRozproszony (ang. distributed) RAMZasoby pamięci w układach FPGAPamięć zewnętrzna SRAMPamięć zewnętrzna DDR RAM
Dual port RAM
CLK_A
D_IN_A
RESET
WR_A
ADR_A
RD_A
D_OUT_A
DPRAM
18kb
D_OUT_B
CLK_B
D_IN_B
WR_B
ADR_B
RD_B
Wbudowane pamięci RAM
W układach FPGA standardowoumiejscowione są bloki pamięci.Są one wbudowane (ang.embedded) w architekturęukładu FPGA i pogrupowaneprzestrzennie. Najczęściepojemność pojedyńczego blokuwynosi 18kb. Podstawowe blokipamięci można łączyć w celuuzysania większych blokówpamięci. Najczęście wykonuje sięto przy pomocy narzędzidostarczanych wrazoprogramowaniemprzeznaczonym dla układówFPGA (coregen, ipcore...).
22 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Sygnały - standardySygnały - niedopasowanieLVDSSetup i HoldFIFODual port RAMRozproszony (ang. distributed) RAMZasoby pamięci w układach FPGAPamięć zewnętrzna SRAMPamięć zewnętrzna DDR RAM
Rozproszony (ang. distributed) RAM
DPRAM18kb
NOT
AND OR XOR
NAND NOR XNOR
1
0
1
0
adres wyjście
LUT
komorkipamięciSRAM
Komórkapamięci
Rozproszona pamięćRAM
Do wytworzenia pamięcitypu RAM zużyte sązasoby logiczne FPGA(bramki, przerzutniki,LUT). Może to być wniektórych przypadkachlepsze ze względu naszybkość takwytworzonej pamięcigdyż może ona zostaćumieszczonabezpośrednio przydanym bloku logicznym.
23 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Sygnały - standardySygnały - niedopasowanieLVDSSetup i HoldFIFODual port RAMRozproszony (ang. distributed) RAMZasoby pamięci w układach FPGAPamięć zewnętrzna SRAMPamięć zewnętrzna DDR RAM
Zasoby pamięci w układach FPGA
Rodzina FPGA ilość pamięci (block ram) kb distributed RAM kbSpartan 3E 648 231Lattice E3PM 6850 303Virtex 5 18576 3420
Virtex 7 UltraSCALE 132000 28700Zasoby pamięci i zestawienie wybranych układów FPGA.
24 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Sygnały - standardySygnały - niedopasowanieLVDSSetup i HoldFIFODual port RAMRozproszony (ang. distributed) RAMZasoby pamięci w układach FPGAPamięć zewnętrzna SRAMPamięć zewnętrzna DDR RAM
Pamięć zewnętrzna SRAM
SRAM
W przypadkuniewystarczającychzasobów pamięci możnapodłaczyć pamięć typuSDRAM - wymaga onspecjalnego interfejsu,który może zostaćwygenerowany przezoprogramowanie dlaukładów FPGA.
25 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Sygnały - standardySygnały - niedopasowanieLVDSSetup i HoldFIFODual port RAMRozproszony (ang. distributed) RAMZasoby pamięci w układach FPGAPamięć zewnętrzna SRAMPamięć zewnętrzna DDR RAM
Pamięć zewnętrzna DDR RAM
FPGA
DDR RAM
DDR RAM
Dostęp do pamięci możebyć zbyt wolny w takichwypadkach możnazastosować pamięciDDR. Wymagane jestjednak aby warchitekturze FPGAbyły wbudowaneelementy DDR, którepozwalają nawysłanie/odebranie wciągu jednego taktusystemoweg zegara kilkubitów (wraz ze zboczamiopadającymi jak inarastającymi.)
26 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Częstotliwość pracy układu FPGAJakość zegara - jitterWytwarzanie zegarów - Spartan3Literatura
Częstotliwość pracy układu FPGA
Częstotliwość pracy
Częstotliwośc pracy danego układu FPGA jestograniczona poprzez:
technologię w jakiej dany układ został wykonany(długość bramki tranzystora - nm),
jakość kodu napisanego przez programistę,
użyte elementy architektoniczne,
jakość użytego zegara,
parametry kompilacji (można położyć nacisk naczęstotliwość pracy lub ilość zużytych zasobów).
27 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Częstotliwość pracy układu FPGAJakość zegara - jitterWytwarzanie zegarów - Spartan3Literatura
Jakość zegara - jitter
zmiana f po
dłuższym czasiezmiana fazy od jednego cyklu
zegarowego do drugiego
przebieg idealny
zmiana f w funkcji
temperatury czy zasilania
Jitter
Jitter - jest to odchylenie w czasie odidealnych wartośći przebiegu okresowego.Można rozróżnić deterministyczny ilosowy. Istnieje dość duża ilośćparametrów opisująca zachownanie sięzegara ze względu na jago fazę,częstotliwość w krótkich i długichokresach. Jitter może być wprowadzanyprzez urządzenia, przez które przechodzizegar (przykładowo dystrybucja zegara).Istnieją układy pozwalające nazmniejszenie jittera (ang. jitter cleaner) -co szczególnie przydatne jest dlawysokich częstotliwości pracy.
28 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Częstotliwość pracy układu FPGAJakość zegara - jitterWytwarzanie zegarów - Spartan3Literatura
Wytwarzanie zegarów - DCM Spartan
Block RAMColumn
DCM_X1Y1
DCM_X1Y0DCM_X0Y0
DCM_X0Y1Global buffer multiplexers
EmbeddedMultiplierColumn
Global buffer multiplexers
XC3S50 only
x462_01_061803
DS099-2_07_040103
PSINCDECPSENPSCLK
CLKIN
CLKFB
RSTSTATUS [7:0]
LOCKED8
CLKFX180
CLKFX
CLK0
PSDONE
ClockDistribution
DelayCLK90CLK180CLK270CLK2XCLK2X180CLKDV
StatusLogic
DFSDLL
PhaseShifter
DelayTaps
OutputStage
InputStage
DCM
DCM - Digital Clock Manager -Xilinx
W układach FPGA wbudowanesą dedykowane układy służącesyntezie zegara. Po lewej stronieprzykład układu dla Spartan3.
29 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Częstotliwość pracy układu FPGAJakość zegara - jitterWytwarzanie zegarów - Spartan3Literatura
Literatura
Literatura:„Student’s Guide to VHDL” P. Ashenden“Designer’s Guide to VHDL” P. Ashenden“Język VHDL” K. Skahillhttp://www.gstitt.ece.ufl.edu/vhdl/refs/ (książka open source)Konsultacje - czwartki 13.00 pokój C-2-03, proszę się umówić wcześniej przeze-mail.
30 / 31
Plan wykładuVHDL krok po kroku, podstawy część II
Obliczenia w układach FPGAArchitektura układów FPGA
Zegar a układy FPGAKoniec
Dziękuję
31 / 31