Está en la página 1de 8

TEMA 4: Lenguaje VHDL

Introduccin
q

Contenidos:
t Introduccin t Elementos bsicos Objetos Tipos Operadores t Estructura de un fichero VHDL Entidad Arquitectura t Descripcin de circuitos digitales Combinacionales Secuenciales t Simulacin: entornos de test

Qu significa VHDL?
t VHDL=VHSIC Hardware Description Language t VHSIC=Very High Speed Integrated Circuits

Estndar IEEE 1076 (Institute of Electrical and Electronics Engineering) desde 1987
t Portabilidad entre herramientas y plataformas

Descripcin de circuitos digitales


t Simulacin. Reproducir el funcionamiento del circuito t Sntesis. Transformar descripcin VHDL en un netlist de puertas de una tecnologa dada (CPLD, FPGA)

Codificar pensando en puertas y FFs, no en variables y funciones:


t Disear circuitos sncronos con nico reloj y flanco t Evitar bucles combinacionales, latches y reloj condicionado

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 1

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 2

Elementos Bsicos
q

Elementos Bsicos: Tipos


q

Objetos
t Contienen valores t Los objetos pertencen a una clase y tienen un tipo

Tipos.
t Se caracteriza por un conjunto de valores que puede tener y un conjunto de operaciones

q q

Clases de objetos:
t Constant. Se les asigna un valor inicial que no puede ser modificado t Variable. Contiene un valor que puede ser cambiado t Signal. Contiene una lista de valores que incluye el valor actual y un conjunto de valores futuros. t File. Modelan ficheros y se utilizan en testbenchs.

VHDL es un lenguaje fuertemente tipado:


t Todos los objetos tienen un tipo t No se puede conectar seales que no son del mismo tipo t Se pueden crear nuevos tipos

Los objetos se crean en la declaracin


Signal a: bit; -- especifica clase y tipo

Seales vs. Variables


t Ambas se sintetizan en cables que interconectan componentes o FFs t Tiene semntica de simulacin distinta t Es recomendable usar seales para la descripcin de hardware

Tipos definidos en el lenguaje:


t Boolean. Tipo predefinido en IEEE 1076. type boolean is (FALSE, TRUE);

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 3

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 4

Elementos Bsicos: Tipos


t Integer. Tipo predefinido en IEEE 1076 Rango (-231,231-1) 32 bits en complemento a 2 Si no se acota el rango se sintetizan 32 bits:
Signal a: integer range 0 to 7; -- se sintetizan 3 bits

Elementos Bsicos: Tipos


t Enumerados: lista explcita de identificadores. Los hay predefinidos: bit, boolean Los puede definir el usuario, se utilizan en la descripcin de MEFs
Type state is (S0, S1, S2); Por defecto codificacin binaria: S0="00", S1="01", S2="10"

t Bit. Tipo predefinido en IEEE 1076 type bit is ('0', '1'); No es posible describir salidas triestado t Std_logic. Tipo definido en librera IEEE 1164 Para utilizarlo:
library ieee; use ieee.std_logic_1164.all;

t Matriciales Mltiples elementos del mismo tipo Una o ms dimensiones y acceso indexado
Type table8x4 is array (0 to 7, 0 to 3) of bit;

Los hay predefinidos en los estndar IEEE 1076 y 1164


Type bit_vector is array (natural range <>) of bit; Type std_logic_vector is array (natural range <>) of std_logic; El nmero de elementos se especifica al declarar una seal de dicho tipo: Signal C: bit_vector(7 downto 0);
Universidad de Zaragoza, IEC. Dispositivos digitales. PLDs - 6

Lgica multivaluada. 9 valores=('U', 'X', '0', '1', 'Z', 'W', 'L', 'H', '-')
'U'=desconocido (simulacin); 'X'=cortocircuito (simulacin); 'Z'=HiZ ; '-'=dont care, se sintetiza en '0' o '1'.
Universidad de Zaragoza, IEC. Dispositivos digitales. PLDs - 5

Elementos Bsicos: Tipos


t Bit_vector, std_logic_vector Se suelen utilizar para describir buses Indexacin:
Signal A: bit_vector(0 to 7); Signal B: bit_vector(7 downto 0); A<="00110101"; -- A(7)= '1' B<="00110101"; -- B(7)= '0'

Operadores
q

Se definen sobre los tipos de datos predefinidos, aunque se pueden sobrecargar

package std_logic_arith package std_logic_unsigned package std_logic_signed = ARITMTICOS + * / mod rem ** abs
Universidad de Zaragoza, IEC.

