De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

HAN-University Inleiding tot VHDL, 2010 Bron: Fraunhofer for Integrated Circuits.

Verwante presentaties


Presentatie over: "HAN-University Inleiding tot VHDL, 2010 Bron: Fraunhofer for Integrated Circuits."— Transcript van de presentatie:

1 HAN-University Inleiding tot VHDL, 2010 Bron: Fraunhofer for Integrated Circuits

2 HAN-University 2 Waarom de taal VHDL (VHSLI High Description Language? Doel van de Inleiding tot VHDL Boek: Digital System Design, Zwolinski PP: Scholar Onderwerpen: RTL design flow Basisconcept VHDL Entity en Architectuur Typen Architectuur beschrijvingen Combinaties van typen beschrijvingen: D-Flipflop Testbenches in VHDL

3 HAN-University Krachtig hulpmiddel bij het ontwerpen van digitale schakelingen: oVastleggen specificaties ontwerp. oSystematische opdeling van ontwerp. oTaal onafhankelijk van technologie. oKunt je eigen ontwerpmethoden kiezen: bottom up/top down. oAllerlei ontwerpstrategien zijn mogelijk: syncroon, asyncroon, PLA, poorten. oHet is een IEEE gestandaardiseerde taal o“Leesbare” taal. Lijkt op C++/ Waarom de taal VHDL? Automatisering: Eletronic Design Automation (EDA) oSynthesis: vertaling van specificaties naar een implementatie in logic gates oSimulatie: checken op goede werking VHDL staat voor: VHSIC-HDL en dat staat voor: Very High Speed Integrated Circuit - High Description Language

4 HAN-University 4 RTL (Register Transfer Level) Design Flow Implementatie VHDL RTL beschrijvingen RTL simulatie VHDL testbench RTL synthese Structural VHDL Structural simulatie EDIF netlist Place and route back annotation SDF timing information Timing simulatie

5 HAN-University 5 Basisconcept VHDL Entity en Architectuur Een design unit van een digitaal systeem bestaat uit een: 1) Entity: Geeft de in- en uitgangs relatie van het systeem met zijn omgeving. abcabc y ENTITY entitynaam IS een portlist met in- en uitgangen eventueel een genericlist met fysische en andere parameters END entitynaam 2) Architecture: Geeft een mogelijke implementatie van het systeem. abcabc y & ARCHITECTURE architecturenaam OF entitynaam IS declaraties BEGIN een functionele specificatie van het systeem END architecturenaam

6 HAN-University 6 Voorbeelden AND poort ENTITY and_poort IS PORT (a, b: IN STD_LOGIC := '0'; x: OUT STD_LOGIC := '0' ); END ENTITY ; ARCHITECTURE gedrag OF and_poort IS BEGIN x <= a AND b; END;

7 HAN-University 7 Typen Architectuur beschrijvingen 1. Gedragsbeschrijving: “Wat doet het systeem?” Het gaat hier vaak om grotere systemen en beschrijft wat de verschillende onderdelen van het systeem achtereenvolgens moeten doen (proces). ENTITY crc_model IS PORT (clk: in STD_LOGIC := '0'; bitstroom: in STD_LOGIC := '0'; crc: out STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000"); END ENTITY crc_model; ARCHITECTURE gedrag OF crc_model IS BEGIN signalq: STD_LOGIC_VECTOR(3 DOWNTO 0) := "0000"; PROCESS Begin IF clk’EVENT AND clk = ‘1’ THEN q <= q(2 downto 0) & (bitstroom XOR q3); END IF; End PROCESS crc <= q; END gedrag;

8 HAN-University 8 Typen Architectuur beschrijvingen (vervolg) 2Structuurbeschrijving: “Uit welke componenten bestaat het systeem?” Als het gaat om nauwkeurige tijdsimulaties kun je de onderdelen als component met vastgelegde eigenschappen aanroepen (instantiëren) binnen de architectuur. ARCHITECTURE structuur OF crc-model IS signaal declaraties: de verbindingen (signalen) tussen de losse blokjes: a, q0 etc… Component declaraties: de te gebruiken losse blokjes (modules) NIET NOODZAKELIJK MEER Component configuraties: als er meerdere gecompileerde versies in de WORK directory beschikbaar zijn BEGIN Component instantiaties: L0:xor_poort PORT MAP (x => bitstroom, y => q3, z => a); L1: f_flop PORT MAP(D =>a, clk=> sys_clk, q =>q0); L2: f_flop PORT MAP(D =>q0, clk=> sys_clk, q =>q1); L3: f_flop PORT MAP(D =>q1, clk=> sys_clk, q =>q2); L4: f_flop PORT MAP(D =>q2, clk=> sys_clk, q =>q3); END structuur;

9 HAN-University 9 Typen Architectuur beschrijvingen (vervolg) 3. Dataflowbeschrijving: “HOE is het systeem opgebouwd?” kenmerkt zich door een aantal parallelle signaaltoewijzingen en beschrijft meestal een logisch netwerk entity crc_model is port (clk: in std_logic := '0'; bitstroom:in std_logic := '0'; crc: out std_logic_vector(3 DOWNTO 0) := "0000"); end entity crc_model; architecture dataflow of crc_model is signalq:std_logic_vector(3 DOWNTO 0) := "0000"; begin process begin wait until clk = '1'; q(0) <= bitstroom XOR q(3); q(1) <= q(0); q(2) <= q(1); q(3) <= q(2); end process; crc <= q; end architecture dataflow;

10 HAN-University 10 Gedragsbeschrijving van een fulladder Grafische representatie van de entity van een fulladder en de specificatie in tabelvorm: abccarryoutsum 00000 00101 01001 01110 10001 10110 11010 11111 fulladder abcabc sum carryout ENTITY fulladder IS PORT(a,b,c: IN bit; s, co OUT bit); END fulladder;

11 HAN-University 11 Gedragsbeschrijving van een fulladder (vervolg) Architecture met gedrag_1 is niet beter of slechter dan gedrag_2 maar het verschil zit ‘m in de benadering van het probleem. Simulatie resultaten zijn identiek. ARCHITECTURE gedrag_1 OF fulladder IS BEGIN PROCESS VARIABLE x : bit_vector(2 downto 0); BEGIN x := abc; CASE x IS WHEN “000” => co <= ‘0’; s <=’0’; WHEN “001” => co <= ‘0’; s <=’1’; WHEN “010” => co <= ‘0’; s <=’1’; WHEN “011” => co <= ‘1’; s <=’0’; WHEN “100” => co <= ‘0’; s <=’1’; WHEN “101” => co <= ‘1’; s <=’0’; WHEN “110” => co <= ‘1’; s <=’0’; WHEN “111” => co <= ‘1’; s <=’1’; END CASE; END PROCESS; END gedrag_1; ARCHITECTURE gedrag_2 OF fulladder IS BEGIN PROCESS VARIABLE num_int : integer; VARIABLE num_bit : bit_vector(1 downto 0); BEGIN num_int := bin2int(a)+ bin2int(b)+ bin2int(c); num_bit := int2bin(num_int, num_bit’length); s <= num_bit(0); co <= num_bit(1); END PROCESS; END gedrag_2

12 HAN-University Dataflowbeschrijvingen van een fulladder Parallelle signal toewijzingen die gelijktijdig worden uitgevoerd. De volgorde van de statements binnen de architectuur is niet belangrijk. Bovenstaande beschrijvingen zijn identiek wat betreft simulatie maar de logische netwerken zijn verschillend kunnen zijn: Laat zien!!!! ARCHITECTURE dataflow_1 OF fulladder IS BEGIN co <= (a AND b) OR (b AND c) OR (a AND c); s <= (a XOR b) XOR c; END dataflow_1; ARCHITECTURE dataflow_2 OF fulladder IS SIGNAL p, g, t : BIT; BEGIN s <= p XOR c; co <= g OR t; t <= p AND c; p <= a XOR b; g <= a AND b; END dataflow_2

13 HAN-University 13 Structuurbeschrijvingen van een fulladder Eerst componenten beschrijven voor bibliotheek met functioneel en dynamisch gedrag: ENTITY and2 IS PORT(i1, i2: IN bit; o1: OUT bit); END and2; ARCHITECTURE dataflow OF and2 IS BEGIN o1 <= i1 AND i2 AFTER 5 ns; END dataflow; ENTITY or3 IS PORT(i1, i2, i3: IN bit; o1: OUT bit); END or3; ARCHITECTURE dataflow OF or3 IS BEGIN o1 <= i1 OR i2 OR i3 AFTER 6 ns; END dataflow; ENTITY xor2 IS PORT(i1, i2: IN bit; o1: OUT bit); END xor2; ARCHITECTURE dataflow OF xor2 IS BEGIN o1 <= i1 XOR i2 AFTER 7 ns; END dataflow; Met de entities kunnen we een structuur-beschrijving maken. Deze zijn dan onderdelen van de structuur. Entities heten dan componenten waaruit het ontwerp bestaat.

14 HAN-University 14 Structuurbeschrijving van een fulladder (vervolg) In VHDL_93 is de component declaratie niet meer verplicht. De component configuratie natuurlijk wel!! De component configuratie kan ook buiten de architectuur gedefinieerd worden een. Structuurbeschrijving vervangt binnen EDA vaak netlisten en kunnen uit dataflow/gedrags beschrijvingen gegenereerd worden maar ook uit schematic capture. ARCHITECTURE structuur OF fulladder IS Component declaraties (alleen verplicht bij VHDL_87): COMPONENT and2 PORT(i1, i2: IN bit; o1 OUT bit); END COMPONENT; COMPONENT or3 PORT(i1, i2, i3: IN bit; o1 OUT bit); END COMPONENT; COMPONENT xor2 PORT(i1, i2: IN bit; o1 OUT bit); END COMPONENT; Component configuraties: FOR c0, c1, c2: and2 USE ENTITY work.and2(dataflow) FOR c3 : or3 USE ENTITY work.or3(dataflow) FOR c4, c5 : xor2 USE ENTITY work.xor2(dataflow) SIGNAL w1, w2, w3, w4: bit; BEGIN Component instantiaties: c0: and2 PORT MAP (a, b, w2); c1: and2 PORT MAP (a, c, w3); c2: and2 PORT MAP (b, c, w4); c3: or3 PORT MAP (w2, w3, w4, co); c4: xor2 PORT MAP (a, b, w1); c5: xor2 PORT MAP (w1, c, s); END structuur;

15 HAN-University 15 Combinaties van typen beschrijvingen: D- Flipflop Verschillende beschrijvingen binnen 1 architectuur zijn ook mogelijk. Een voorbeeld is de beschrijving voor een D-Flipflop. ENTITY d_flipflop IS PORT(clk, d: IN bit; q, qn: OUT bit); END d_flipflop; ARCHITECTURE gedrag OF d_flipflop IS SIGNAL state: bit; BEGIN PROCESS (clk): BEGIN IF clk = 1 THEN State <= d; END IF; END PROCESS; q <= state; qn <= NOT state; END gedrag; Dit noem je een gedragsbeschrijving omdat voornamelijk gesteld wordt WAT de schakeling doet en niet HOE deze is opgebouwd

16 HAN-University 16 Testbench voor een fulladder OPDRACHT: Maak een timingdiagram van de signalen a, b en c. ARCHITECTURE test_for_fulladder OF testbench IS COMPONENT fulladder PORT(a, b, c: IN bit; s, co OUT bit); END COMPONENT; FOR UUT: fulladder USE ENTITY work.fulladder(structuur) SIGNAL a, b, c, s, co: bit; BEGIN a <= ‘0’, ‘1’ AFTER 50 ns; ‘0’ AFTER 100 ns, ‘1’ AFTER 150 ns; ‘0’ AFTER 200 ns, ‘1’ AFTER 250 ns; ‘0’ AFTER 300 ns, ‘1’ AFTER 350 ns; b <= ‘0’, ‘1’ AFTER 100 ns; ‘0’ AFTER 200 ns, ‘1’ AFTER 300 ns; c <= ‘0’, ‘1’ AFTER 200 ns; UUT: fulladder PORT MAP (a, b, c, s, co) END test_for_fulladder;


Download ppt "HAN-University Inleiding tot VHDL, 2010 Bron: Fraunhofer for Integrated Circuits."

Verwante presentaties


Ads door Google