You are on page 1of 51

1.

BEVEZETS A VHDL NYELV SZINTAXISBA S SZEMANTIKJBA

2013.01.04.

Keresztes Pter

A GAJSKI-KUHN DIAGRAM

Alapelv:
Rendezzk a digitlisrendszerek lersait clok s szintek szerint
2013.01.04. Keresztes Pter 2

A VHDL nyelv

Az IEEE ltal 1987-ben szabvny szintre emelt hardver-ler nyelv s szimulcis krnyezet

2013.01.04.

Keresztes Pter

A VHDL kt fontos sajtossga

szekvencilis s konkurrens

a szemantika alanya a szimultor

2013.01.04.

Keresztes Pter

Tpusok s csomagok

- szabvnyos (standard) s - felhasznl ltal definilt tpusok. A tpus-definils legjobb helye : a VHDL csomag (package) A szabvnyos tpusok a STANDARD nev csomagban vannak deklarlva. A STANDARD csomag szabvnyos tpusai : boole-tpus (boolean) bit karakter (character) egsz (integer) vals (real) id (time) !!!!!!!
2013.01.04. Keresztes Pter 5

Egy VHDL csomag felptse


package MY_PACKAGE is -- deklarcik end MY_PACKAGE; package body MY_PACKAGE is -- defincik end MY_PACKAGE;

2013.01.04.

Keresztes Pter

Objektumok (rtkhordozk)
- konstansok (constant)

- vltozk (variable) - jelek (signal) Az rtkhordozkat deklarljuk. Pldk : constant c : integer := -2345; variable v1 : boolean ; signal READY : bit := '1'; A jel (signal) sajtossgai : A VHDL szimultor minden egyes jelhez hozzrendel egy "hatrid-naplt". Minden egyes jelnek van regisztrlt mltja, jelene s jvje. A jelnek nemcsak aktulis rtke, hanem a mltbl szrmaz jvbeli jslatok is tartoznak hozz.
2013.01.04. Keresztes Pter 7

Plda a jel kezelsre


.

y <= x1 and x2 after 3 ns;

Vgrehajts: 1. A szimultor kirtkeli a a jobboldali kifejezs (x1 and x2) aktulis rtkt. 2. A szimultor elveszi az y jelhez rendelt naplt, s regisztrlja, hogy mostantl 3 ns mlva az y jel rtkt a kiszmtott rtkre kell megvltoztatni. 3. Ezutn a szimultor ttr a kvetkez utasts vgrehajtsra. Ezutn kt alapeset lehet : - 3 ns elteltig nincs az y rtkre vonatkoz jabb jslat. Az y jel teht felveszi a megjsolt rtket. - Mieltt a 3 ns eltelne, y-ra egy jabb utasts- vgrehajts jabb rtket jsol. Ilyenkor = trldik a rgi jslat (inercia-modell) = marad a rgi jslat is (transzport-modell)
2013.01.04. Keresztes Pter 8

Entits s architektrk

EGY SZIMULLHAT VHDL LERSNAK LEGALBB EGY ENTITST, S LEGALBB EGY HOZZ TARTOZ ARCHITEKTRT TARTALMAZNIA KELL.

2013.01.04.

Keresztes Pter

