Professional Documents
Culture Documents
DEKLARACIJE BIBLIOTEKA
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY std;
USE std.standard.all;
LIBRARY work;
USE work.all;
kraj iskaza
--
komentar
* Std_logic_1164 -
ENTITET
Sintaksa:
ENTITY ime_entiteta IS
PORT (
ime_porta:tip signala;
ime_porta:tip signala;
...);
END ime_entiteta;
ARCHITECTURE
* dio deklaracije
* dio koda
TIPOVI PODATAKA
-Predefinisani tipovi podataka i
-korisniki definisani tipovi podataka (TYPE ... IS RANGE...)
VHDL sadri serije pre-definisanih tipova podataka specificiranim
kroz IEEE 1076 i IEEE 1164 standarde. Mnogi od njih su u sljedeim
bibliotekama:
PRIMJERI
BIT (i BIT_VECTOR)
SIGNAL x:BIT
OPERATORI I ATRIBUTI
Operatori u VHDLu
* Operatori dodjele:
<= dodjela vrijednosti signalu;
:= dodjela vrijednosti varijablama ili konstantama. Koristi se i za
dodjelu inicijalne vrijednosti;
=> dodjela vrijednosti individualnim elementima vektora.
* Logiki operatori
not, and, or, nand, nor, xor, xnor
* Aritmetiki operatori
+, -, *, /, **, MOD, ABS
* Relacijski operatori
=, /=, <, >, >=,<=
* Operatori pomaka, shift operatori
sll, srl, sla, sra, rol, ror
* Operatori grupisanja/vezivanja
&, (, , ,)
KONKURENTNI KOD
VHDL kod moe biti konkurentan/paralelan ili sekvencijalan.
- Iskazi unutar PROCESS bloka, FUNCTION bloka ili PROCEDURE bloka
su sekvencijalni, sve ostalo je paralelno.
Konkurentni kod se naziva i dataflow kod.
U konkurentnom kodu se mogu koristiti:
* Operatori,
* WHEN iskaz,
* GENERATE iskaz,
* BLOCK iskaz
Operatori u VHDLu
Tip operatora
Operatori
Tipovi podataka
Logiki
not,and,nand,or,nor,xor,xnor
Bit,bit_vector,std_logic,std_l
ogic_vector,std_ulogic,std_ul
ogic_vector
Aritmetiki
+,-,*,**,/
Integer, signed,unsigned
Op. usporedbe
=,/=,<,<=,>,>=
Svi navedeni
Oper. pomaka
Bit_vector
Op. grupisanja
&, (, , , )
WHEN iskaz
Pojavljuje se u dvije forme
...
ARCHITECTURE mux1 OF mux IS BEGIN
y<= a WHEN sel=00 ELSE
b WHEN sel=01 ELSE
c WHEN sel=10 ELSE
d;
END mux1;
...
ARCHITECTURE mux1 OF mux IS BEGIN
WITH sel SELECT
y<= a WHEN sel=00,
b WHEN sel=01,
c WHEN sel=10,
d WHEN OTHERS;
END mux1;
SEKVENCIJALNI KOD
Procesi, funkcije i procedure su dijelovi koda koji se izvravaju
sekvencijalno.
Sekvencijalni kod se takoe naziva behavioral kod.
Izrazi unutar navedenih blokova mogu biti
* IF
* WAIT
* CASE i
* LOOP.
PROCESS
PROCESS je sekvencijalni dio koda. Karakterie ga prisustvo IF,
WAIT,CASE i LOOP izraza, kao i lista osjetljivosti (osim u sluaju
koritenja WAIT).
PROCESS se izvrava svaki put kada se signal u listi osjetljivosti
promijeni.
Sintaksa:
PROCESS (lista osjetljivosti)
VARIABLE ime tip:=inicijalna vrijednost
BEGIN
Sekvencijalni kod
END PROCESS;
IF ISKAZ
sintaksa:
IF uslov THEN dodjela;
ELSIF uslov THEN dodjela;
...
ELSE dodjela:
END IF;
WAIT iskaz
sintaksa:
WAIT UNTIL signal;
WAIT ON signal1, signal2,...;
WAIT FOR time;
CASE iskaz
CASE identifikator IS
WHEN vrijednost=>dodjele;
WHEN vrijednost=>dodjele;
...
END CASE;
Primjer:
CASE control IS
WHEN 00=> x<=a; y<=b;
WHEN 01=> x<=b; y<=c;
...
END CASE;
LOOP iskaz
LOOP se koristi kada se pojavi potreba za ponavljanjem odreenog
dijela koda nekoliko puta.
entity mux_4u1 is
port (x0,x1,x2,x3 : in std_logic;
s : in std_logic_vector(1 downto
0);
f : out std_logic);
end mux_4u1;
architecture archmux4u1 of mux_4u1 is
begin
process (x0,x1,x2,x3,s)
begin
CASE s IS
WHEN 00 =>f <=x0;
WHEN 01 =>f <=x1;
WHEN 10 =>f <=x2;
WHEN others =>f <=x3;
END CASE;
end archmux4u1;
CONSTANT
Moe biti deklarisana u paketu, entitetu ili arhitekturi.
SIGNAL
Signal slui za prosljeivanje vrijednosti unutar i van kola. Signal
zapravo prikazuje unutranje konekcije. Svi portovi unutar entiteta
su po defaultu signali.
Sintaksa:
VARIABLE
Sintaksa:
VARIABLE ime:tip:=inicijalna vrijednost;
Primjeri:
CONSTANT set_bit:BIT:=1;
SIGNAL control:BIT:=0;
VARIABLE varb1:BIT:=0;
Koritena literatura: