1 / 17

VHDL Synthese

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

jock
Download Presentation

VHDL Synthese

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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. Wat is wel/niet synthetiseerbaar? • Verschillende producenten hun SW-tool en marktaandeel (2010): 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. 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. 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? exor OF OF.. 1 1 Expliciet opgegeven vertragingstijden: 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;

  6. 2 Initialisatie 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. 1 3 Effecten van het timingmodel: 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; Wat doet synthese met de volgende code? Bij de synthese wordt NIET naar delta delays gekeken

  8. 4 Wait statements *beschrijft een toestandsmachine met flankgevoeligheid. WAIT UNTIL clk =’1’; (IF …. ….) 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. 5 Beschrijvingen die vaak niet synthetiseerbaar zijn: Welke waarden zijn synthetiseerbaar? • 0, 1 en Z Datatypen: zoals bit en integer zijn synthetiseerbaar in tegenstelling tot std_logic. (U, X, 0, 1, Z, W, L, H, -) 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. 6 Overzichtslijstje van libs wel/niet synthetiseerbaar:

  11. 6 Overzichtslijstje van libs wel/niet synthetiseerbaar:

  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. 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; Fout_comb1: process wordt alleen uitgevoerd als c verandert, suggereert dat c een klok is!! Fout_comb2: else clause ontbreekt, z moet bewaard worden. 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.

  14. Wanneer levert een sequentieel proces een Flipflop of een Latch? 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: PROCESS(c) 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. OPDRACHT: Geef aan van onderstaande schakelingen wat synthese oplevert: FF/Latch/combinatorisch en reset type: synchroon/asynchroon? opdr_4: PROCESS(c,r,a) BEGIN IF r=’1’ THEN z <= ‘0’; 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_2: PROCESS(c,r) BEGIN IF r=’1’ THEN z <= ‘1’; ELSIF c=’1’ THEN z <= a; END IF; END PROCESS; 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_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. Geef aan van onderstaande schakelingen wat synthese oplevert: FF/Latch/combinatorisch en reset type: synchroon/asynchroon? 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 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 IF; END PROCESS; opdr_5: PROCESS(c) BEGIN IF c’EVENT AND c=’1’ THEN IF r=’1’ THEN z <= ‘0’; ELSE z <= a; END IF; 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. OPDRACHT:Met welke van de voorgaande schakelingen zijn onderstaande sequentiële processen zonder sensitivity list vergelijkbaar? 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. wait_1: PROCESS BEGIN WAIT UNTIL c=’1’; z <= a + ‘1’; END PROCESS; wait_1: Correct synthetiseerbaar; Is equivalent met de schakeling(en): wait_2: Correct synthetiseerbaar; Is equivalent met de schakeling(en):

More Related