ENTITS
A krnyezetbl kiragadott hardware egysg, fekete doboznak tekintve. entity PROCESSOR is port( DATA_BUS :inout byte; ADDR_BUS : out double_byte; C_BUSI : in bit_vector (1 to 19); C_BUSO: out bit_vector(1 to 13); end PROCESSOR;
2013.01.04. Keresztes Pter 10

AZ ARCHITEKTRA FOGALMA

Az elbbi entitssal kapcsolatban felmerl krdsek: Hogyan mkdik a PROCESSOR? Mi van a PROCESSOR belsejben? Ezekre a krdsekre az ARCHITEKTRA vagy ARCHITEKTRK vlaszol(nak) (architecture) Ha az architektra csak az "A" krdsre vlaszol, akkor viselkedsi, ha csak a "B" krdsre, akkor strukturlis. Egy entitsnak tbb architektrja lehet.
2013.01.04. Keresztes Pter 11

ARCHITEKTRK
architecture BEHAVIOR of PROCESSOR is begin ........ . end BEHAVIOR; architecture STRUCTURE of PROCESSOR is. begin ........ end SRUCTURE;
2013.01.04. Keresztes Pter 12

Utastsok

-- SZEKVENCILIS

-- KONKURRENS

2013.01.04.

Keresztes Pter

13

Egyszer szekvencilis utastsok ( a legfontosabbak)


vltoz rtkads ( variable_assignment_statement ) jel rtkads ( signal_assignment_statement ) "if" utasts ( if_statement ) "loop" utastsok ( loop_statement ) eljrs hvs ( procedure_call_statement ) vrakoz utastsok ( wait_statement )
2013.01.04. Keresztes Pter 14

Vltoz rtkad utasts


Csak szekvencilis lehet, konkurrens utastsnak vltoz nem lehet a targetje (VHDL-1076) v1 := s1 + v2; v3 := FUNC1(v4, v5, v6);

Idksleltets nem rhat el!!!!!!


2013.01.04. Keresztes Pter 15

Az "if" utasts (if_statement)

if c = '1' then y := a + b; else y := a - b; end if;

2013.01.04.

Keresztes Pter

16

Hurok utastsok (loop_statements)


for i in 123 downto l loop a(i) := b(i) * c(i-1); end loop;
while d > 0.0001 loop ny := 0.5 * (cy + x/cy) ; d := ny - cy; if d <= 0.0 then d := -1.0*d; end if; cy := ny; end loop;
2013.01.04. Keresztes Pter 17

A vrakoz utastsok (wait_statements)


wait for 123 ns;
A SZIMULCI a foly szekvencilis utastssorozatot 123 ns idtartamra felfggeszti.

wait on s1, s2, s3;


A SZIMULCI a foly szekvencilis utastssorozatot felfggeszti addig, amg a felsorolt jelek valamelyike megvltozik

wait until s1 = 123;


A SZIMULCI a foly szekvencilis utastssorozatot felfggeszti addig, amg az s1 rtke megvltozik, s a megvltozott rtk a kifejezs szerinti. Plda "felfut lre val vrakozsra:

wait until START = '1' ;


2013.01.04. Keresztes Pter 18

Szekvencilis jelrtkad utasts (sequential signal_assignment_statement)

s1 <= a * b after 10 ns;

Vgrehajts : 1. az a*b rtk kiszmtsa 2. s1 h.i. napljba annak bejegyzse, hogy 10 ns mlva s1 felveszi ezt az rtket. 3. Ha 10 ns eltelte eltt ezt az utastst ismt vgrehajtja a SZIMULCI, s a jobboldal rtke addigra megvltozott, vagy egy msik utasts ezalatt ms rtket r el s1-re, ez a jslat trldik.
2013.01.04. Keresztes Pter 19

Transport ksleltets

s2 <= transport c + d after 20 ns; Vgrehajts: 1. az a*b rtk kiszmtsa 2. s2 h.i. napljba annak bejegyzse, hogy 10 ns mlva felveszi ezt az rtket. 3. Ha 10 ns eltelte eltt ezt az utastst ismt vgrehajtja a SZIMULCI, s a jobboldal rtke addigra megvltozott, vagy egy msik utasts ezalatt s2-re s egy ksbbi idpontra ms rtket jsol, ez a jslat is rvnyben marad.
2013.01.04. Keresztes Pter 20

Plda sszetett hullmformra


count_up <= 0, 1 after 1 ns, 2 after 2 ns, 3 after 3 ns, ........... ........... 15 after 15 ns;
2013.01.04. Keresztes Pter 21

Egyszer konkurrens utastsok


konkurrens jelrtkad utasts (concurrent_signal_assignment_statement) a komponens beltets utastsa (component_instantiation_statement) konkurrens eljrshv utasts (concurrent_procedure_call) generl utasts (generate_statement)
2013.01.04. Keresztes Pter 22

A konkurrens jelrtkad utasts (concurrent_signal_assignment_statement)

y <=

x1 when SELECT1 = '1' after 1 ns else x2 when SELECT2 = '1' after 1 ns else y;

2013.01.04.

Keresztes Pter

23

Komponens beltetsi utasts (component_instantiation_statement)


architecture STRUCT of PROCESSZOR is .... component ALU port ( A : in byte; B : in byte; RESULT : out byte; CARRY_in in bit; CARRY_out out bit); end component; begin . . UNIT_12 : ALU port map( BUS1, BUS2, ACC_in, CY, FLAG3_in); . . end structure;
Keresztes Pter 24

2013.01.04.

Egy msfajta beltets

UNIT_12 : ALU port map( A => BUS1, B => BUS2, CARRY_in => CY, CARRY_out => FLAG3_in, RESULT =>ACC_in ); .
2013.01.04. Keresztes Pter 25

sszetett konkurrens utastsok A processzus (process_statement) rzkenysgi lista nlkl

CLOCKGEN : process begin clock <= '1' ; wait for 10 ns; clock <= '0'; wait for 10 ns; end process;
2013.01.04. Keresztes Pter 26

rzkenysgi lists
MLTPR : process (X1, X2) begin Y <= X1 * X2 after 100 ns; end process;

MLTPR : process begin Y <= X1 * X2 after 100 ns; wait on x1, x2; end process;
2013.01.04. Keresztes Pter 27

A blokk utasts, vdetlen (block statement) I.


entity UNIT1 is port ( in1, in2 : integer := 0; out1, out2 : out integer := 0 ); end; architecture BEH of UNIT1 is signal a, b, c, d, e : integer := 0; begin a <= in1; b <= in2;

2013.01.04.

Keresztes Pter

28

Vdett blokk (guarded block)


entity reg is port (data_in : in real := 0.0; data_out : out real := 0.0 STROBE : in bit); end; architecture BEH of reg is begin B : block(STROBE = '1') begin data_out <= guarded data_in after 11 ns; end block
2013.01.04. Keresztes Pter 29

Vdetlen blokkok II.


B1 : block signal y : integer := 0; begin c <= a * b after 10 ns; d <= a + c after 1 ns; y <= a - d after 2 ns; out1 <= y; end block; B2 : block signal z : integer; begin e <= c * b after 10 ns; z <= d + e after 1 ns; out2 <= z; end block; end BEH;
Keresztes Pter 30

2013.01.04.

Alprogramok s csomagok

Ld. VHDL plda, binris aritmetikai csomag

2013.01.04.

Keresztes Pter

31

Egy specilis fggvny, a rezolci (resolution_function)


-

Hibt jelezzen a szimultor, ha egyszerre kt processzus kvnja meghajtani ugyanazt a jelet. A fggvny gy oldja fel a konfliktust, hogy rtket definil a tbbszrs meghajts esetre is. Pldk : Ld. VHDL feladatok
Keresztes Pter 32

2013.01.04.

2. KLASSZIKUS DIGITLIS HLZATOK SPECIFIKCI SZINT MODELLEZSE


2013.01.04. Keresztes Pter 33

Digitlis hlzatok osztlyozsa

egyszer kombincis hlzatok szinkron sorrendi hlzatok Huffmann-fle aszinkron hlzatok ksleltets-rzketlen kombincis hlzatok ksleltets-rzketlen aszinkron hlzatok NCL hlzatok

2013.01.04.

Keresztes Pter

34

DIGITLIS RENDSZEREK OSZTLYOZSA AZ IDBELISG (TIMING) SZERINT

Uniszinkron rendszerek Azt egsz rendszert egyetlen rajel mkdteti,homogn fzist felttelezve. (globlis rajel) Aszinkron rendszerek Nem egyetlen rajel mkdteti az egsz rendszert
2013.01.04. Keresztes Pter 35

Uniszinkron rendszerek
Egyetlen globlis (az egsz rendszerre kiterjed) rajellel mkdnek, s a rendszer minden moduljra nzve az rajel fzisa is kttt Komponensek : szinkron trolk multiplexerek funkcis egysgek
2013.01.04. Keresztes Pter 36

Aszinkron rendszerek

Multiszinkron rendszerek egyetlen globlis rajel mkdteti a rendszert, de fzisa a klnbz egysgekben tetszleges, kzmbs Tbb rajeles (multi-clocked) rendszerek minden modulnak sajt, a tbbitl fggetlen rajele van rajel nlkli rendszerek

2013.01.04.

Keresztes Pter

37

RAJEL NLKLI ASZINKRON RENDSZEREK


Dupla-trols aszinkron futszalagok Ksleltets rzketlen aszinkron rendszerek

NCL rendszerek
Mikro-futszalagok

2013.01.04.

Keresztes Pter

38

Szinkron hlzatok szimbolikus szint modellezse (MEALY)

Egy hlzatra egy rajel temben az X bemenet rtkei rkeznek. Adjon a hlzat egyetlen Z kimenete 1-et, ha ktszer egyms utn X-re 1 rkezik!

2013.01.04.

Keresztes Pter

39

llapot-tmeneti grf

2013.01.04.

Keresztes Pter

40

CLARCHITEKTRA S VHDL PROCESSZUSOK

2013.01.04.

Keresztes Pter

41

SZINKRON HLZAT-SPECIFIKCI 1.
entity A_SYNC1 is port ( X : in bit; Z : out bit; CLK : inout bit); end; architecture BEH of A_SYNC1 is type state_type is (a, b, c); signal nq, q : state_type; begin psample: process begin wait until CLK = '1'; if q = a and X = '0' then nq <= a after 1 ns; elsif q = a and X = '1' then nq <= b after 1 ns; elsif q = b and X = '0' then nq <= a after 1 ns; elsif q = b and X = '1' then nq <= c after 1 ns; elsif q = c and X = '0' then nq <= a after 1 ns; elsif q = c and X = '1' then nq <= c after 1 ns; end if; wait until CLK = '0';
2013.01.04. Keresztes Pter q <= nq after 1 ns; 42

end process;

SZINKRON HLZAT SPECIFIKCI 2.


pout: process( X, q) begin if X = '1' and (q = b or q = c) Z <= '1' after 1 ns; else Z <= '0'after 1 ns; end if; end process; CLOCK: process begin wait for 5 ns; loop CLK <= '1'; wait for 10 ns; CLK <= '0'; wait for 10 ns; end loop; end process; then

2013.01.04.

end BEH;

Keresztes Pter

43

Sorrendi hlzatok tervezse

Huffmann-fle aszinkron hlzatok szimbolikus szintmodellezse

Tervezznk kt-bemenet (X1, X2) sorrendi S ramkrt. A Z kimenet akkor s csakis akkor 1, ha az X1 bemenet elbb ll 1-re, mint az X2. A tervezst vgezzk el a kvetkez llapotot elllt hlzat kzvetlen visszacsatolsval, s S-R trolkkal trtn visszacsatolssal is !

2013.01.04.

Keresztes Pter

44

Clarchitektra

2013.01.04.

Keresztes Pter

45

Sorrendi hlzatok tervezse


Elzetes szimbolikus llapottbla

2013.01.04.

Keresztes Pter

46

A Huffmann fle sorrendi AND specifikcija 1.


entity ASEQ_AND1 is port ( x1, x2 : in bit; z : out bit); end; Architecture DF1 of ASEQ_AND1 is type state_type is (a,b,c,d,e,f,x); signal y : state_type;

2013.01.04.

Keresztes Pter

47

SZEKVENCILIS AND SPECIFIKCI, KONKURRENS UTASTSOKKAL


begin y <= a after 1 ns when (y = a and x2 = '0') b after 1 ns when (y = a and x2 = '1') c after 1 ns when (y = a and x2 = '0') x after 1 ns when (y = a and x2 = '1') . . x after 1 ns; x1 = else x1 = else x1 = else x1 = else '0' and '0' and '1' and '1' and

z <= '1' after 1 ns when y = c and x1 = '1' and x2 = '1' else '1' after 1 ns when y = e and x1 = '1' and x2 = '1' else '0'; end DF1;
2013.01.04. Keresztes Pter 48

SPECIFIKCI PROCESSZUSOKKAL
pr1: process(X1, X2, y) begin if (y = a and X1 = '0' and X2 = y <= a after 1 ns; elsif(y = a and X1 = '0' and X2 y <= b after 1 ns; elsif(y = a and X1 = '1' and X2 y <= c after 1 ns; elsif(y = a and X1 = '1' and X2 y <= x;
. .

'0')

then

= '1')then = '0) then = '1) then

else y <= x after 1 ns; end if; end process; pr2: process(X1, X2, y) begin if y = c and X1 = '1' and X2 = '1'then Z <= '1' after 1 ns; elsif y = c and X1 = '1' and X2 = '1'then Z <= '1' after 1 ns; elsif y = e and X1 = '1' and X2 = '1'then Z <= '0' after 1 ns; end if; end process; 2013.01.04. Keresztes Pter

49

MODELLEZZK VHDL NYELVEN!

2013.01.04.

Keresztes Pter

50

A HUFFMANN-fle hlzatok htrnyai A bemeneti kombincik szalagja kttt Az llapotkdok megvlasztsa a kritikus versenyhelyzetek miatt kttt Az fy hlzatnak statikus hazrdmentesnek kell lennie A lnyeges hazrdok logikai tervezssel nem szntethetk meg Valamennyi htrny a fizikai ksleltetsbl ered. Ezek miatt LSI-VLSI ramkrkben nem hasznlhatk!!!
2013.01.04. Keresztes Pter 51

You might also like