/=

RELACIN < > <=

>=

Preferible usar downto, MSB es el de ms a la izquierda (HW) Asignacin de valor


Elemento: B(3) <= '0'; -- comilla simple Segmento: B(3 downto 0)<="0101"; -- comillas dobles

DESPL. sll srl sla sra rol ror

LGICOS AND OR NAND NOR XOR NOT

SIGN O:

ASIGNACIN :

<=

:=

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 7

Dispositivos digitales. PLDs - 8

Estructura de un fichero VHDL


q

Declaracin de entidad
q

Libreras
t La librera estndar es siempre visible t Si se van a utilizar otras libreras, las declaraciones y funciones en ellas definidas se pueden importar: Design Entity Library ieee; Use ieee.std_logic_1164.all; Libreras

Se especifica el nombre de la entidad y el interfaz con su entorno (puertos)


t Visin de caja negra (encapsulado) t Los puertos son seales y su declaracin es implcita
-- Declara el nombre de la entidad, -- los puertos de entrada y salida, los -- modos y los tipos de dichos puertos entity E1 is port (A, B, C, D : in BIT; M, N, P, Q : out BIT); end E1; Nombres Modos Tipos

A B C D

Declaracin de entidad
t Especifica el interfaz del circuito

M N P Q

Entity Declaration

Arquitectura
t Descripcin interna del circuito Comportamental Estructural Mezcla

Architecture Body

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 9

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 10

Modo de un puerto
q

Arquitectura
q

El modo define la direccin del flujo de datos del puerto visto desde la entidad. Puede ser:
t t t t IN, entrada dedicada, slo pueden ser ledos en la arquitectura OUT, salida dedicada, slo se les puede asignar valor en la arquitectura BUFFER, salida dedicada, pero puede ser ledo en la arquitectura INOUT, bidireccional
IN OUT BUFFER

Contiene la descripcin interna de la entidad


t La descripcin de la arquitectura se compone de un conjunto de sentencias concurrentes que se ejecutan de forma asncrona entre s y se comunican mediante seales t Estilos de modelado: Comportamental
Alto nivel de abstraccin (if-then-else) Ecuaciones booleanas
architecture mi_arq of E1 is -- Declaracin de items que sern -- utilizados dentro del cuerpo de -- la arquitectura -- Los nombres de los puertos y -- genricos no requieren ser -- declarados begin -- Instrucciones Concurrentes -- El orden textual no importa -- ya que se ejecutan en paralelo end mi_arq;
Dispositivos digitales. PLDs - 12

Estructural: conexin de componentes


Design Entity Entity Declaration

IN

INOUT

Architecture Body

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 11

Universidad de Zaragoza, IEC.

Estilos de modelado
q

Estilos de modelado
q

Nombre y pines de la entidad


4 A AeqB

Descripcin comportamental
t Ec. booleanas

comp4
4 B

entity comp4 is port (A, B: in bit_vector(3 downto 0); AeqB: out bit); end comp4;
q

architecture behcomp4 of comp4 is begin AeqB <= not (A(0) xor B(0)) and not (A(1) xor B(1)) and not (A(2) xor B(2)) and not (A(3) xor B(3)); end behcomp4;

Descripcin estructural
C(0) C(1) AeqB C(2) C(3) Use work.gatespkg.all; architecture strcomp4 of comp4 is signal c: bit_vector(3 downto 0); begin U0: xor2 port map(A(0),B(0),C(0)); U1: xor2 port map(A(1),B(1),C(1)); U2: xor2 port map(A(2),B(2),C(2)); U3: xor2 port map(A(3),B(3),C(3)); U4: nor4 port map(C(0),C(1),C(2),C(3),AeqB); end strcomp4;
Dispositivos digitales. PLDs - 14

Descripcin comportamental
t Algoritmo
architecture behcomp4 of comp4 is begin process(A,B) begin if (A=B) then AeqB <= '1'; else AeqB <= '0'; end if; end process; end behcomp4;
Dispositivos digitales. PLDs - 13

A(0) B(0) A(1) B(1) A(2) B(2) A(3) B(3)

Universidad de Zaragoza, IEC.

Universidad de Zaragoza, IEC.

Descripcin de circuitos digitales


q

Descripcin de circuitos digitales


q

Circuitos combinacionales
t Sentencia de asignacin concurrente
Y <= A and B; A B A Y

Circuitos combinacionales
t Proceso Multiplexor
process(A,B,S) begin if (S='1') then Y <= B; else Y <= A; end if; end process;

