HAN-University VHDL Taal beschrijvingen Multivalue logic Functies in VHDL Eigen types definiëren...

7
HAN- University VHDL Taal beschrijvingen Multivalue logic Functies in VHDL Eigen types definiëren Kloksignalen en testbenches

Transcript of HAN-University VHDL Taal beschrijvingen Multivalue logic Functies in VHDL Eigen types definiëren...

Page 1: HAN-University VHDL Taal beschrijvingen Multivalue logic Functies in VHDL Eigen types definiëren Kloksignalen en testbenches.

HAN-University

VHDL Taal beschrijvingen

• Multivalue logic

• Functies in VHDL

• Eigen types definiëren

• Kloksignalen en testbenches

Page 2: HAN-University VHDL Taal beschrijvingen Multivalue logic Functies in VHDL Eigen types definiëren Kloksignalen en testbenches.

2HAN-University

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:

AND0 1 Z

0 0 0 0

1 0 1 1

Z 0 1 1

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

Page 3: HAN-University VHDL Taal beschrijvingen Multivalue logic Functies in VHDL Eigen types definiëren Kloksignalen en testbenches.

3HAN-University

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:

AND U X 0 1 Z W L H -

U U U 0 U U U 0 U U

X U X 0 X X X 0 X X

0 0 0 0 0 0 0 0 0 0

1 U X 0 1 X X 0 1 X

Z U X 0 X X X 0 X X

W U X 0 X X X 0 X X

L 0 0 0 0 0 0 0 0 0

H U X 0 1 X X 0 1 X

- U X 0 X X X 0 X X

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

Page 4: HAN-University VHDL Taal beschrijvingen Multivalue logic Functies in VHDL Eigen types definiëren Kloksignalen en testbenches.

4HAN-University

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.

a <= out1a <= out2

U X 0 1 Z W L H -

U U U U U U U U U U

X U X X X X X X X X

0 U X 0 X 0 0 0 0 X

1 U X X 1 1 1 1 1 X

Z U X 0 1 Z W L H X

W U X 0 1 W W W W X

L U X 0 1 L W L W X

H U X 0 1 H X W H X

- U X X X X X X X X

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

Page 5: HAN-University VHDL Taal beschrijvingen Multivalue logic Functies in VHDL Eigen types definiëren Kloksignalen en testbenches.

5HAN-University

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.

Page 6: HAN-University VHDL Taal beschrijvingen Multivalue logic Functies in VHDL Eigen types definiëren Kloksignalen en testbenches.

6HAN-University

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;

Reset signaal maken:

rst: PROCESS ISBEGIN

reset <= ‘1’;WAIT FOR 5 ns;reset <= ‘0’;WAIT FOR 5ns;

reset <= ‘1’;

WAIT;END PROCESS rst;

Page 7: HAN-University VHDL Taal beschrijvingen Multivalue logic Functies in VHDL Eigen types definiëren Kloksignalen en testbenches.

7HAN-University

Resultaten naar file schrijven: Wegschrijven van stoplicht state met tijd op een regel;

monitor: PROCESS (hoofdweg_groen, zijweg_groen) ISVARIABELE linebuffer : line;

BEGINWrite(linebuffer, NOW)

IF hoofdweg_groen = ‘1’ THENWrite(linebuffer, STRING’(“Hoofdweg is groen)

ELSEWrite(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.