1 / 7

VHDL Taal beschrijvingen

VHDL Taal beschrijvingen. Multivalue logic Functies in VHDL Eigen types definiëren Kloksignalen en testbenches. Multivalue logic.

tarala
Download Presentation

VHDL Taal beschrijvingen

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. VHDL Taal beschrijvingen Multivalue logic Functies in VHDL Eigen types definiëren Kloksignalen en testbenches

  2. Multivalue logic Het overloaden van functies en operatoren: uitbreiden van aantal mogelijke signaalwaarden naast ‘0’ en ‘1’. Doel: meer informatie geven over de signaaltoestand tijdens simulatie. Voorbeeld: AND poort met hoog impedante ingangen: De waarheidstabel is: Hoe beschrijf je dit in VHDL? TYPE tri IS (‘0’, ‘1’,’Z’); FUNCTION “AND” (left, right: tri) RETURN tri IS TYPE tri_array IS ARRAY (tri, tri) OF tri; CONSTANT and_table : tri_array := ((‘0’,’0’,’0’), (‘0’,’1’,’1’), (‘0’,’1’,’1’)); BEGIN RETURN and_table (left, right); END FUNCTION “AND”;

  3. STD_ULOGIC type IEEE 1164: standaard die 9 mogelijke waarden en bij behorende functies beschrijft: TYPE std_ulogic IS (‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’, ‘-‘); ‘U’ Unitialized ‘X’ geforceerde onbekende ‘0’ geforceerde 0 ‘1’ geforceerde 1 ‘Z’ hoge impedantie ‘W’ zwakke onbekende ‘L’ zwakke 0 ‘H’ zwakke 1 ‘-‘ don’t care AND waarheids tabel voor std_ulogic type: • Met std_ulogic mag maar 1 waarde aan een signaal worden toegekend. Dus 1 source (out, inout, buffer, driver) • Meerder sources op signaal (bv uitgangen van tri state buffer) kan alleen met std_logic

  4. Multiple outputs • Std_logic staat toe dat meerdere outputs aan een signaal verbonden worden • Std_logic kan gedefinieerd worden als een subtype van std_ulogic omdat het slechts een uitbreidende functie is en de signaalwaarden niet veranderd. Wat gebeurt er als a <= ‘0’, en a <=’1’ , bij std_logic? En bij std_ulogic? Alles bevindt zich in een gecompileerde package waarvan een library IEEE is gemaakt, de standaard die je hieruit wil gebruiken is std_logic: declareren voor elke entity, geldt dan ook voor alle bijbehorende architectures. LIBRARY IEEE; USE IEEE.std_logic_1164.all OPDRACHT: Schrijf functie voor AND poort met 4 value logic(0 ,1, Z, X) waarvoor geldt (met afnemende prioriteit): 1 of meer inputs 0 geeft output 0, 1 of meer inputs X geeft output X

  5. Eigen types definiëren VHDL staat de gebruiker toe om eigen types te definiëren: enumerated (opsomming) types. ARCHITECTURE gedrag OF processor IS TYPE my_state(reset, idle, dma_cycle, int_cycle); … SIGNAL state, next_state : my_state; SIGNAL two_bit : STD_LOGIC_VECTOR(1 DOWNTO 0); … BEGIN … state <= reset; // correct state <= 00; // NIET correct state <= two_bit; // NIET correct … END gedrag; Kun je dit wel implementeren? Synthese tools bieden wel de mogelijkheid om enumerated types te mappen naar een bitpatroon.

  6. Klok signaal maken: Concurrent: clock <= NOT clock AFTER 10ns; Werkt alleen als clock van type bit is, anders initialiseren: SIGNAL clock : std_logic := ‘0’; Process: clk: PROCESS IS BEGIN Clock <= ‘0’; WAIT FOR 10 ns; Clock <= ‘1’; WAIT FOR 10ns; END PROCESS clk; rst: PROCESS IS BEGIN reset <= ‘1’; WAIT FOR 5 ns; reset <= ‘0’; WAIT FOR 5ns; reset <= ‘1’; WAIT; END PROCESS rst; Reset signaal maken:

  7. Resultaten naar file schrijven: Wegschrijven van stoplicht state met tijd op een regel; monitor: PROCESS (hoofdweg_groen, zijweg_groen) IS VARIABELE linebuffer : line; BEGIN Write(linebuffer, NOW) IF hoofdweg_groen = ‘1’ THEN Write(linebuffer, STRING’(“Hoofdweg is groen) ELSE Write(linebuffer, STRING’(“Zijweg is groen) END IF; Writeline(output, linebuffer) END PROCESS; OPDRACHT: maak een testbench die klok synchroon een 4 bits teller signaal genereert als output. De klok is 2 MHz en de output ijlt 100ns na op de klok.

More Related