Jak na VHDL

Transkript

Jak na VHDL
Prácee v jazyk
ku VHDL
L
1. Z
Základní loogické funk
kce v jazyk
ku VHDL
P
Poté, co jsm
me v minullém projekttu ověřili, že
ž jsme sch
hopni korekktně nakonffigurovat
hradlovvé pole, můžžeme přistou
upit k impleementaci záákladních lo
ogických fuunkcí. Impleementaci
provedeeme v soubběžné domééně (nebo také paraleelní doméně), což znaamená, že všechny
implem
mentované obbvody poběěží současněě. Opačným
m typem je sekvenční ddoména, ve které se
příkazy vykonávajíí jeden po druhém,
d
poddobně jako je
j tomu v prrocesoru.
V
VHDL obsaahuje tyto lo
ogické operrátory:
- NOT - neggace,
- AND - loggický součin
n,
- OR - logiccký součet,
- NAND - negovaný
n
lo
ogický součiin,
- NOR - neggovaný logiický součet,,
- XOR - loggická nerovn
nost,
- NXOR - loogická rovn
nost.
První V
VHDL kód bude
b
podrob
bně popsán, aby bylo patrno, co jednotlivé řáddky znamen
nají.
D
Definice záákladních kn
nihoven, kteeré jsou pou
užity. Kniho
ovna „ieee. std_logic_1
1164.all“
definujee typ „std_llogic“, který
ý byl vyvinnut právě prro potřeby syntézy
s
a siimulace čísllicových
systémůů. Tento typp může nabý
ývat těchto hhodnot:
- ‘U‘ - uninnitialized
- ‘X‘ - forciing unknow
wn
- ‘0‘ - logic 0 (driven, forcing)
- ‘1‘ - logic 1 (driven, forcing)
- ‘Z‘ - high
h impedance
- ‘W‘ - weaak unknown
n
- ‘L‘ - logicc 0 (read, weeak)
- ‘H‘ - logicc 1 (read, weak)
- ‘-‘ - don’t care
Tučně jsou zvýraznněny hodnoty, které buudeme v náv
vrhu nejčasttěji používat
at.
Definicee entity. Jaak již bylo řečeno, EN
NTITY deffinuje rozhraní (interfface) navrh
hovaného
moduluu. V sekci PO
ORT jsou přímo deklarrovány:
- vstupyy:
o jednotlivéé vstupy: jm
méno_vstupuu : IN STD_
_LOGIC;
o sběrnice : jméno_sběěrnice : IN S
STD_LOGIIC_VECTOR(MSB dow
wnto LSB);;
- výstuppy
o jednotlivéé výstupy: jm
méno_výstuupu : OUT STD_LOGI
S
IC;
o sběrnice : jméno_sběěrnice : OUT
T STD_LOGIC_VECT
TOR(MSB ddownto LSB
B);
P
Popis chováání v bloku ARCHITE
ECTURE. V tomto jedn
noduchém ppřípadě se používají
p
pouze vvstupy a výsstupy entity
y. Protože jaak připojeníí LED (LED
D_R) diod, ttak přepínaačů (SW)
je definováno jako sběrnice, musíme
m
z tétto sběrnice vybrat pouzze jeden pinn. Toto prov
vedeme
následuj
ujícím zápiseem:
- LED_R(0)) - vybere nejnižší
n
(čísllo 0) pin sběrnice
- SW(1) - vybere druhý
ý nejnižší piin sběrnice
Dále se zde setkávááme s operáátorem přiřaazení hodno
oty signálu:
- ‘<=’ - nappř.:
o LE
ED_R(0) <=
= SW(0); -- propojení dvou
d
signálů
ů
o LE
ED_R(2 dow
wnto 0) <= SW(2 down
nto 0); -- prropojení 3 bbitů ze dvou
u sběrnic
o LE
ED_R(0) <=
= SW(0) andd SW(1); --- přiřazení výsledku
v
opperace
- podobbným typem
m operátoru je
j přiřazení hodnoty prroměnné: ‘:=
=’
- jednottlivé příkazyy se oddělujjí pomocí sttředníku: “;””
- komenntáře se zapisují pomoccí: „--“
2. P
Připojení dalších
d
výsttupů a aritm
metické funkce
A
Abychom mohli
m
vyzko
oušet aritmeetické funkcce (další kaapitola) je vvhodné být schopný
si výsleedek zobrazit. Proto se v tomtoo projektu naučíme, jak
j zobrazoovat hodno
oty na 7
segmenttovém displleji.
Jednotliivé vstupní piny displejje odpovídaají segmentů
ům, přesně podle
p
násleedujícího ob
brázku:
P
Připojení prvních
p
čtyřř displejů k FPGA uk
kazuje náslledující sezznam. Podlee tohoto
seznamuu musíme do
d projektu vložit
v
další výstup a ko
orektně je propojit s pinny FPGA.
Jméno F
FPGA Pin
HEX0[00] PIN_AF110 Seven-Seegment segm
ment 0[0]
HEX0[11] PIN_AB12 Seven-Segment seggment 0[1]
HEX0[22] PIN_AC12 Seven-Segment seggment 0[2]
HEX0[33] PIN_AD11 Seven-S
Segment seggment 0[3]
HEX0[44] PIN_AE111 Seven-Segment seggment 0[4]
HEX0[55] PIN_V144 Seven-Seg
gment segm
ment 0[5]
HEX0[66] PIN_V133 Seven-Seg
gment segm
ment 0[6]
gment segm
ment 1[0]
HEX1[00] PIN_V200 Seven-Seg
HEX1[11] PIN_V211 Seven-Seg
gment segm
ment 1[1]
HEX1[22] PIN_W21 Seven-Segment segm
ment 1[2]
HEX1[33] PIN_Y222 Seven-Seg
gment segm
ment 1[3]
HEX1[44] PIN_AA24 Seven-S
Segment seggment 1[4]
HEX1[55] PIN_A233 Seven-Seg
gment segm
ment 1[5]
HEX1[66] PIN_AB224 Seven-Segment seggment 1[6]
Jméno F
FPGA Pin
HEX2[00] PIN_AB223 Seven-Segment seggment 2[0]
HEX2[11] PIN_V2225 Seven-Seegment segm
ment 2[1]
HEX2[22] PIN_AC225 Seven-Segment seggment 2[2]
HEX2[33] PIN_AC226 Seven-Segment seggment 2[3]
HEX2[44] PIN_AB226 Seven-Segment seggment 2[4]
HEX2[55] PIN_AB225 Seven-Segment seggment 2[5]
HEX2[66] PIN_Y244 Seven-Seg
gment segm
ment 2[6]
HEX3[00] PIN_Y233 Seven-Seg
gment segm
ment 3[0]
HEX3[11] PIN_AA25 Seven-S
Segment seggment 3[1]
HEX3[22] PIN_AA26 Seven-S
Segment seggment 3[2]
HEX3[33] PIN_Y266 Seven-Seg
gment segm
ment 3[3]
HEX3[44] PIN_Y255 Seven-Seg
gment segm
ment 3[4]
HEX3[55] PIN_U222 Seven-Seg
gment segm
ment 3[5]
HEX3[66] PIN_W24 Seven-Segment segm
ment 3[6]
Následuující ukázkky kódu by
y měl obsaahovat i Váš
V VHDL kód. Upraavte části souboru
„top_bloock.vhd“.
Knihovnny nutné prro základní aritmetické
funkce
a
Definicee entity včeetně 7 segmeentových diisplejů HEX
X0 až HEX3
3
Jednoduuchý kód prro ověření funkce
fu
7 seggmentový diisplejů
T
Tento jednooduchý kód ověří funkcci 7 segmen
ntových disp
plejů. Na vššechny displeje jsou
připojenny přepínačče 0 až 6, které rozsvvěcují nebo
o zhasínají jednotlivé segmenty displejů.
Segmen
nty svítí, pookud se na ně přivedee log 0.
Pozn.:
 JJednoduchýý multiplexeer v jazyku VHDL:

