Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Reprogramowalne układy FPGA, 1
dr M.Pałka
01.03.2013
1 / 30
c©dr Marek Pałka, Uniwersytet Jagielloński, wydział FAIS, 2013
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Plan wykładu I
1 Plan wykładu
2 WstępCzym są układy FPGAUkłady FPGABudowa układów FPGAPodstawowy budulec elektroniki cyfrowej - tranzystor CMOS
3 Bramki logiczneBudowaSymbole i działanie
4 PrzerzutnikiTypy przerzutnikówWykorzystanie przerzutników do budowy liczników
5 FIFO
6 Multiplekser2 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Plan wykładu II
7 LUT
8 Maszyny stanów
9 Przykład architektury FPGASpartan 3A i jego budowaOrganizazja bloków logicznych w układzie Spartan 3ASpartan 3A, blok logicznySpartan 3A, połączenia między blokami logicznymi
10 Języki programowania dla Układów FPGA
11 Wprowadzenie do języka VHDLKrótka historia języka VHDLBibliotekiEntityArchitectureOpis jednostki
3 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Plan wykładu III
Komponenty
12 bibliografia
13 Koniec
4 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Czym są układy FPGAUkłady FPGABudowa układów FPGAPodstawowy budulec elektroniki cyfrowej - tranzystor CMOS
Podstawowy opis układu FPGA
Układy FPGA zawierają w sobie zbiór elementów należących do grupy elektronikicyfrowej (bramki, przerzutniki pamięci) i programowalnych połączeń między nimiumożliwiające budowanie zaawansowanych struktur logicznych.Ze wględu na swoją specyfikę układy te mają następujące zalety:
możliwość wielokrotnego przeprogramowania układu,
szybszy czas dostarczenia finalnego produktu,
niższe koszty związane z kosztami rozwoju samego produktu:
mniejsze nakłady na R&D,w porównaniu z rozwojem układów ASIC,koniecznoś’c ciąłej zmiany wymaganej na rynku faworyzuje układy FPGA.
Podobną rodziną układów są układy CPLD. Posiadają one dużo mniej zasobówlogicznych i ma inna wewnętrzną architekturę. Ich podstawową zaletą jestnieulotność oprogramowania znajdującego się w tym układzie (po wyłączeniuzasilania). Fakt ten może zostać wykorzystwany do załadowania domyślnychustwień na płycie po włączeniu urządzenia.
5 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Czym są układy FPGAUkłady FPGABudowa układów FPGAPodstawowy budulec elektroniki cyfrowej - tranzystor CMOS
Układy FPGA
Rysunek: Virtex 7 - 2 miliony bloków logicznych.
Firmy produkujące układy FPGA:
Altera
Lattice
Xilinx...
Każda z firm produkuje rózne serie układów FPGA...Z roku na rok następuje rozrost rynku FPGA (2010 około 2 miliardów dolarów, w2011 wzrost o 40% )
6 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Czym są układy FPGAUkłady FPGABudowa układów FPGAPodstawowy budulec elektroniki cyfrowej - tranzystor CMOS
Układy FPGA (ang. Field Programable Gate Array) zbudowane są z takichelementów jak:
bramki logiczne,
przerzutniki,
multipleksery,
pamięci RAM,
FIFO,
elementy LUT,
sumatory,
inne :
wbudowane mikroprocesory - Power PC,interfejs Ethernet,PCI Express,interfejs do transmisji giga-bitowej,bloki DSP,bloki do obsługi pamięci DDR ...
7 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Czym są układy FPGAUkłady FPGABudowa układów FPGAPodstawowy budulec elektroniki cyfrowej - tranzystor CMOS
CMOS - ang. Complementary Metal Oxide Semiconductor
Rysunek: Bramka P i NMOS - wykorzystywane w elektronicecyfrowej.
Tranzystory typuP/NMOS przewodząprąd elektryczny (małyopór elektryczny) wprzypadku gdyprzyłożone jestniskie/wysokie napięcie.
8 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
BudowaSymbole i działanie
Budowa bramek logicznych
Rysunek: Bramka NOT.
Rysunek: Bramka NAND.
9 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
BudowaSymbole i działanie
Tabela odpowiedzi bramek logicznych
NOT
AND OR XOR
NAND NOR XNOR
Rysunek: Symbole bramek logicznych.
p q p AND q p XOR q p OR q p NOR q p XNOR q NOT q p NAND q0 0 0 0 0 1 1 1 10 1 0 1 1 0 0 0 11 0 0 1 1 0 0 1 11 1 1 0 1 0 1 0 0
Tablica: Tabela odpowiedzi różnych typów bramek logicznych
10 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Typy przerzutnikówWykorzystanie przerzutników do budowy liczników
Typy przerzutników
Przerzutniki mogą być budowane zbramek logicznych.Można wymienić następujące typyprzerzutników:
RS
T
D
JK (JK-MS)
Stan na wyjściu przerzutnika zmienia sięgdy występuje stan aktywny na wejściuzegarowym (niski, wysoki, zboczeopadające, zbocze narastające). Wukładach FPGA stanem aktywnym jestzbocze narastające. W układach FPGAwykorzystywany jest przerzutnik typu D.
Rysunek: Symbol przerzutnika typu D.
D Q(t) Q(t+1)0 0 00 1 01 0 11 1 1
Tablica: Tabela odpowiedzi przerzutnikatypu D
11 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Typy przerzutnikówWykorzystanie przerzutników do budowy liczników
Budowa licznika asynchronicznego
Przerzutniki można wykorzystać do budowy liczników asynchronicznych isynchroniczncyh.
D Q
QZegar (clk)
D Q
Q
D Q
Q
D Q
Q
LSB MSBQ0 Q1 Q2 Q3
R R R R
Reset (R)
R
Q0
Q1
Q2
Q3
CLK Tphl
Tplh
Rysunek: Przykład licznika asynchronicznego opartego o przerzutniki typu D wraz zprzebiegami czasowymi wyjść. Tphl/plh ang. high/low to low/high propagation delay
12 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Typy przerzutnikówWykorzystanie przerzutników do budowy liczników
Budowa licznika synchronicznego
D Q
QR
D Q
QR
D Q
QR
E
CLK
Q1
Q2
Q3
R
CLK
Rysunek: Przykład licznika synchronicznego opartego o przerzutniki typu D wraz zprzebiegami czasowymi wyjść.
13 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
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
Rysunek: Schemat działania FIFO (ang. First In First Out).
FIFO w szczególności jest wykorzystwyane w sytuacji kiedy mamy dwie strefy zróżnymi zegarami (synchronizacja pomiędzy różnymi domenami zegarowymi).
14 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Multiplekser i demulitplekser
...adres
...
wejście
wyjście
...adres
...
wejście
wyjście
Rysunek: Za pomocą wejścia adresowego można dokonaćwyboru, które z wejść/wyjść powinno pojawić sie/zostaćużyte na wyjściu.
adres
D1
D1
Wyj.
Rysunek: Budowamultipleksera dwubitowego.
15 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Look Up Table
1
0
1
0
adres wyjście
LUT
komorkipamięciSRAM
Rysunek: Za pomocą wejścia adresowego można dokonać wyboru, która z komórekSRAM pojawi sie na wyjściu.
16 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Maszyny stanów
Maszyny stanów mogą być budowane z liczników, elementów LUT. Za pomocąmaszyn stanów można budować bardziej zaawansowane struktury logiczne.
A
B
C
D
E
F
Rysunek: Przykład maszyny stanów (ang. Final State Machine).
17 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Spartan 3A i jego budowaOrganizazja bloków logicznych w układzie Spartan 3ASpartan 3A, blok logicznySpartan 3A, połączenia między blokami logicznymi
Spartan 3A i jego budowa
Rysunek: Architektura układu Spartan 3A.
18 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Spartan 3A i jego budowaOrganizazja bloków logicznych w układzie Spartan 3ASpartan 3A, blok logicznySpartan 3A, połączenia między blokami logicznymi
Spartan 3A i umieszczenie bloków logicznych
Rysunek: Organizacja bloków logiczncyh w układzie Spartan 3A firmy Xilinx.
19 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Spartan 3A i jego budowaOrganizazja bloków logicznych w układzie Spartan 3ASpartan 3A, blok logicznySpartan 3A, połączenia między blokami logicznymi
Blok logiczny
20 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Spartan 3A i jego budowaOrganizazja bloków logicznych w układzie Spartan 3ASpartan 3A, blok logicznySpartan 3A, połączenia między blokami logicznymi
Połączenia między blokami logicznymi
21 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
VHDL
VHDL - ang.Very High Speed Integrated Circuits Hardware DescriptionLanguage,Verilog
entity
componentA
componentB
componentC
componentD
FPGA
Urządzenia peryferyjne
Płyta elektroniczna
Połączenieświatłowodowe
(m.in. Gbit Etehrnet)
PCI Express
Urządzeniaaudio-video
dedykowaneurządzenia
Rysunek: Ogóny zarys jak wyglądają jednostki projektowe w jęyku VHDL w połączeniuz urządzeniami peryferyjnymi.
22 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Krótka historia języka VHDLBibliotekiEntityArchitectureOpis jednostkiKomponenty
Utworzony w ramach projektu finansowanego przez Departament Orony USA doopisu dokumentacji zachowania ukladów ASIC.Kilka razy standard języka zostal zrewidowany:
1987 podstawowa wersja języka zawierajkaca szeroki wachlarz typów danych(integral, bit character),
IEEE standard 1164 wprowadzenie nowych typów std logic...,
1993 IEEE Std 1076-1993 bardziej zwarta formula języka (następne wersjejęzyka 1076.1/2/3),
2000, 2003 - dodanie typów chronionych i usunięcie pewnych obostrzeńdotycząych mapowania portów.
23 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Krótka historia języka VHDLBibliotekiEntityArchitectureOpis jednostkiKomponenty
Biblioteki
biblioteki
top entity
Architecture
Deklaracje:sygnałów,komponentów ...
begin
Opis strukturypołączeń i logiki
library ieee ;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;
Biblioteki pozwalają na użycie:
typów std_logic...,
funkcje arytmetycznych,
operacji numerycznych (bez znaku) na std_logic_vector,
operacji związanych z czytaniem, pisaniem stringów,
operacji numerycznych na zmiennych typu “bit”, ...
24 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Krótka historia języka VHDLBibliotekiEntityArchitectureOpis jednostkiKomponenty
Jednostka projektowa - entity
biblioteki
top entity
Architecture
Deklaracje:sygnałów,komponentów ...
begin
Opis strukturypołączeń i logiki
library ieee ;use ieee.std_logic_1164.all; ...
entity up_down_counter is
generic ( NUMBER_OF_BITS : positive ); port ( CLK : in std_logic; RESET : in std_logic; COUNT_OUT : out std_logic_vector(NUMBER_OF_BITS-1 downto 0); UP_IN : in std_logic; DOWN_IN : in std_logic );end up_down_counter;
entity – definiuje jakie są połączenia architektury ze “światem zewnętrznym”, w przypadku “top entity” są to połączenia z pinami układu FPGA (wraz z plikami ucf, lpf...)
Argument generic pozwala na elastyczne użycie portów, sygnałów, połączeń...
port - są możliwe następujące typy portu: in – wejście do entity, out – wyjście, inout – typ dwukierunkwoy, buffer – podobne do wyjścia ale może zostać odczytany przez entity (nie rekomendowany)
25 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Krótka historia języka VHDLBibliotekiEntityArchitectureOpis jednostkiKomponenty
Architecture
biblioteki
top entity
Architecture
Deklaracje:sygnałów,komponentów ...
begin
Opis strukturypołączeń i logiki
library ieee ;use ieee.std_logic_1164.all; ...
entity up_down_counter is ...
architecture up_down_counter of up_down_counter is
signal counter: std_logic_vector (NUMBER_OF_BITS-1 downto 0);
Std_logic_vector "reprezentuje" magistralę, zaś std_logic pojedyńcze połączenie
więcej na temat typów na następnych wykładach...
26 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Krótka historia języka VHDLBibliotekiEntityArchitectureOpis jednostkiKomponenty
Opis zachowania jednostki projektowej
biblioteki
top entity
Architecture
Deklaracje:sygnałów,komponentów ...
begin
Opis strukturypołączeń i logiki
library ieee ;use ieee.std_logic_1164.all; ...
entity up_down_counter is ...
architecture up_down_counter of up_down_counter is ...
COUNTER_PROC : process (CLK) begin if rising_edge(clk) then if RESET = '1' then counter <= (others => '0'); elsif UP_IN = '1' and DOWN_IN = '0' then counter <= counter + 1; elsif UP_IN = '0' and DOWN_IN = '1' then counter <= counter - 1; else counter <= counter; end if; end if; end process COUNTER_PROC; COUNT_OUT <= counter;end up_down_counter;
27 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Krótka historia języka VHDLBibliotekiEntityArchitectureOpis jednostkiKomponenty
Tworzenie komponentów
biblioteki
top entity
Architecture
Deklaracje:sygnałów,komponentów ...
begin
logika
component a
component b
Możemy ponownie używać napisane jużjednostki projektowe (entity) jako komponenty (component)
architecture ...component up_down_counter generic ( NUMBER_OF_BITS : positive); port ( CLK : in std_logic; RESET : in std_logic; COUNT_OUT : out std_logic_vector(NUMBER_OF_BITS-1 downto 0); UP_IN : in std_logic; DOWN_IN : in std_logic); end component;...begin...COUNTER_A: up_down_counter generic map ( NUMBER_OF_BITS => 5) port map ( CLK => CLK, RESET => RESET, COUNT_OUT => counter_out, UP_IN => count_up, DOWN_IN => count_down);...
28 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Bibliografia
Xilinx Spartan 3A data sheet - UG331,
wikipedia.org
www.xilinx.com
29 / 30
Plan wykładuWstęp
Bramki logicznePrzerzutniki
FIFOMultiplekser
LUTMaszyny stanów
Przykład architektury FPGAJęzyki programowania dla Układów FPGA
Wprowadzenie do języka VHDLbibliografia
Koniec
Dziękuję
30 / 30
Top Related