VHDL Synthese

17
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

description

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 - PowerPoint PPT Presentation

Transcript of VHDL Synthese

Page 1: VHDL Synthese

HAN-University

VHDL SyntheseSynthese 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

Page 2: VHDL Synthese

HAN-University 2

Genereren van een netlist met Synthesize – XSTNa 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.

Page 3: VHDL Synthese

HAN-University 3

Wat is wel/niet synthetiseerbaar?

• Verschillende producenten hun SW-tool en marktaandeel (2010):

Producent/organisatie Naam van het systeem

Altera Quartus

Xilinx ISE

Lattice Semiconductor Lattice Diamond

Actel Libero IDE

Cypress PSoC 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.

Page 4: VHDL Synthese

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 vertragingstijden2. initialisatie van variabelen en signalen3. event-driven simulatiemodel4. meerdere wait statements5. datatypen6. sommige rekenkundige bewerkingen

Page 5: VHDL Synthese

HAN-University 5

1 Expliciet 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;

exorOF

1 OF..

Page 6: VHDL Synthese

HAN-University 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:

Page 7: VHDL Synthese

HAN-University 7

3 Effecten 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

ip S V X Y op

1 1 1 1 1 0

0 1 0 1 1 0

0 0 0 1 0 0

0 0 0 0 0 1

0 0 0 0 0 0

Page 8: VHDL Synthese

HAN-University 8

4 Wait statements

*beschrijft een toestandsmachine met flankgevoeligheid.

WAIT UNTIL clk =’1’;(IF ….….)

Wait statement argument Synthetiseerbaar Opmerk.

WAIT FOR tijd NEE Tijdsvertraging is niet synthetiseerbaar

WAIT UNTIL boolean Beperkt Alleen als Boole-aanse uitdrukking*

WAIT ON (a,b) signal NEE/JA Kan wel maar vaak niet toegestaan

WAIT - NEE Gebruikt bij initialiseren van signalen

PROCESS( a,b) Signal list JA

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?

Page 9: VHDL Synthese

HAN-University 9

5 Beschrijvingen 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;

Page 10: VHDL Synthese

HAN-University 10

Packagestandaard std_logic_1164 numeric unsigned

Datatype bitbit_vectorintegernaturalboolean

std_ulogicstd_ulogic_vectorstd_logicstd_logic_vector

signed_vector signedunsigned

Bewerking

logischebewerkingensythetiseerbaar

andornandnornotxor

andornandnornotxorxnor

andornandnornotxorxnor

relationelebewerkingen Synthese afh.van type:IF x < “10X-LZ”

<<==/=>=>&

<<==/=>=>&

<<==/=>=>&

<<==/=>=>&

6 Overzichtslijstje van libs wel/niet synthetiseerbaar:

Page 11: VHDL Synthese

HAN-University 11

6 Overzichtslijstje van libs wel/niet synthetiseerbaar:

Package standaard std_logic_1164

rekenkundigebewerkingen

+-*/ alleenmod door 2rem

+-*/ alleenmod door 2remshlshrextendsign_extend

+-*/ alleenmod door 2remshlshrextend

Niet Synthetiseerbaar

file io, pointers, recursie

Page 12: VHDL Synthese

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

Page 13: VHDL Synthese

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.

Page 14: VHDL Synthese

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

Page 15: VHDL Synthese

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

Page 16: VHDL Synthese

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 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_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;

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.

Page 17: VHDL Synthese

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.