JJednoduchýý dekodér ve VHDL - vvšechny hod
dnoty jsou zapsaný
z
binnárně

JJednoduchýý dekodér ve
v VHDL - hodnoty v podmíncee jsou zapssány v HEX
X (x“A“
oodpovídá 0xxA H)

D
Definice vnnitřního sign
nálu: Signálly se definujjí na začátk
ku bloku „A
ARCHITECT
TURE“.
 Z
Základní arritmetické a relační opeerátory:
Aritmetické operáátory:
+ - ssčítání
- - oodčítání
* - nnásobení
/ - ddělení (pozoor, někdy lzee dělit
moccninou dvěm
ma - 2,4,8,16,32 atd.)
Modd - modul
Abss - absolutníí hodnota
** - umocnění
Relačníí operátoryy:
= - rovnost
//= - nerovnoost
> - větší nežž
< - menší neež
>
>= - větší nebo
n
rovno
<
<= - menší nebo rovno
o
Operátor zřetězen
ní:
& - zřetězenní
Priorita operátorů

K
Konverzní funkce
f
- conv_integger(std_logic_ vector) - převod std
d_logic_vecctor na typ iinteger
- conv_std__logic_vecto
or(integer, ššířka sběrniice v bitech
h) - převod z čísla typu
u integer
na std_llogic_vector o dané šířce
3. S
Sekvenční doména
D
Doposud vššechny projjekty, které jsme vytvo
ořili, běžely
y pouze v pparalelní (so
ouběžné)
doméněě. To znameená, že všeechny příkaazy se vždy
y vykonávally najednouu bez ohled
du na to,
v jakém
m pořadí jsouu příkazy naapsány.
O
Opakem tohhoto chován
ní je sekvennční doménaa, kde se přííkazy vykonnávají v tom
m pořadí,
ve kteréém jsou zappsány. Pozo
or si však m
musíme dátt na to, že vykonávání
v
í příkazů neeprobíhá
jako v pprocesoru. Tento
T
probléém bude poopsán dále.
S
Sekvenční doména se do paralellní vkládá pomocí,
p
tzv
v. procesu. Pokud vložíme do
paralelnní domény více proceesů, budem
me mít více sekvenčních domén, které opětt poběží
paralelnně vedle sebbe. Tímto způsobem see z hradlového pole získá maximáální výkon,, protože
můžemee vytvořit více
v paraleln
ně běžících vvýpočetních
h jednotek
S
Sekvenční loogikou jsou realizoványy operace, u kterých stav
v na výstupuu není závisslý pouze
na souččasném stavu vstupů, jaako je tomuu u kombin
nační logiky
y, u které vvystačíme s popisem
logickým
mi rovnicem
mi. Stav na výstupu je zde ovlivňo
ován i předešlým staveem vstupů (případně
(
výstupů). Z toho plyne,
p
že sekvenční loogika by měla
m
být, až na výjimkky, synchron
nizována
hodinovvým signálem
m.
Procesyy
Z
Základním stavebním kamenem sekvenční domény je proces. Prrávě uvnitř procesu
jsou přííkazy vykonnávány v zaapsaném poořadí. Záklaadní syntaxee procesu j e ukázána v kód 1.
Na této ukázce si vysvětlíme
v
základní
z
fakkta:
n
zapis ovat
1.) jjméno proccesu není nutno
2.) V závorce za „PROCE
ESS“ je citllivostní sez
znam. Jedn
ná se o seznnam signállů, které
aaktivují prroces. Tedy
y, pokud se některému
u signálu z citlivostníh
ího seznamu změní
ú
úroveň, ak
ktivuje se proces a proovedou se příkazy
p
uvn
nitř processu. Pokud se
s změní
ssignál, kterrý není na citlivostním
c
m seznamu procesu, proces
p
se neespustí.
3.) P
Proměnné deklarovan
d
né v těle proocesu jsou dostupné
d
a viditelné
v
poouze v něm,, nikoli v
ccelém modu
ulu a jejich
h hodnoty zzůstávají neeměnné mezzi jednotlivýými starty procesu.
p
D
Deklarace proměnný
ých a siggnálů neníí nutná, pokud
p
se používají signály
d
deklarovan
né na začáttku architeektury, nebo pokud see pracuje see vstupy a výstupy
eentity.
4.) M
Mezi „BEG
GIN“ a „END
D PROCESS;;“ se zapisu
ují příkazy sekvenční domény.
ngují sekvenční signálly v procesu
u
Jak fun
Uvažujm
me následujjící jednodu
uchý příkladd, kdy máme 3 proměnn
né:
signal a : integer :=
= 1;
signal b : integer :=
= 2;
signal c : integer :=
= 3;
process((a,b)
begin
a <= b;
c <= a;
end process;
Pokud by tato sekvence příkazů proběhla v procesoru, tak by výsledné hodnoty byly:
a = 2;
b = 2;
c = 2;
Oproti tomu v hradlovém poli, při použití signálů, budou výsledné hodnoty tyto:
a = 2;
b = 2;
c = 1;
Hlavní rozdíl je v tom, že všechny hodnoty, které se mají přečíst, se přečtou na
začátku vykonávání procesu a všechny hodnoty, které se mají zapsat se zapíšou až na konci
přenosu.
V tomto případě tedy nebude hodnota v „a“ přepsána uprostřed procesu, ale až na
konci a proto přiřazení c <= a uloží do „c“ původní hodnotu „a“, což je 1.
Pokud máme stejné výchozí hodnoty a následující proces:
process(a,b)
begin
c <= a;
c <= b;
end process;
tak po vykonání procesu bude v „c“ hodnota 2, což je hodnota v „b“. Platí tedy, že poslední
řádek v procesu má nejvyšší prioritu.
Pokud chceme, aby se příkazy v procesu prováděly skutečně sekvenčně, musíme místo
signálu použít proměnné (variable).
Přiřazení signálů v sekvenční doméně
Základní přiřazení hodnoty signálů je stejné jako v paralelní doméně a jedná se operátor „<=“.
Existují dvě základní syntaxe pro podmíněné přiřazení signálů:
Příkaz IF – THEN – ELSE
Jedná o sekvenční příkaz, který lze užívat pouze v rámci procesu. Má charakter prioritního
přiřazení a může tudíž vést na složitější obvodové řešení po kompilaci.
Syntaxe:
1) IF podmínka THEN příkaz END IF;
2) IF podmínka THEN příkaz_1 ELSE příkaz_2 END IF;
3) IF podmínka_1 THEN příkaz_1
ELSIF podmínka_2 THEN příkaz_2
ELSIF podmínka_3 THEN příkaz_3 END IF;
Při použžití třetí moožnosti defi
finice takovvéto podmín
nky je u slo
ožitějších koonstrukcí vhodnější
použít ppříkaz CA
ASE – WH
HEN. Komppilátor obv
vykle dokážže takto naapsaný kód
d lépe a
úsporněěji přeložit.
Příkaz CASE
Podmínnky pro pouužití tohoto příkazu jsoou totožné jako u přík
kazu IF – T
THEN, rozd
díl je ve
výslednné hardwaroové implemeentaci po koompilaci.
Syntaxee:
CASE vvýraz IS
WHEN
N hodnota_vvýrazu_1 =>
> příkaz_1;
WHEN
N hodnota_vvýrazu_2 =>
> příkaz_2;
WHEN
N hodnota_vvýrazu_3 =>
> příkaz_3;
WHEN
N OTHERS
S => příkaz_
_4;
END CASE;
Základní logické obvody
o
pop
psané jazyk
kem VHDL
L
D klopn
né obvody
V této kkapitole si ukážeme,
u
jaak popsat jazzykem VHD
DL D klopn
né obvody, reagující naa úroveň
a na hraanu.
Popis D klopného obvodu
o
reag
gujícího na úroveň (vleevo) a na hrranu (vpravoo)
Poslednním příkladdem bude zápis
z
D kloopného obv
vodu reagujjícího na vvzestupnou hranu s
asynchrronním resetem.
D klopnýý obvod s asyynchronním resetem
Čítače
Zde si uukážeme zákkladní syntaaxi pro popiis čítače v jaazyku VHD
DL
Základní čítač s čítání nahoru (vlevo
o) a dolů (vpraavo)
Poslednní ukázka buude složitějšší čítač, kterrý umožňuje:
- resetováníí čítače - říd
dicí signál „rreset“
- čítání nahooru nebo do
olů - řídicí ssignál „coun
nt_direction
n“- fialová ččást kódu
- nahrát hoddnotu, od ktteré se budee čítat - řídiccí signál „lo
oad_enable““ - červená část
č
kódu
- zastavení nebo
n
povolení čítání - řídicí signáál „clock_en
nable“ - zeleená část kód
du
- samotný čítač
č
je zobrrazen modřee
To, o čem jsme se zatím nezmínili, je šířka čítače. Tu jsme nedefinovali nikde v
procesu, protože se definuje šířkou signálu „count“:
- 8bitový čítač tedy bude mít signál „count“ deklarován takto:
o signal count : std_logic_vector(7 downto 0);
- 11bitový čítač:
o signal count : std_logic_vector(10 downto 0);
Pokud budeme chtít vytvořit čítač do určité hodnoty, musíme do procesu přidat
podmínku, která resetuje čítač, pokud tento dosáhne požadované hodnoty
4. S
Stavové au
utomaty
S
Stavové auutomaty přředstavují přechod od
o běžné logiky k mikrokontrolérům.
Sekvenčční způsobb práce mikrokontro
m
olérů (postupné vyk
konávání innstrukcí) dovoluje
d
mikrokoontroléry pooužít v mn
noha aplikaccích pro řešení nejrůznějších úlooh a propůjčuje jim
tedy vellkou univerrzálnost. Naa druhé stranně je však příčinou
p
nižšší rychlosti reakce, pro
otože pro
vytvoření odpovídajících výsttupních siggnálů musí u typického
o mikrokonntroléru pro
oběhnout
několik (často velm
mi mnoho) instrukčních
i
h cyklů.
S
Stavový konnečný autom
mat je synchhronní mod
del (zařízeníí), které v ppřesně defin
novaných
okamžiccích (obvykkle s náběžžnou hranoou hodinovéého signálu
u) přechází mezi jedn
notlivými
definovanými stavvy. Tyto přechody
p
nnejsou náh
hodné, ale opisují přřechodový diagram
stavového automattu. To znam
mená, že dallší stav, do kterého auttomat přejdee při přícho
odu další
náběžnéé hrany, závvisí jednak na současnném stavu au
utomatu a jednak
j
na vvstupních siignálech.
Stavovéé automatyy mohou být
b synchroonní i asyn
nchronní. Zde
Z
se buudeme zabý
ývat jen
synchroonními stavoovými autom
maty.
Mealy vvs. Moore
Stavovéé automaty jsou
j
dvou druhů:
d
Moorrův a Mealy
yho. Hlavní a jediné rozzdíly spočív
vají v:
- Moorůův automat
o výstupní signály
s
záviisí jen na staavu automaatu
o výstupy se mohou měnit jen v okkamžiku ak
ktivní hrany hodinovéhho signálu
- u Meaalyho autom
matu
o výstupní signály
s
záviisí i na vstup
upních signáálech
o kombinačční výstupy reagují okaamžitě na zm
měny vstupn
ních signálůů, na nichž jsou
j
závislé
o výstupní signály
s
moh
hou být dánny:
kom
mbinační log
gikou
kom
mbinační log
gikou s regisstrovým výsstupem
Zápis sttavových automatů
a
v jazyku VH
HDL
S
Stavový auttomat můžeeme zapsat ppomocí něk
kolika proceesů. Nejpouužívanějším
m je zápis
pomocí tří procesůů, ale např.. firma Alteera uvádí ve
v svých scchématech zzápis pomo
ocí dvou
s
auttomat však llze komplettně popsat i jedním proocesem.
procesůů. Konečný stavový