A B

0 Y 1 S

Evitar realimentacin combinacional


Y <= A nand Y;

t Asignacin condicional concurrente Salida triestado


Y <= A when E='1' else 'Z';

E A

Multiplexor
Y <= B when S='1' else A; A B 0 Y 1 S
Universidad de Zaragoza, IEC. Dispositivos digitales. PLDs - 15

Las entradas (seales ledas dentro del proceso) deben aparecer en la lista de sensibilidades Asignar valores a las salidas para todas las condiciones para evitar la inferencia de latches

process(B,S) begin if (S='1') then Y <= B; end if; end process;

B S

D EN

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 16

Biestables
q

MEFs
process (CLK,RST) -- Reset asncrono begin if (RST='1') then Q <= '0'; elsif (CLK'event and CLK='1') then Q <= D; end if; end process; process (CLK) -- Reset sncrono begin if (CLK'event and CLK='1') then if (RST='1') then Q <= '0'; else Q <=D; end if; end if; end process;
q

Flip-flops

Una MEF est formada por:


t t t t t Vector de estados S={Sj} Vector de entrada I={Ij} Vector de salida O={Oj} Funcin de transicin de estados: Estado_siguiente=F(estado_actual, I) Funcin de salida: Moore, O = G(estado_actual); Mealy, O = G(I, estado_actual); t Estado inicial o de reset

RST

Descripcin VHDL
t Dos procesos: Proceso secuencial, actualiza el estado Proceso combinacional, deriva siguiente estado y actualiza salidas t Supondremos MEFs sncronas, todos los FFs con el mismo CLK

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 17

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 18

Mquina Moore
1 1
E CK

Mquina Moore, RST asncrono


