De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

HAN-University VHDL Synthese Synthese is het geautomatiseerd compileren van VHDL beschrijving van een ontwerp naar poorten en libraries. Technische Specificatie.

Verwante presentaties


Presentatie over: "HAN-University VHDL Synthese Synthese is het geautomatiseerd compileren van VHDL beschrijving van een ontwerp naar poorten en libraries. Technische Specificatie."— Transcript van de presentatie:

1 HAN-University VHDL Synthese Synthese is het geautomatiseerd compileren van VHDL beschrijving van een ontwerp naar poorten en libraries. Technische Specificatie Gedragsbeschrijving in VHDL RTL beschrijving in VHDL Combinatorische logica in VHDL Implement design RTL synthese gedrags synthese

2 HAN-University 2 Genereren van een netlist met Synthesize – XST Na design entry en eventuele simulatie kan met Xilinx Synthesis Technology (XST) kan een Xilinx specifieke netlist gegenereerd worden, NGC. The NGC file is een netlist die logische ontwerp data en randvoorwaarden bevat. Deze file is een Xilinx vervanger de algemene EDIF and NCF files.

3 HAN-University 3 Wat is wel/niet synthetiseerbaar? Verschillende producenten hun SW-tool en marktaandeel (2010): Producent/organisatieNaam van het systeem AlteraQuartus XilinxISE Lattice SemiconductorLattice Diamond ActelLibero IDE CypressPSoC designer/creater/programmer 1.Afwijkingen op grensgebieden: bv beschrijving geheugenelement. 2.Producten zijn nog steeds in ontwikkeling → grote verschillen tussen tools. 3.VHDL is geschreven voor documentatie en verificatie.

4 HAN-University 4 Wat is wel/niet synthetiseerbaar In het algemeen: Heb je een idee hoe de hardware er uit zou kunnen zien? Ja → dan is het synthetiseerbaar. Nee → valt de code soms onder een van de volgende categorieën: 1.Expliciet opgegeven vertragingstijden 2.initialisatie van variabelen en signalen 3.event-driven simulatiemodel 4.meerdere wait statements 5.datatypen 6.sommige rekenkundige bewerkingen

5 HAN-University 5 1Expliciet opgegeven vertragingstijden: AFTER clausule a <= b AFTER 10ns; wordt a <= b; dus transport en inertial delay wordt in de netlist terug gebracht tot delta delay beschrijvingen. Wat doet synthese met de onderstaande code? ENTITY puls10ns IS PORT (input : in std_logic; output : out std_logic); END ENTITY puls10ns; ARCHITECTURE met_inertial_delay OF puls10ns IS SIGNAL S1, S2: std_logic; BEGIN S1 <= input AFTER 15ns; S2 <= input AFTER 25ns; Output <= S1 XOR S2; END met_inertial_delay; exor OF 1 OF..

6 HAN-University 6 2Initialisatie van signalen en variabelen: Hoe synthetiseren de volgende statements? signal s1 : std_logic := ’0’; signal s4 : std_logic_vector(3 DOWNTO 0) := “0101”; Hoe kunnen we dit oplossen? Toevoegen van een SET of PRESET aan een schakeling:

7 HAN-University 7 3Effecten van het timingmodel: Wat doet synthese met de volgende code? ARCHITECTURE xor_arch OF xor_entity IS SIGNAL s, x, y : bit; BEGIN s <= input; x <= s; PROCESS(input) variable v : bit; BEGIN v := input; y <= v; END PROCESS; Output <= x XOR y; END xor_entity; Bij de synthese wordt NIET naar delta delays gekeken 1 ipSVXYop

8 HAN-University 8 4Wait statements *beschrijft een toestandsmachine met flankgevoeligheid. WAIT UNTIL clk =’1’; (IF …. ….) Wait statementargumentSynthetiseerbaarOpmerk. WAIT FORtijdNEETijdsvertraging is niet synthetiseerbaar WAIT UNTILbooleanBeperktAlleen als Boole-aanse uitdrukking* WAIT ON (a,b)signalNEE/JAKan wel maar vaak niet toegestaan WAIT-NEEGebruikt bij initialiseren van signalen PROCESS( a,b)Signal listJA PROCESS BEGIN WAIT UNTIL t = ‘1’; s1 <= ‘0’; WAIT UNTIL t = ‘0’; c2 <= ‘1’; WAIT UNTIL t = ‘1’; c2 <= ‘0’; WAIT UNTIL t = ‘0’; s1 <= ‘1’; END PROCESS; Dit is een een process dat op de opgaande en neergaande flank actief zou moeten zijn?