Stavový auttomat typu Mealy - záppis pomocí dvou procesů
V prvníí ukázce si ukážeme, jaak stavový automat zaapsat pomoccí dvou proocesů. Tento
o způsob
doporuččuje ALTER
RA ve vývo
ojovém prosstředí Quarttus II. Nejprrve si definuujeme entitu
u:
V dalšíí ukázce jee začátek definice
d
arrchitektury. Zde je dů
ůležitá ukáázka definicce stavů
stavového automatuu a registrů
ů, v nichž buude uložen vnitřních
v
staav automatuu.
V následující ukázcce je zobrazzen první prroces, který definuje přřechodovouu funkci auto
omatu.
Následuující stav je závislý jak na současnném stavu au
utomatu, tak
k na vstupní
ním signálu „input“.
Poslednní ukázka popisuje druhý
d
procees, jehož úkolem je definice výstupů au
utomatu.
Podívám
me-li se naa citlivostní seznam prrocesu, vid
díme, že pro
oces se spuustí při zm
měně, jak
vnitřnícch stavů autoomatu („staate“), tak vsttupu (input)).

Stavový auttomat typu Moore - záppis pomocí dvou proceesů
R
Rozdíl v záápisu mezi automatem
a
ttypu Mealy
y a Moore, je
j v poslednním procesu
u. Jak již
bylo řeečeno, výstuupy jsou nastaveny
n
ppouze na základě
z
vnittřních stavůů, tudíž zd
de chybí
podmínnky pro signnál „input“.

Stavový auttomat zapsaaný pomocí jednoho prrocesu
P
Pomocí tohhoto zápisu
u bude vytvvořen autom
mat, jehož výstup budde nastaven
n jak na
základě stavu autom
matu, tak sttavu vstupnních signálů
ů. Současně však výstuppy automatu nejsou
kombinnační funkcí, ale jsou reegistrované a tedy také synchronníí s hodinovýým signálem
m.
N
Nevýhoda synchronních výstupůů spočívá v tom, že výstup
v
nereeaguje okam
mžitě na
vstupní proměnné,, ale až po příchodu hhrany hodinového sig
gnálu, což vvede na zpožděnou
reakci vvýstupu. Výýhodou je, že synchronnní automat není
n náchylný na hazarrdní stavy

Podobné dokumenty

Manuál pro internetové bankovnictví / 3025 MB

Manuál pro internetové bankovnictví / 3025 MB Jednorrázové plattby / Převod d mezi mým mi účty

Více

2013 - cerpadlo

2013 - cerpadlo Celonerezové drenážní čerpadlo určené díky perfektnímu materiálovému provedení do náročných podmínek – přečerpávání znečištěné vody s pevnými příměsemi do 10 mm, z výkopů, jímek, nádrží atd., vhodn...

Více