Programovatelné logické obvody
a jazyk VHDL
Doc. Ing. Lukáš Fujcik, Ph.D.
Programovatelné logické obvody
Návrh digitálních integrovaných obvodů
Návrh digitálních integrovaných obvodů
Návrh digitálních
g
integrovaných
g
ý obvodů –
abstrakce návrhu
Způsoby realizace číslicových (sub)systémů
Číslicové IO základních řad (74..,
(74 4000 atd
atd.))
Mikrokontroléry a mikropočítače
Programovatelné obvody – PLD a FPGA
pro menší série digitálních obvodů
levnější než ASIC
návrh digitálního obvodu je prováděn využitím HDL jazyků
Obvody
y ASIC ((Aplication
p
Specified
p
Integrated
g
Circuit)
velké série digitálních obvodů
pro smíšené analogově-digitální obvody
vysoké nároky na spolehlivost
návrh digitálního obvodu je částečně zautomatizován
využitím HDL jazyků
Programovatelné logické obvody
Proč použít obvod FPGA a CPLD?
Na dostatečně veliké FPGA lze soustředit více funkcí =>
není potřeba tolik pouzder a menší místo na DPS.
DPS
Pro zpracování velkých datových toků, výpočetně náročné
algoritmy
g
y ((audio,, video apod.).
p )
Implementace
algoritmů,
které
nejsou
ještě
normalizovány.
y Pozdějij lze vyrobit
y
ASIC. Zde se vyplatí
y
i
výroba větších sérií ( výhoda na trhu).
Všude, kde je potřeba speciální HW a kvůli velikosti série se
nevyplatí ASIC.
Programovatelné logické obvody
Jak vybírat obvod FPGA/CPLD?
1.
Charakter operací
p
prováděných
p
ý obvodem FPGA/CPLD
FPGA/CPLD má být určeno pro řízení komunikace?
FPGA/CPLD má provádět velké množství výpočtu?
Výrobci nabízejí různé typy obvodů podle charakteru použití
2.
Velikost a rychlost budoucího obvodu
Počet
P
č t ekvivalentních
k i l t í h hradel
h d l (u
( FPGA je
j potřeba
tř b být opatrný)
t ý)
Speed grade
3
3.
4.
Počet vstupních a výstupních signálů (I/O signals)
Spolehlivost finální aplikace
větší teplotní rozsah,
rozsah radiační odolnost,
odolnost obvody pro automobilový
průmysl
5.
6.
Spotřeba energie – nízkopříkonové aplikace
Zabezpečení intelektuálního vlastnictví
Programovatelné logické obvody
Historie programovatelných obvodů
První programovatelné paměti typu PROM (firma Radiation
Radiation, 1970)
Zákaznicky programovatelných verzí EPROM (Intel, 1971) a
EEPROM (Intel, 1978)
Permanentní paměti jako takové ale neumožňovaly nikdy příliš
úspornou realizaci logické funkce.
Vznik obvodů FPLA (Signetics/Philips,
(Signetics/Philips 1970)
Vznikla koncepce obvodů PAL (Monolithic Memories, 1978) s
programovatelnou maticí AND a pevnou maticí OR
Vznikly obvody CPLD (Altera, 1988).
Obvody FPGA ( Xilinx, 1984) – liší se od stávajících
Nové architektury postavené na principu kombinace procesoru a
programovatelného hradlového pole (například MathStar FPOA)
Programovatelné logické obvody
Základní logická hradla
Jazyk VHDL
VHDL představuje akronym – VHSIC Hardware Description
Language, VHSIC – Very High Speed Inegrated Circuits
Původně určen pro modelovaní a simulaci rozsáhlých systémů
Otevřený standard (Open Standard) – k jeho použití není
potřeba licence, jak je to u jiných jazyků HDL (např. ABEL)
Možnost pracovat na návrhu, aniž je předtím zvolen cílový obvod
(D i i d
(Device-independent
d t design)
d i )
Přenositelnost (Portability)
Jazyk
y VHDL byl
y přijat
p j jjako standard IEEE číslo 1076 v roce 1987
jako VHDL-87
Upravená verze standardu byla přijata v roce 1993 jako VHDL93
Nový standard z 90. let zahrnuje možnost popisu analogových
prvků jako VHDL-AMS (VHDL – Analog and Mixed Signals)
HDL jazyky - VHDL,
VHDL Verilog
Verilog, Verilog A,
A ABEL atd.
atd
Programovatelné logické obvody
Rozdělení PLD obvodů
CPLD
Xilinx, Lattice, Altera atd.
Obvody řady 9500XL firmy Xilinx
Ob d řady
Obvody
ř d C
CoolRunner
lR
fifirmy Xili
Xilinx
Obvody pLSI a ispLSI firmy Lattice
Pro rozsáhlejší
j aplikace
p
než klasické obvody
y PLD ((GAL))
FPGA
Xilinx, Lattice, Altera atd.
Ob d Spartan
Obvody
S t I,
I II,
II III fi
firmy Xili
Xilinx
Obvody Virtex I, II firmy Xilinx
Pro rozsáhlejší
j aplikace
Programovatelné logické obvody
Typy struktur programovatelných obvodů
PLD
výchozí struktura pro obvody PLD: PROM - stupeň AND je
zapojen pevně, stupeň OR je programovatelný
obvody PLD se strukturou:
PAL - stupeň AND je programovatelný
programovatelný, stupeň OR je
zapojen pevně
PLA - oba stupně jsou programovatelné
Obsahuje dvě programovatelné pole
Je flexibilnější než struktura PAL
Možnost sdílení společných termů více makrobuňkami
Obvody CPLD – např. řada CoolRunner firmy Xilinx
obvody FPGA (Field-programmable logic array)
Programovatelné logické obvody
Struktura PAL
Programovatelné logické obvody
Struktura PLA
Programovatelné logické obvody
(SM)
(IOB)
CPLD XC9500XL - blokové schéma
Programovatelné logické obvody
CPLD XC9500XL - funkční blok
Programovatelné logické obvody
CPLD XC9500XL - makrobuňka
Programovatelné logické obvody
FPGA
FPGA
Programovatelné obvody založené na bázi SRAM
Porovnání s CPLD: více hradel
hradel, rychlejší
rychlejší, rekonfigurovatelné
rekonfigurovatelné. Obsah
se ztratí po odpojení napájení.
Porovnání s ASIC: méně hradel, pomalejší, ale levnější v malých
sériích
Programovatelné logické obvody
FPGA Virtex II firmy Xilinx
8 milionů hradel
Základní prvek je CLB (konfigurovatelná logická
buňka)
3 Mb dual-port RAM
Možnost implementace interní 3-stavové sběrnice
Dedikované 18x18 bitové násobičky
DDR IO interface
DCM - management hodinových signálů
16 rozvodů hodinových signálů
Programovatelné logické obvody
Návrhové systémy
Xilinx, Altera, Mentor Graphics atd.
W bP k – volně
WebPack
l ě stažitelný
t žit l ý
Modelování, simulace, syntéza
I t li
Inteligence,
vyzrálost
ál t návrhových
á h ý h systémů
té ů –
optimalizace
S nté a – jeden z nejdůležitějších procesů
Syntéza
procesů, nadbytečná
nadb tečná
logika
Programovatelné logické obvody
Základní struktura modelu v jazyku VHDL
Konstrukce (model) v jazyku VHDL má 2 základní
části:
Deklarace
e a ace entity
e t ty (e
(entity
y dec
declaration)
aa o )
Tělo architektury (popis)
Programovatelné logické obvody
Deklarace entity
Popisuje vstupy a výstupy konstrukce
Brány (Ports) – klíčové slovo PORT, jsou to signály
Deklarace brány se skládá – jméno brány
brány, módu
(mode) a typ dat
Módy – IN,
IN OUT,
OUT BUFFER,
BUFFER INOUT
BUFFER – může činit problémy při kompilaci
BUFFER můžeme nahradit pomocí módu OUT a pak
musíme definovat vnitřní signál (dostupný uvnitř
obvodu)) v těle architekturyy
Programovatelné logické obvody
Tělo architektury
Architektura popisuje funkci konstrukce
Různé popisy architektury:
Strukturální – spočívá ve vkládání komponent (Component),
nejčastěji se používá v hierarchickém uspořádání konstrukce
jako popis propojení dílčích bloků nižší úrovně
Tok dat (Data flow) – používá souběžné příkazy
Behaviorální – používá zejména sekvenční příkazy
K jedné deklaraci entity může být přiřazeno i více architektur
Více architektur se akceptuje pouze v simulaci
V syntéze bývá uvažována pouze 1 architektura (první)
Před slovem BEGIN může být deklarativní část (Declarative
part)
Za slovem BEGIN následuje příkazová část (Statement part)
Programovatelné logické obvody
Procesy a sekvenční příkazy
Řádek obsahuje slovo PROCESS
Návěští je nepovinné
Seznam citlivosti (sensitivity list) – seznam působících signálů
Algoritmický charakter – podoba počítačovým programovacím
jazykům
Behaviorální styl
Sekvenčí příkazy se používají v procesech
procesech, funkcích a
procedurách
Samotné procesy jsou souběžné příkazy
Pořadí ovlivňuje výsledek procesu
Nezaměňovat s modelováním sekvenčních obvodů
J možné
Je
ž é navrhovat
h
t jjak
k kkombinační,
bi č í tak
t k i sekvenční
k
č í subsystémy
b
té
Programovatelné logické obvody
Syntéza, implementace a konfigurace
Typickými procesy pro návrhový systém Xilinx ISE je syntéza,
implementace, simulace a vytvoření programového souboru
Syntéza – vytvoření „netlistu“ tj. zapojení obvodových prvků, tedy
vlastně vytvoření schématu s obvodovými prvky. Netlist se zapisuje
nejčastěji ve formátu EDIF
EDIF.
Implementace – zahrnuje několik kroků, který vyústí popisem, který je
určen pro „vypálení“ nebo pro vytvoření tzv. bitstreamu pro FPGA.
Důl žíté jjsou kkroky
Důležíté
k Fitti
Fitting (PLD) a Mapping
M
i a Place-and-Route
Pl
dR t
(FPGA)
Mapping
pp g – p
přiřazení obvod. p
prvků se syntézy
y
y konkrétním prvkům
p
obsažených v cílovém obvodu (analogie výběr součástek pro
DPS)
Placement (rozmístění) a Routing (propojení)
Výsledkem implementace je simulační model – je doplněn o
časové parametry propojení a prvků
Konfigurace – programování konkrétního cílového obvodu
Programovatelné logické obvody
Ověření funkce a zjištění časových parametrů
Funkční simulace
Pracuje na úrovni RTL (Register Transfer Level – behaviorální úroveň)
Zjištění zda obvod správně funguje bez ohledu na časové parametry
Není většinou závislá na cílovém obvodu
Funkční simulace se provádí před dalším zpracováním návrhu
Časo á simulace
Časová
sim lace
Využívá model generovaný systémem při implementaci
Model může zahrnovat konkrétní parametry cílového obvodu a je
respektováno výsledné propojení jeho strukturálních prvků
Časovou simulací získáme poměrně přesné a podrobné údaje o časových
p
poměrech
Bývá časově náročnější než funkční simulace
Simulátory, které mají vlastnosti provádět časovou simulaci, jsou velmi
složité a drahé programové celky
Programovatelné logické obvody
Příklady
y na kombinační logiku
g
Programovatelné logické obvody
Jednoduchý příklad - detektor sudé parity
Jednoduchý příklad - detektor sudé parity
Detektor sudé parity – využití hradla XOR
Multiplexer
ENTITY mux IS
PORT(a,b,c,d: IN std_logic_vector(3 DOWNTO 0);
s: IN std_logic_vector (1 downto 0);
x: OUT std_logic_vector(3
std logic vector(3 DOWNTO 0)); -výstup
END mux;
ARCHITECTURE ArchMux OF mux IS
BEGIN
WITH s SELECT
x <= a when "00",
b when "01",
c when "10",
d when others;
END ArchMux;
Programovatelné logické obvody
Praktické využití dekodéru 1z4
Řízení komunikace čtyř zařízení s nadřazeným systémem
dev0
dev1
nadřazený systém
(např. mikrokontrolér)
dev2
dev3
x0 x1 x2 x3
dekodér
1z4
s0
s1
Souběžné příkazy v jazyce VHDL – when-else
when else
Příklad: dekodér 1z4, funkce je dána pravdivostní tabulkou
Příklad: Nádrž v chemické továrně
Zadání:
Z
dá í Nádrž
Nád ž v chemické
h i ké továrně
t á ě je
j potřeba
tř b vybavit
b it
ochranným systémem. V nádrží je nutné sledovat teplotu, tlak
a úroveň hladiny kyseliny.
kyseliny Ochranný systém je zobrazen na
obrázku. Obsahuje tři senzory a tři indikační diody.
Programovatelné logické obvody
Příklad: Nádrž v chemické továrně
Vlastnosti:
1) Dioda D1 indikuje stav, kdy je v nádrži vše v pořádku a může dojít
k překroční hodnot pouze jedné sledované veličiny.
2) Dioda D2 indikuje stav,
stav kdy dojde k překročení pouze dvou hodnot
sledovaných veličin.
3) Dioda D3 indikuje stav, pokud všechny tři senzory detekují, že došlo k
překročení hodnot sledovaných veličin.
veličin
Možnosti realizace:
1)
2)
3)
Pravdivostní
P
di
t í tabulka
t b lk + diskrétní
di k ét í dig.
di
součástky
čá tk – minimalizace,
i i li
realizace
li
pomocí diskrétních digitálních součástek řady 74.. nebo 40..
Pravdivostní tabulka + obvod CPLD nebo FPGA – není potřeba minimalizace,
realizace v návrhovém systému ISE Webpack v jazyce VHDL do obvodu CPLD
nebo FPGA (návrhový systém má v sobě zabudované minimalizační a
optimalizační algoritmy)
Behaviorální popis + obvod CPLD nebo FPGA – behaviorální popis systému v
jazyce VHDL, není potřeba pravdivostní tabulka
Programovatelné logické obvody
Příklad: Nádrž v chemické továrně
Řešení 1 – p
pravdivostní tabulka + diskrétní dig.
g součástky:
y
A
B
C
D1
D2
D3
0
0
0
1
0
0
0
0
1
1
0
0
0
1
0
1
0
0
0
1
1
0
1
0
1
0
0
1
0
0
1
0
1
0
1
0
1
1
0
0
1
0
1
1
1
0
0
1
Mi i li
Minimalizace
- DeMorganovy
D M
zákony
ák
D1 = A ⋅ C + B ⋅ C + A ⋅ B
C
B
A
0
0
1
0
0
1
0
1
D2 = A ⋅ B ⋅ C + A ⋅ B ⋅ C + A ⋅ B ⋅ C
D3 = A ⋅ B ⋅ C
Programovatelné logické obvody
Příklad: Nádrž v chemické továrně
Řešení 2 – pravdivostní tabulka + obvody CPLD nebo FPGA:
1) Možnost realizovat minimalizovanou funkci
2) Možnost realizovat přímo z pravdivostní tabulky (minimalizační a
optimalizační
p
algoritmy
g
y zabudované v ISE WebPack))
entity digi_top is
Port ( a,b,c
: in STD_LOGIC;
d1 d2 d3 : out STD_LOGIC);
d1,d2,d3
)
end digi_top;
architecture
hit t
B
Behavioral
h i
l of
f di
digi_top
i t
i
is
signal x1,x2,x3 : std_logic; -- vnitrni signaly
begin
-- detekce prekroceni maximalne jedne sledovane veliciny
-- (neminimalizovana funkce)
d1 <= (not a and not b and not c) or
(not a and not b and c) or
(not a and b and not c) or
(a Programovatelné
and not blogické
andobvody
not c);
Příklad: Nádrž v chemické továrně
-- detekce prekroceni dvou sledovanych velicin
x1 <= not(a) and b and c;
x2 <= a and b and not(c);
x3 <= a and not(b) and c;
d2 <= x1 or x2 or x3;
-- detekce prekroceni vsech tri sledovanych velicin
d3 <= a and b and c;
end Behavioral;
not a
b
c
&
a
b
not c
&
a
not b
Programovatelné logické obvody
c
&
x1
x2
x3
1
d1
Příklad: Nádrž v chemické továrně
Řešení 2 – pravdivostní tabulka + obvody CPLD nebo FPGA:
1) Možnost realizovat minimalizovanou funkci
2) Možnost realizovat přímo z pravdivostní tabulky (minimalizační a
optimalizační
p
algoritmy
g
y zabudované v ISE WebPack))
entity digi_top is
Port ( a,b,c
: in STD_LOGIC;
d1 d2 d3 : out STD_LOGIC);
d1,d2,d3
)
end digi_top;
architecture
hit t
B
Behavioral
h i
l of
f di
digi_top
i t
i
is
signal x1,x2,x3 : std_logic; -- vnitrni signaly
begin
-- detekce prekroceni maximalne jedne sledovane veliciny
-- (neminimalizovana funkce)
d1 <= (not a and not b and not c) or
(not a and not b and c) or
(not a and b and not c) or
(a Programovatelné
and not blogické
andobvody
not c);
Příklad: Nádrž v chemické továrně
Řešení 2 – pravdivostní tabulka + obvody CPLD nebo FPGA:
Simulace
Programovatelné logické obvody
Sekvenční logické obvody
Synchronní kl. obvod D – aktivní na náběžnou hranu hod. signálu clk
Bývá součástí technologické knihovny
D
D
Q
Q
clk
clk
Q
nebo
D
D
clk
D
Q
0
↑
↑
x
0
1
Q n-1
0
1
častější
j
clk
clk
Q
Q
Sekvenční logické obvody
Synchronní klopný obvod D – funkce při D=0 a clk ↑
Sekvenční logické obvody
Synchronní klopný obvod D – funkce při D=1 a clk ↑
Sekvenční logické obvody
Analýza klopného obvodu D - metastabilita
Musí být dodržena doba předstihu(tsetup) a přesahu(thold)
V případě porušení těchto časů dochází k přechodu do metastabilního stavu.
N kkoncii metastabilního
Na
bil íh stavu klopný
kl
ý obvod
b d přejde
ř jd ddo stabilního
bil íh stavu “0“
nebo “1“.
Ukázka – KO typu
yp D řízený
ý náběžnou hranou hod. signálu
g
clk
tpLH
tpHL
thold
tsetup
Sekvenční logické obvody
Analýza klopného obvodu D - metastabilita
Metastabilní stav se dá představit jako balancování na vrcholku kopce.
Obvod teoreticky může setrvávat v metastabilním stavu do nekonečna,
ale reálně to není možné
možné.
Stavové automaty
Představují nejobecnější číslicové systémy
Zahrnují jak kombinační, tak i sekvenční bloky
Popis složitějších stavových automatů zvyšuje riziko výskytu chyb
Některé části automatu, jako je stavový registr, často slouží jen k
vnitřní funkci automatu
Čítače a posuvný registr jsou příklady stavových automatů.
Stavový automat obsahuje paměť, která udržuje předcházející stav k
určení následujícího stavu
Mealyho stavový automat
Moorův stavový
ý automat
Programovatelné logické obvody
Stavové automaty
Programovatelné logické obvody
....
....
...
Blokové schéma Moorova stavového automatu
Výstupy jsou přímo vyvedeny z paměťové části a jsou synchronní
Výstupní dekodér není povinný
Stavové automaty
Blokové schéma Moorova stavového automatu
Výstupy jsou přímo vyvedeny z paměťové části a jsou synchronní
Výstupní dekodér není povinný
N
Komb.
K
b logika
l ik
(následující
stav)
buzení
Paměťová část
současný stav
F
Výstupní
Vý
t í
logika
G
clk
Programovatelné logické obvody
výstupy
Stavové automaty – enkódování
Proces, který rozhoduje kolik paměťových prvků bude využito v paměťové
části.
části
Binární enkódování je nejpoužívanější.
počet stavů
počet KO typu D
kód
í
enkódovací
kombinace
1
1
0a1
2 až 4
2
00,01,10 a 11
5 až 8
3
000,001,010,011,
100,101,110,111
9 až 16
4
0000 … 1111
17 až 32
5
00000 … 11111
33 až 64
6
000000 … 111111
Programovatelné logické obvody
Stavové automaty – symbolické značení
podmínka 5 || podmínka 6
přechod proběhne
pouze při náběžné
hraně hod. signálu clk
st0
t0
00
podmínka 7
st1
t1
01
výstup1=01
výstup2=0
podmínka 1
výstup1=10
výstup2=0
podmínka 2
st2
10
přechod proběhne při náběžné
hraně hod. signálu clk a
zároveň musí být splněna
podmínka 5 nebo podmínka 6
přechod proběhne při
náběžné hraně hod.
signálu clk a zároveň
musí být splněna
podmínka 2
výstup1=10
výstup2=1
podmínka 3 && podmínka 4
Programovatelné logické obvody
přechod proběhne při náběžné
hraně hod.
hod signálu clk a
zároveň musí být splněna
podmínka 3 a podmínka 4
Příklad: synchronní 3
3-bitový
bitový čítač s KO D
Vlastnosti:
1) Čítač inkrementuje svůj výstup o 1
2) Změna výstupu nastává vždy při změně náběžné hrany hodinového
signálu
3-bitový
synchronní
y
čítač
3
Q
clk
Možnosti realizace:
1)
2)
3)
Diskrétní dig. součástky – minimalizace, realizace pomocí diskrétních
digitálních součástek řady 74.. nebo 40..
Ob d CPLD nebo
Obvod
b FPGA – neníí potřeba
tř b minimalizace,
i i li
realizace
li
v návrhovém
á h é
systému ISE Webpack v jazyce VHDL do obvodu CPLD nebo FPGA (návrhový
systém má v sobě zabudované minimalizační a optimalizační algoritmy)
Behaviorální popis + obvod CPLD nebo FPGA – behaviorální popis systému v
jazyce VHDL, není potřeba tabulka stavů (převod v ISE WebPack)
Programovatelné logické obvody
Příklad: synchronní 3-bitový čítač s KO D
Řešení 1 – diskrétní dig.
g součástky:
y
Komb. logika
(následující
stav)
t )
F
clk
buzení
současný stav
P ěť á čá
Paměťová
částt
3
výstupy
ýst p
Příklad: synchronní 3-bitový čítač s KO D
Řešení 1 – diskrétní dig.
g součástky:
y
Programovatelné logické obvody
Příklad: synchronní 3-bitový čítač s KO D
Řešení 1 – diskrétní dig.
g součástky:
y
Programovatelné logické obvody
Příklad: synchronní 3-bitový čítač s KO D
Řešení 1 – diskrétní dig.
g součástky:
y
1) 3-bitový synchronní čítač – stavový automat, u kterého jsou
výstupy přímo vyvedeny ze sekvenční části (KO D)
2) Jedná
J d á se o stavový
t
ý automat
t
t Moorova
M
t
typu
stav
Současný stav
Následující stav
(b
(buzení)
í)
Neminimalizované funkce
D 2 = Q 2 ⋅ Q1 ⋅ Q0 + Q 2 ⋅ Q1 ⋅ Q0 +
+ Q 2 ⋅ Q1⋅ Q0 + Q 2 ⋅ Q1⋅ Q0
Q2
Q1
Q0
D2
D1
D0
s0
0
0
0
0
0
1
s1
0
0
1
0
1
0
s2
0
1
0
0
1
1
s3
0
1
1
1
0
0
s4
1
0
0
1
0
1
s5
1
0
1
1
1
0
s6
1
1
0
1
1
1
s7
1
1
1
0Programovatelné
0
0logické obvody
D1 = Q 2 ⋅ Q1⋅ Q0 + Q 2 ⋅ Q1 ⋅ Q 0 +
+ Q 2 ⋅ Q1 ⋅ Q 0 + Q 2 ⋅ Q1⋅ Q0
D 0 = Q 2 ⋅ Q1 ⋅ Q 0 + Q 2 ⋅ Q1⋅ Q0 +
+ Q 2 ⋅ Q1 ⋅ Q 0 + Q 2 ⋅ Q1⋅ Q0
Minimalizované funkce – domácí
úkol ☺
Příklad: synchronní 3
3-bitový
bitový čítač s KO D
Řešení 2 – obvody CPLD nebo FPGA:
1) Možnost realizovat minimalizované funkce z tabulky stavů
2) Možnost realizovat přímo z tabulky stavů (minimalizační
optimalizační
p
algoritmy
g
y zabudované v ISE WebPack))
a
entity counter is
Port ( clk : in STD_LOGIC;
Q : inout
i
STD_LOGIC_VECTOR (2 d
downto 0))
0));
end counter;
architecture
hit t
B
Behavioral
h i
l of
f counter
t
i
is
signal D : STD_LOGIC_VECTOR (2 downto 0); -- vnitrni
-- signal pro buzeni sekvencni casti
begin
-- kombinacni cast
D(2) <= (not Q(2) and Q(1) and Q(0)) or
(Q(2) and not Q(1) and not Q(0)) or
(Q(2) and not Q(1) and Q(0)) or
(Q(2) andProgramovatelné
Q(1) andlogické
not
Q(0));
obvody
Příklad: synchronní 3-bitový
3 bitový čítač s KO D
D(1) <= (not Q(2) and not
(not Q(2) and Q(1)
(Q(2) and not Q(1)
(Q(2) and Q(1) and
Q(1) and Q(0)) or
and not Q(0)) or
and Q(0)) or
not Q(0));
D(0) <= (not Q(2) and not
(not Q(2) and Q(1)
(Q(2) and not Q(1)
(Q(2) and Q(1) and
Q(1) and not Q(0)) or
and not Q(0)) or
and not Q(0)) or
not Q(0));
-- sekvencni cast
process (clk)
begin
g
if rising_edge(clk) then –- zmena na nabez. hranu
Q <= D;
end if;
end process;
end Behavioral;
Programovatelné logické obvody
Příklad: synchronní 3-bitový
3 bitový čítač s KO D
- Behaviorální popis s využitím inkrementace signálu o 1 – nejúspornější popis, ale vhodný
pro jednoduché popisy . Je vhodnější oddělit sekvenční a kombinační část (2 a více procesů)
entity counter is
Port ( clk : in STD
STD_LOGIC;
LOGIC;
Q : out STD_LOGIC_VECTOR (2 downto 0));
end counter;
architecture Behavioral of counter is
signal q_int : STD_LOGIC_VECTOR (2 downto 0);
Begin
process (clk)
begin
if (clk’event and clk=‘1’) then
q_int <= q_int + 1;
end if;
end process;
Q <= q_int;
end Behavioral;
Programovatelné logické obvody
Příklad: synchronní 3-bitový
3 bitový čítač s KO D – Doporučený styl zápisu !!!
entity counter is
Port ( clk : in STD_LOGIC;
Q : out
t STD
STD_LOGIC_VECTOR
LOGIC VECTOR (2 d
downto
t 0))
0));
end counter;
architecture Behavioral of counter is
signal d_int,q_reg : STD_LOGIC_VECTOR (2 downto 0);
begin
-- oddelena pametova cast
process (clk)
( lk)
komb. logika
begin
d_int(0)
if (clk’event and clk=‘1’) then
q reg
q_
g <= d_int;
end if;
d_int(1)
end process;
paměťová část
D
Q
q_reg(0)
Q(0)
CLK
D
Q
q_reg(1)
Q(1)
Komb. logika
-- oddelena kombinanci cast
process (q_reg)
begin
d_int <= q_reg + 1;
end process;
Q <= q_reg;
Programovatelné logické obvody
end Behavioral;
clk
CLK
d_int(2)
D
CLK
Q
q_reg(2)
Q(2)
Příklad: synchronní 3-bitový
3 bitový čítač s KO D
Řešení 3 – behaviorální p
popis
p + obvody
y CPLD,, FPGA
- Realizace pomocí stavového automatu
Současný stav
Následující stav
(buzení)
Q2
Q1
Q0
D2
D1
D0
s0
0
0
0
0
0
1
s1
0
0
1
0
1
0
s2
0
1
0
0
1
1
s3
0
1
1
1
0
0
s4
1
0
0
1
0
1
s5
1
0
1
1
1
0
s6
1
1
0
1
1
1
s77
1
1
1
0
0
0
stav
Programovatelné logické obvody
Synchronní 3-bitový čítač – řešení podle stavového diagramu
entity counter is
Port ( clk : in STD_LOGIC;
Q : out STD_LOGIC_VECTOR(2 downto 0));
end counter;
architecture Behavioral of counter is
type state_type is (s0,s1,s2,s3,s4,s5,s6,s7); -- definice typu a vsech stavu
signal next_state, present_state : state_type; -- vnitrni signaly typu state
begin
-- pametova cast
process(clk) begin
if rising_edge(clk) then
present_state <= next_state;
end if;
end process;
-- kombinacni cast F
process(present_state)
begin
case present_state is
when s0
when s1
when s2
when s3
when s4
when s5
when s6
when s7
end case;
end process;
end Behavioral;
=>
=>
=>
=>
=>
=>
=>
=>
next_state<=s1;
next_state<=s2;
next_state<=s3;
;
next_state<=s4;
next_state<=s5;
next_state<=s6;
next_state<=s7;
next state<=s0;
next_state<=s0;
Q<="000";
Q<="001";
Q
Q<="010";
;
Q<="011";
Q<="100";
Q<="101";
Q<="110";
Q<="111";
Q<= 111 ;
Synchronní 3-bitový
3 bitový čítač s KO D
Konečné schéma
komb. logika F
Q0
1 Q0
Q1
1 Q1
Q2
1 Q2
paměťová část
D0
D
Q
Q0
CLK
&
&
D1
&
D
&
D2
D
&
CLK
clk
Q1
CLK
&
&
Q
Q
Q2
výstupy
Příklad: synchronní 3-bitový
3 bitový čítač s KO D
Obvody
y CPLD, FPGA, jjazyk
y VHDL
- Simulace
Výsledky syntézy:
1)
2)
Ve všech případech popisu 3-bitového čítače v jazyce VHDL dojde ke stejnému
výsledku syntézy!!!!!!!
Návrhový systém rozpozná danou konstrukci jako 3-bitový synchronní čítač.
Příklad: nápojový automat na kávu
Vlastnosti:
1) Blokové schéma nápojového automatu je zobrazeno na obrázku.
2) Po vhození částky 5 korun dojde vydání kávy
3) Automat vrací mince – koruny a dvoukoruny
j_in – vstup: koruna
d_in – vstup: dvoukoruna
p_in – vstup: pětikoruna
kava_out – signalizace, že má být káva vydána
j_out – signalizace, že má být koruna vrácena
d_out – signalizace, že má být dvoukoruna
vrácena
Možnosti realizace:
1)
2)
Diskrétní dig. součástky – obtížnější řešení, jedná se o komplexnější obvod
Obvod CPLD nebo FPGA – není potřeba minimalizace, realizace v návrhovém
systému ISE WebPack v jazyce VHDL do obvodu CPLD nebo FPGA (návrhový
systém má v sobě zabudované minimalizační a optimalizační algoritmy)
Příklad: nápojový automat na kávu
Stavový
ý automat nápojového
p j
automatu:
d_in=1
st1
j_in=1
j_
kava_out=0
j_out=0
d_out=0
p_in=1
st0
j_in=1
st2
kava_out=0
j_out=0
d_out=0
p_in=1
d_in=1
d_in=1
d_in=1
j_in=1
st3
kava_out=0
j_out=0
d_out=0
p_in=1
j_in=1
st4
kava_out=0
j_out=0
d_out=0
p_in=1
p_in=1
st5
kava_out=0
j_out=0
d_out=0
st10...st15
j_in=1
kava_out=1
jj_out=0
d_out=0
st6
st7
st8
st9
kava_out=1
j_out=1
d_out=0
kava_out=1
k
t 1
j_out=0
d_out=1
kava_out=0
k
t 0
j_out=1
d_out=0
kava_out=0
k
t 0
j_out=0
d_out=1
kava_out=0
j_out=0
d_out=0
d_in=1
Příklad: nápojový automat na kávu
VHDL p
popis
p nápojového
p j
automatu:
entity automat is
Port ( clk, rst
: in STD_LOGIC; -- vstup
j_in : in STD_LOGIC; -- vstup
d_in : in STD_LOGIC; -- vstup
p_in : in STD_LOGIC; -- vstup
kava_out: out STD_LOGIC; -- vystup
j_out : out STD_LOGIC; -- vystup
d
d_out
: out STD_LOGIC);
) -- vystup
end automat;
architecture Behavioral of automat is
type state is (st0, st1, st2, st3, st4, st5, st6, st7, st8, st9);
signal
i
l present_state, next_state : state;
begin
-- sekvencni cast stavoveho automatu
process (clk, rst)
b i
begin
if rst='1' then
present_state <= st0;
elsif rising_edge(clk) then
present_state
t t t <=
< next_state;
t t t
end if;
end process;
Programovatelné logické obvody
Příklad: nápojový automat na kávu
VHDL p
popis
p nápojového
p j
automatu:
--kombinacni cast F a G stavoveho automatu (budici signaly pro klopne obvody)
process (present_state, j_in, d_in, p_in)
begin
case present_state is
when st0 =>
kava_out <= '0'; -- kava neni vydana
j_out <= '0'; -- koruna neni vracena
d
d_out
<= '0';
0
-- dvojkoruna
d jk
neni
i vracena
if (j_in='1') then next_state <= st1;
elsif (d_in='1') then next_state <= st2;
elsif (p_in='1') then next_state <= st5;
else
l
next_state <= st0;
0 -- prechod
h d d
do stavu st0
0
end if;
when st1 =>
kava_out <= '0'; -- kava neni vydana
j
j_out
t <= '0'
'0'; -- koruna
k
neni
i vracena
d_out <= '0'; -- dvojkoruna neni vracena
if (j_in='1') then next_state <= st2;
elsif (d_in='1') then next_state <= st3;
elsif
l if (
(p_in='1')
i '1') th
then next_state
t t t <
<= st6;
t6
else next_state <= st1; -- prechod do stavu st1
end if;
Programovatelné logické obvody
Příklad: nápojový automat na kávu
VHDL p
popis
p nápojového
p j
automatu:
when st2 =>
kava_out <= '0'; -- kava neni vydana
j_out <= '0'; -- koruna neni vracena
d_out <= '0'; -- dvojkoruna neni vracena
if (j_in='1') then next_state <= st3;
elsif (d_in='1') then next_state <= st4;
elsif (p_in='1') then next_state <= st7;
else
l
next_state <= st2;
2 -- prechod
h d d
do stavu st2
2
end if;
when st3 =>
kava_out <= '0'; -- kava neni vydana
j
j_out
<= '0'
'0'; -- koruna
k
neni
i vracena
d_out <= '0'; -- dvojkoruna neni vracena
if (j_in='1') then next_state <= st4;
elsif (d_in='1') then next_state <= st5;
elsif
l if (
(p_in='1')
i '1') th
then next_state
t t t <= st8;
t8
else next_state <= st3; -- prechod do stavu st3
end if;
Příklad: nápojový automat na kávu
VHDL p
popis
p nápojového
p j
automatu:
when st4 =>
kava_out <= '0'; -- kava neni vydana
j_out <= '0'; -- koruna neni vracena
d_out <= '0'; -- dvojkoruna neni vracena
if (j_in='1') then next_state <= st5;
elsif (d_in='1') then next_state <= st6;
elsif (p_in='1') then next_state <= st9;
else
l
next_state <= st4;
4 -- prechod
h d d
do stavu st4
4
end if;
when st5 =>
kava_out <= '1'; -- kava je vydana
j
j_out
<= '0'
'0'; -- koruna
k
neni
i vracena
d_out <= '0'; -- dvojkoruna neni vracena
next_state <= st0; -- prechod do stavu st0
when st6 =>
k
kava_out
t <= '1'
'1'; -- kava
k
j
je vydana
d
j_out <= '1'; -- koruna je vracena
d_out <= '0'; -- dvojkoruna neni vracena
next_state <= st0; -- prechod do stavu st0
Příklad: nápojový automat na kávu
VHDL p
popis
p nápojového
p j
automatu:
when st7 =>
kava_out <= '1'; -- kava je vydana
j_out <= '0'; -- koruna neni vracena
d_out <= '1'; -- dvojkoruna je vracena
next_state <= st0; -- prechod do stavu st0
when
h
st8
8 =>
kava_out <= '0'; -- kava neni vydana
j_out <= '1'; -- koruna je vracena
d_out <= '0'; -- dvojkoruna neni vracena
next_state <= st7;
7 -- prechod
h d d
do stavu st7
7
when st9 =>
kava_out <= '0'; -- kava neni vydana
j
j_out
t <= '0'
'0'; -- koruna
k
neni
i vracena
d_out <= '1'; -- dvojkoruna je vracena
next_state <= st7; -- prechod do stavu st7
end case;
end
d process;
end Behavioral;
Příklad: synchronní 3-bitový
3 bitový čítač s KO D
Obvody
y CPLD, FPGA, jjazyk
y VHDL
- Simulace
Doporučená literatura
Kolouch, JJ., Programovatelné logické obvody a návrh jejich
Kolouch
aplikací v jazycích ABEL a VHDL
www stránky firmy Xilinx, www.xilinx.com, katalogové listy
Internet – vyhledávač www.google.com
www google com
Download

Stáhnout - SketaFile