9 HAN-University 9 5Beschrijvingen die vaak niet synthetiseerbaar zijn: Datatypen: zoals bit en integer zijn synthetiseerbaar in tegenstelling tot std_logic. (U, X, 0, 1, Z, W, L, H, -) Welke waarden zijn synthetiseerbaar? 0, 1 en Z Welke worden al don’t care opgevat? U, X, - VHDL is streng getypeerd en kent tussen deze types een groot aantal conversiefuncties: To_bitvector: Std_logic_vector omzetten naar een bit_vector. Typen die voor simulatie handig zijn moeten vaak voor synthese geconverteerd worden naar synthetiseerbare typen Bijvoorbeeld: ARCHITECTURE optel_arch OF optel IS SIGNAL s1, s2, s3, s4, s5: bit_vector(7 downto 0); SIGNAL int1, int2, int3, int4: integer; BEGIN s4 <= s1 + s2;-- gebruik de + functie van bitvectoren int4 <= int1 + int2; -- gebruik standaard + functie van integer s5 <= int3 + s3;-- foutmelding END optel_arch;

10 HAN-University 10 Package standaardstd_logic_1164numericunsigned Datatypebit bit_vector integer natural boolean std_ulogic std_ulogic_vec tor std_logic std_logic_vect or signed_vectorsigned unsigned Bewerking logische bewerkingen sythetiseerba ar and or nand nor not xor and or nand nor not xor xnor and or nand nor not xor xnor relationele bewerkingen Synthese afh. van type: IF x < “10X- LZ” < <= = /= >= > & < <= = /= >= > & < <= = /= >= > & < <= = /= >= > & 6Overzichtslijstje van libs wel/niet synthetiseerbaar:

11 HAN-University 11 6Overzichtslijstje van libs wel/niet synthetiseerbaar: Packagestandaardstd_logic_1164 rekenkundige bewerkingen + - * / alleen mod door 2 rem + - * / alleen mod door 2 rem shl shr extend sign_extend + - * / alleen mod door 2 rem shl shr extend Niet Synthetiseerbaar file io, pointers, recursie

12 HAN-University 12 Synthetiseren tot een combinatorisch of sequentieel proces Combinatorisch proces: logica zonder klok en reset. Sequentieel proces: geheugenelementen met klok en reset. Merk op: met sequentieel in VHDL proces statement wordt wat anders bedoeld: toekenningen in een proces worden achtereenvolgens uitgevoerd. Combinatorisch proces. Synthetiseren tot een combinatorisch of sequentieel proces. Sequentiele schakeling met (a)synchrone reset. Sequentiele schakeling en sensetivitylist. Meer conditionele processen. Concurrent signal assignments. ELSE – clausule

13 HAN-University 13 Wanneer combinatorisch/sequentieel? Wat is het verschil tussen een combinatorisch of sequentieel proces? Combinatorisch proces: logica zonder klok en reset Sequentieel proces: geheugenelementen met klok en reset Merk op: met sequentieel in VHDL proces statement wordt wat anders bedoeld: toekenningen in een proces worden achtereenvolgens uitgevoerd. comb: PROCESS(c,a) BEGIN IF c=’1’ THEN z <= a + ‘1’; ELSE z <= a – ‘1’; END IF; END PROCESS; warning_comb1: PROCESS(c) BEGIN IF c=’1’ THEN z <= a + ‘1’; ELSE z <= a – ‘1’; END IF; END PROCESS warning_comb2: PROCESS(c,a) BEGIN IF c=’1’ THEN z <= a + ‘1’; END IF; END PROCESS; Vuistregel: een combinatorisch proces: 1.moet een sensitivitylist hebben die alle ingangssignalen van het proces bevat. 2.elk signaal/variabele moet een waarde krijgen langs elke mogelijke weg. Fout_comb1: process wordt alleen uitgevoerd als c verandert, suggereert dat c een klok is!! Fout_comb2: else clause ontbreekt, z moet bewaard worden.

