Download de presentatie
1
Het timing model in VHDL
Wat is het effect van verschillende beschrijvingen op een simulatie? Het event-driven simulatie model Timing model stap voor stap EXNOR als voorbeeld Opdracht
2
Het event-driven simulatie model
Wat is hardware eigenlijk? Een verzameling parallelle processen die met elkaar communiceren bv: P1 P2 P3 P4 a b c x y ENTITY 4_processen IS PORT (a,b,c : in std_logic; x,y : out std_logic); END ENTITY 4_processen; ARCHITECTURE parallel OF 4_processen IS BEGIN P1; P2; P3; P4; END parallel; Processen zijn continue: Hoe kun je dat simuleren als je maar 1 processor in je PC hebt? -> Een proces alleen doorrekenen als 1 of meer van de ingangen is veranderd. (denk aan een geklokte schakeling)
3
Wat heb je hiervoor nodig om een event-driven model te kunnen simuleren?
Een mechanisme (een scheduler) die regelt welk proces aan de beurt is om doorgerekend te worden. Een taal met statements om processen te beschrijven: Parallelle constructies: netwerkstructuren (concurrent statements) Sequentiële constructies: gedragsbeschrijvingen (sequential statements) Golfvorm variabele: signalen die de eigenschap van een niet direct reagerende variabele hebben (sig_a <= sig_b). sig_a krijgt de waarde van sig_b na een delta delay. Delta delay: signalen krijgen hun waarde nooit direct, zelfs zonder after clausule, dus: t <= ‘1’; is eigenlijk t <= ‘1’ after delta delay Een vertraging van delta delay heeft de volgende eigenschappen: Verandert de simulatietijd niet. Toekenning nieuwe waarde nadat de simulatiecyclus binnen een proces geheel doorlopen is. Variabele spelen alleen een rol binnen 1 enkel proces en zijn een hulpmiddel om gedrag vast te leggen.
4
Timing model stap voor stap
Gegeven een architectuur met 4 processen: ENTITY 4_processen IS PORT (a,b : in integer; X : out integer); END ENTITY 4_processen; ARCHITECTURE parallel OF 4_processen IS SIGNAL u,v,w : integer; BEGIN P1: u <= f(a); P2: v <= g(u); P3: w <= h(v) AFTER 5 ns; P4: x <= k(w,b) AFTER 2 ns; END parallel; a b P1 u P2 v P3 w x P4 Op t0 veranderen de signalen a en b van waarde. Wat gebeurt er nu met de signalen u,v,w en x? Ga er hierbij vanuit dat elk proces pas een veranderende uitgangswaarde krijgt als de ingangswaarde veranderd.
5
Timing model stap voor stap (vervolg)
a en b veranderen: u en x worden ge-scheduled. Dus proces P1 en P4 worden getriggerd door a en b, ui en xi worden als een transactie op de tijdas gezet u krijgt nieuwe waarde ui en triggert proces P2 die vi als transactie op de tijdas zet v krijgt nieuwe waarde en triggert proces P3, wi op tijdas signaal x krijgt nieuwe waarde, geen processen getriggerd signaal w krijgt nieuwe waarde, P4 getriggert en xi+1 op tijdas signaal x krijgt nieuwe waarde: xi+1, geen transacties meer Cyclus Tijd Proces u v w x 1 t0 P1, P4 ui-1, {ui,δ} vi-1 wi-1 xi-1, {xi,2 ns} 2 t0 + δ P2 ui vi-1, {vi,δ} 3 t0 + 2δ P3 vi wi-1, {wi,5 ns} 4 t0 + 2 ns - wi-1, {wi,3 ns} xi 5 t0+ 5 ns P4 wi xi, {xi+1,2 ns} 6 t0+ 7 ns xi+1 OPDRACHT: Teken het timingdiagram van a,b,u,v,w en x.
6
Timing model stap voor stap: voorbeeld
Gegeven de architectuur met 4 processen waarvoor geldt: f(a) = a, g(u) = u, h(v) = v AFTER 5ns, k(w,b) = w OR b AFTER 3ns. u a b P1 ENTITY 4_processen IS PORT (a,b : in bit; X : out bit); END ENTITY 4_processen; ARCHITECTURE parallel OF 4_processen IS SIGNAL u,v,w : bit; BEGIN P1: u <= a; P2: v <= u; P3: w <= v AFTER 5 ns; P4: x <= w OR b AFTER 2 ns; END parallel; P2 v P3 w x P4 v u b a w x δ 2δ 2 4 6 8 s = Transactie Transactie: nieuwe signaalwaarde met tijdsaanduiding Event: Transactie die resulteert in verandering van de signaalwaarde.
7
Opdracht: Schedule de timing van een EXNOR, gegeven de timing van ingangen a en b.
De dataflow beschrijving van een EXNOR bestaande uit 5 parallelle signaal toewijzingen: dus 5 concurrent statements: ns δ a b na nb x y f 0.0 (0) 1 ENTITY 5_processen IS PORT (a,b : in bit; f : out bit); END ENTITY 5_processen; ARCHITECTURE parallel OF 5_processen IS SIGNAL na,nb,x,y : bit; BEGIN na <= NOT a AFTER 1.2 ns; nb <= NOT b AFTER 1.2 ns; x <= a AND b AFTER 1.2 ns; y <= na AND nb AFTER 1.2 ns; f <= x OR y AFTER 1.2 ns; END parallel; Elk statement heeft een after clausule dus er zijn geen delta events zonder simulatietijd verhoging! a b na nb x y f 10 20 30 40 50 ns
8
Opdracht: Schedule de timing van een EXNOR, gegeven de timing van ingangen a en b.
De dataflow beschrijving van een EXNOR bestaande uit 5 parallelle signaal toewijzingen: dus 5 concurrent statements: ns δ a b na nb x y f 0.0 (0) 1.2 1 2.4 2 3.6 3 10.0 4 11.2 5 12.4 6 13.6 7 20.0 8 21.2 9 30.0 10 31.2 11 32.4 12 40.0 13 41.2 14 42.4 15 43.6 16 ENTITY 5_processen IS PORT (a,b : in bit; f : out bit); END ENTITY 5_processen; ARCHITECTURE parallel OF 5_processen IS SIGNAL na,nb,x,y : bit; BEGIN na <= NOT a AFTER 1.2 ns; nb <= NOT b AFTER 1.2 ns; x <= a AND b AFTER 1.2 ns; y <= na AND nb AFTER 1.2 ns; f <= x OR y AFTER 1.2 ns; END parallel; Elk statement heeft een after clausule dus er zijn geen delta events zonder simulatietijd verhoging! a b na nb x y f 10 20 30 40 50 ns
9
Maak de volgende opdrachten in modelsim met de scheduler.
Bepaal de simulatieresultaten in tabel vorm voor de onderstaande twee beschrijvingen van een EXNOR: ENTITY exnor IS PORT (a,b : in bit; f : out bit); END ENTITY exnor; ARCHITECTURE parallel OF exnor IS SIGNAL na,nb,x,y : bit; BEGIN na <= NOT a; nb <= NOT b; x <= a AND b; y <= na AND nb; f <= x OR y AFTER 3.6 ns; END parallel; 10 20 30 40 50 ns f y x b a na nb ENTITY exnor IS PORT (a,b : in bit; f : out bit); END ENTITY exnor; ARCHITECTURE sequential OF exnor IS BEGIN VARIABLE na,nb,x,y : bit; PROCESS(a,b) na := NOT a; nb := NOT b; x := a AND b; y := na AND nb; f <= x OR y AFTER 3.6 ns; END PROCESS; END sequential; 10 20 30 40 50 ns f y x b a na nb Er staat op Scholar ook het invulblad EXNOR waarmee je deze opdracht kan doen.
10
Beschrijving van EXNOR die onjuiste functionele simulatie geeft:
De gedrags beschrijving van een EXNOR bestaande uit 5 sequentiele signaal toewijzingen: dus 5 signal assigments binnen 1 proces: ENTITY 1_proces IS PORT (a,b : in bit; f : out bit); END ENTITY 1_proces; ARCHITECTURE sequential OF 1_proces IS SIGNAL na,nb,x,y : bit; BEGIN PROCESS(a,b) na <= NOT a AFTER 1.2 ns; nb <= NOT b AFTER 1.2 ns; x <= a AND b AFTER 1.2 ns; y <= na AND nb AFTER 1.2 ns; f <= x OR y AFTER 1.2 ns; END PROCESS; END sequential; a Levert de volgende timing op b na nb x y f 10 20 30 40 50 ns 1 proces betekent dat bij een verandering van a of b slechts 1 maal de simulatiecyclus doorlopen wordt. Nieuwe waarden voor na, nb, x, y, en f worden berekent met de huidige waarden van a, b, na, nb, x, en y, en pas op de tijdas gezet als het proces getriggerd wordt door a of b. Over het algemeen moet je er voor zorgen dat er binnen een proces geen afhankelijke signaal toewijzingen voor komen. Hoe kun je dit probleem toch verhelpen?
11
In VHDL zijn 3 typen tijdvertraging toe te passen:
Delta event, δ: Impliciete definitie van 0 seconde simulatietijd om timingmodel van signaal te modeleren. AFTER <timing> clausule: Expliciete definitie van de modelering van bepaalde simulatietijd om poortafhankelijke timingmodel te modeleren. Transport delay (sig_c <= TRANSPORT sig_a AFTER 5ns) : waarbij alle signaalveranderingen worden doorgegeven. nadat de transitie {1, 5ns} op de tijdas van de scheduler is gezet zal een volgende transitie die 2 ns later komt, {0, 1ns} , erbij gezet worden. sig_a sig_b sig_c 0 ns ns ns ns ns sig_a <= ‘1’ after 3 ns, ‘0’ after 2 ns; sig_b <= sig_a after 5 ns; sig_c <= transport sig_a after 5 ns; Wanneer gebruik je TRANSPORT delay?
12
Conclusies event-driven simulatie.
1. Parallelle (hardware) processen worden alleen doorgerekend als de ingangswaarden veranderen 2. Parallelle taal constructies (concurrent statements)gebruik je om netwerkstructuren te beschrijven → architecture 3. Sequentiële taal constructies (sequentiële statements) gebruik je om gedrag te beschrijven. → process 4. := Directe of variabele toewijzing (doel = waarde) 5. <= Signaal toewijzing (doel = waarde na tijdvertraging) 6. Simulatiecyclus: Ronde waarin alle (getriggerde) processen worden doorgerekend 7. Delta delay, δ: oneindig kleine tijdvertraging waarin de simulatiecyclus helemaal doorlopen moet zijn voordat nieuwe waarden aan signalen kunnen worden toegekend. 8. Er zijn 4 expliciete WAIT statements: - WAIT FOR 2 us; - WAIT UNTIL <boolean expressie>; - WAIT ON < sensitivity list>; - WAIT; 9. Impliciete wait statement: process(a,b) 10. Er zijn 3 soorten tijdvertraging: - Delta delay: toekenning 1 simulatiecyclus later - Inertial delay: ‘after clausule’, modelleren tijdsvertraging van logische poorten - Transport delay: Alle veranderingen, hoe kort dan ook, worden doorgegeven.
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.