Documente Academic
Documente Profesional
Documente Cultură
Introducere ȋ n
modelarea VHDL
Compilator C1 Compilator C2 ... Compilator Cn
Fig. 4.1
descrierea structurală:
sinteza software
rezultat sinteza
program PLD
Model
simulare Fisier pentru
Fisier
(VHDL Stimuli programare
raport
sau alt test PLD
model)
software simulare
Forme Fisier
de unda de date
Fig. 4.4
Atribut (attribute). Un atribut reprezintǎ date ataȋate unui obiect VHDL sau
date predefinite despre un obiect VHDL.
Entity declaration
Interface declaration
Architecture body
Functional declaration
Fig. 4.5
entity MUX4 is
port(
EN: in std_logic;
S: in std_logic_vector (1 downto 0);
I: in std_logic_vector (3 downto 0);
Y: out std_logic
);
end MUX4;
EN
I(3..0)
Y
S(1..0)
Fig. 4.6
inout
in
in
out
Fig. 4.7
2010 Proiectarea sistemelor digitale 16
Moduri
in – port unidirecȋional care transferă date numai dinspre exterior către
interior.
out – port unidirecȋional care transferă date numai dinspre sursa internă catre
exterior. Nu poate fi utilizat pentru implementarea unei reacȋii deoarece data din
acest port nu poate fi citită.
buffer – port unidirecȋional analog unui port declarat mod out dar care permite
utilizarea pentru reacȋii interne. Nu trebuie confundat cu un port bidirecȋional
deoarece nu poate transfera date de la o sursă externă. Un port buffer poate fi
conectat doar la un semnal intern sau la un port buffer al unei alte entităȋi. Nu
poate fi conectat la un port out sau inout al altei entităȋi.
inout – port bidirecȋional. Semnalul poate fi generat dintr-o sursă internă sau
externă. Poate fi utilizat şi pentru implementarea unor reacȋii interne. Poate
ȋnlocui oricare dintre celelalte 3 moduri dar nu este recomandat deoarece
schemele vor fi greu de citit şi ȋnȋeles.
Exemplu:
library ieee;
use ieee.std_logic_1164.all
Fig. 4.8
Fig. 4.9
Litere
Cifre;
Sublinieri.
Observaȋ ii!
Exemplu:
type stari is (S0, S1, S2, S3, err);
signal starea_curenta : stari;
Exemplu:
Fiecare câmp poate fi referit prin numele său calificat cu numele ȋnregistrării
din care face parte.
Exemplu:
iocell is record
buffer_inp: std_logic_vector (7 downto 0);
enable: std_logic;
buffer_put: std_logic_vector (7 downto 0);
end record;
signal busa, busb, busc: iocell;
signal vec: std_logic_vector (7 downto 0);
busa.buffer_inp <=vec; -- un vector asignat altui vector
busb.buffer_inp <= busa.buffer_inp; --asignarea unui camp
busb.enable <=‘1’; -- asignarea unei valori
busc <= busb; --asignarea unui obiect
În ambele cazuri cele două semnale sunt considerate de acelaşi tip. Din această
cauză compararea lor sau asignarea nu vor produce eroare la compilare.
count'right=127 count'low=0
states'right=write states'low=idle
word'right=0 word'low=0
'last_value – oferă ultima valoare a unui semnal inăintea modificării valorii acestuia