14 HAN-University 14 Wanneer levert een sequentieel proces een Flipflop of een Latch? seq_1: PROCESS(c) BEGIN IF c=’1’ THEN z <= a + ‘1’; END IF; END PROCESS; seq_2: PROCESS(c) BEGIN IF c’EVENT AND c=’1’ THEN z <= a + ‘1’; END IF; END PROCESS; seq_3: PROCESS(c,a) BEGIN IF c’EVENT AND c=’1’ THEN z <= a + ‘1’; END IF; END PROCESS; seq_4: PROCESS(c,a) BEGIN IF c=’1’ THEN z <= a + ‘1’; END IF; END PROCESS; seq_1: alleen als c veranderd, impliciet opgaande flank seq_2: alleen als c veranderd, expliciet opgaande flank seq_3: alleen als c veranderd, want verandering in a heeft geen effect seq_4: als c en a veranderen wordt het proces doorlopen

15 HAN-University 15 OPDRACHT: Geef aan van onderstaande schakelingen wat synthese oplevert: FF/Latch/combinatorisch en reset type: synchroon/asynchroon? opdr_1: PROCESS(c,r) BEGIN IF r=’1’ THEN z <= ‘1’; ELSIF c’EVENT AND c=’1’ THEN z <= a; END IF; END PROCESS; opdr_2: PROCESS(c,r) BEGIN IF r=’1’ THEN z <= ‘1’; ELSIF c=’1’ THEN z <= a; END IF; END PROCESS; opdr_3: PROCESS(c) BEGIN IF r=’1’ THEN z <= ‘1’; ELSIF c’EVENT AND c=’1’ THEN z <= a; END IF; END PROCESS; opdr_4: PROCESS(c,r,a) BEGIN IF r=’1’ THEN z <= ‘0’; ELSIF c=’1’ THEN z <= a; END IF; END PROCESS; opdr_1: Sequentiële schakeling van D flip-flops met asynchrone reset. Correct synthetiseerbaar opdr_2: Sequentiële schakeling die latches suggereert (c=’1’), maar ingang a staat niet in de sensitivity list opdr_3: Sequentiële schakeling die Flipflops suggereert (Event attribute op c) waarvan de asynchrone reset geen effect heeft omdat deze niet in de sensitivitylist staat. opdr_4: Sequentiële schakeling met latches, als c en a veranderen wordt het proces doorlopen. Correct synthetiseerbaar

16 HAN-University 16 Geef aan van onderstaande schakelingen wat synthese oplevert: FF/Latch/combinatorisch en reset type: synchroon/asynchroon? opdr_5: PROCESS(c) BEGIN IF c’EVENT AND c=’1’ THEN IF r=’1’ THEN z <= ‘0’; ELSE z <= a; END IF; END PROCESS; opdr_6: PROCESS(c,r,a) BEGIN IF c=’1’ THEN IF r=’1’ THEN z <= “00’’; ELSE z <= a + ‘1’; END IF; END PROCESS; opdr_7: PROCESS(c,r) BEGIN IF c’EVENT AND c=’1’ THEN IF r=’1’ THEN z <= “00’’; ELSE z <= a + ‘1’; END IF; END PROCESS; syn_1: Correct synthetiseerbaar; Levert een sequentiële schakeling van flip-flops met een synchrone reset, waarbij het proces actief word op een verandering in c en dus is de conditie c=’1’ al voldoende. syn_2: Correct synthetiseerbaar; Levert een sequentiële schakeling met latches en geen synchrone reset omdat r en a in de sensitivitylist voorkomen. Syn_3: Correct synthetiseerbaar; Levert een sequentiële schakeling van flip-flops met een synchrone reset, omdat een asyncrone actie van ingang r wordt tegengehouden door de eerste IF statement en zo op c gesynchroniseerd.

17 HAN-University 17 OPDRACHT:Met welke van de voorgaande schakelingen zijn onderstaande sequentiële processen zonder sensitivity list vergelijkbaar? wait_1: Correct synthetiseerbaar; Is equivalent met de schakeling(en): wait_2: Correct synthetiseerbaar; Is equivalent met de schakeling(en): wait_1: PROCESS BEGIN WAIT UNTIL c=’1’; z <= a + ‘1’; END PROCESS; wait_2: PROCESS BEGIN WAIT UNTIL c=’1’; IF r=’1’ THEN z <= “00’’; ELSE z <= a + ‘1’; END IF; END PROCESS; Als een proces geen sensitivitylist heeft moet het minimaal een WAIT- statement hebben. Als het ook synthetiseerbaar moet zijn dan mag dit er maar 1 zijn en moet dit het eerste statement in het PROCESS- statement zijn.


Download ppt "HAN-University VHDL Synthese Synthese is het geautomatiseerd compileren van VHDL beschrijving van een ontwerp naar poorten en libraries. Technische Specificatie."

Verwante presentaties


Ads door Google