0 S2 0 0 1 S3 1 1
Architecture ... type states is (S0,S1,S2,S3); signal p_state,n_state: states; begin process (E,p_state) -- proc. combinacional begin case pstate is when S0 => Y <= '0'; if (E='0') then n_state <= S1; else n_state <= S0; end if; ... end case; end process; process (CLK, RST) -- proc. secuencial begin if (RST='1') then p_state <= S0; elsif (CLK'event and CLK='1') then p_state <= n_state; end if; end process; End ...;
Universidad de Zaragoza, IEC.

Detector 001 Moore

S0 0

..0 O

S1 0

.00

001

I
F

Funcin G Funcin F

n_state FFs CLK p_state

O case...when if ... then .. n_state CLKevent else ... and CLK CLK=1
p_state

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 19

Dispositivos digitales. PLDs - 20

Mquina Moore, RST sncrono


-- proceso combinacional process (E,p_state) begin case pstate is when S0 => Y <= '0'; if (E='0') then n_state <= S1; else n_state <= S0; end if; ... end case; if (RST='1') then n_state <= S0; end if; end process; process (CLK) -- proc. secuencial begin if (CLK'event and CLK='1') then p_state <= n_state; end if; end process;

Mquina Mealy
1/0 1/0 S0 0/0 S1 ..0 1/1 0/0 S2 .00 0/0
-- proceso combinacional process (E,p_state) begin case pstate is ... when S2 => if (E='0') then Y <= '0'; n_state <= S2; else Y <= '1'; n_state <= S0; end if; when others => -- Illegal state -- recovery end case; end process;

I RST

n_state FFs CLK p_state RST

O
G

n_state CLK p_state

AR FFs G

process (CLK,RST) -- proc. secuencial begin if (RST='1') then p_state <= S0; elsif (CLK'event and CLK='1') then p_state <= n_state; end if; end process;

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 21

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 22

Salidas de MEFs
q

Entornos de test
q

Salidas decodificadas
t Presentan glitches t Las salidas de la MEF que actan sobre habilitaciones triestado (/OE) o que actan como reloj (/WE) deben estar libres de glitches Registrar las salidas Hacer coincidir salidas con variables de estado
-- Declaraciones signal p_state, n_state: std_logic_vector(2 downto 0); constant IDLE: std_logic_vector(2 downto 0):="000"; ... -- Cuerpo de la arquitectura OE <= p_state(1);

Un entorno de test (testbench) es otra entidad de diseo que se utiliza para verificar la correccin funcional de nuestro diseo
t Se puede utilizar construcciones no sintetizables de VHDL t Partes de un entorno de test Entidad a testear (EUT) Generador de estmulos. stos se aplican a los puertos de entrada de la EUT Monitor de resultados. Fichero de datos o un visualizador de formas de onda. Comparar resultados obtenidos con esperados
TEST BENCH
CLK RST, IN_DATA

Generador de Estmulos Monitor de Resultados

OUT_DATA

EUT: Engloba todo el hardware que va a ser sintetizado

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 23

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 24

Generacin de estmulos
q

Vectores de test almacenados en tabla


q

Los estmulos pueden:


t Ser vectores de datos almacenados en: Vector o tabla Fichero ASCII t Ser generados mediante cdigo VHDL no sintetizable Patrones no repetitivos Patrones repetitivos --No repetitivo
RST <= '1', '0' after 20 ns; --Repetitivo process begin CLK <= '0'; wait for 10 ns; CLK <= '1'; wait for 10 ns; end process;

Declarar estmulos
type test_vector is record clk: std_logic; rst: std_logic; cnt: std_logic_vector(2 downto 0); end record; type test_vector_array is array(natural range <>) of test_vector; constant test_vectors: test_vector_array := ( -- reset the counter (clk=>'0',rst=>'1',cnt=>"000"), (clk=>'1',rst=>'1',cnt=>"000"), (clk=>'0',rst=>'0',cnt=>"000"), -- incrementar contador (clk=>'1',rst=>'0',cnt=>"001"), (clk=>'0',rst=>'0',cnt=>"001"), (clk=>'1',rst=>'0',cnt=>"010"), ... );

--Repetitivo process begin CLK <= '1', '0' after 20 ns; wait for 50 ns; end process;
Dispositivos digitales. PLDs - 25

Universidad de Zaragoza, IEC.

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 26

Vectores de test almacenados en tabla (2)


q

Ficheros
q

Aplicar estmulos
-- Aplicar vectores de test process variable vector: test_vector; begin for i in test_vectors'range loop -- Obtener vector i vector := test_vectors(i); clk <= vector.clk; rst <= vector.rst; -- comprobar resultados de simulacin if (cnt /= vector.cnt) then assert false report "Resultado incorrecto"; end if; end loop; end process;

Estmulos en fichero
t Use std.textio.all; t Use ieee.std_logic_textio.all;
-- Definiciones de tipos type STRING is array (POSITIVE range <>) of CHARACTER type LINE is access STRING;-- Pointer to a STRING value type TEXT is file of STRING; type SIDE is (RIGHT, LEFT);-- Justify output data type WIDTH is NATURAL;-- Specify widths of output fields -- Funciones y Procedimientos predefinidos function ENDFILE (F: TEXT) return BOOLEAN; procedure READLINE(F: in TEXT, L: out LINE); procedure READ(L:inout LINE; VALUE:out <tipo>; GOOD: out BOOLEAN); procedure WRITELINE(F: out TEXT; L: in LINE); procedure WRITE(L:inout LINE; VALUE:out <tipo>; JUSTIFIED: in SIDE; FIELD: in WIDTH); <tipo> cualquiera de los definidos en el package STANDARD
Dispositivos digitales. PLDs - 28

Universidad de Zaragoza, IEC.

Dispositivos digitales. PLDs - 27

Universidad de Zaragoza, IEC.

Package TEXTIO

Ficheros
READ FILE: process -- Aplicacin de los estmulos file INPUT_FILE: text is in "./eut_test.vec"; variable MY_LINE: line; variable IN1, IN2, OUT: std_logic; BEGIN WHILE (NOT (endfile (INPUT_FILE))) LOOP readline(INPUT_FILE, MY_LINE); read (MY_LINE, IN1);read (MY_LINE, IN2);read (MY_LINE, OUT); -- Aplicar valores leidos actual_clk <= '0'; actual_input1 <= IN1; actual_input2 <= IN2; wait for 10 ns; actual_clk <= '1'; wait for 10 ns; assert (actual_output = OUT) report "Resultado incorrecto"; END LOOP; assert FALSE -- Parar la simulacin report "Fin"; END PROCESS;
Universidad de Zaragoza, IEC. Dispositivos digitales. PLDs - 29

Metodologa de diseo con VHDL


Especificacin del diseo

Dependiente del PLD


Herramienta de Sntesis Cabe? Eleccin del PLD

Independiente del PLD


Codificacin VHDL (*) Testbench VHDL

Modelo VHDL Post-sntesis con tiempos JEDEC

Report

NO

Simulacin funcional SI

Simulacin temporal

Programacin del PLD

(*) Subconjunto sintetizable


Universidad de Zaragoza, IEC. Dispositivos digitales. PLDs - 30

También podría gustarte