191
Síntesis y simulacion para componentes programables VHDL, muy sencillo... MEDIA VIDEO DISEÑO www.mvd-fpga.com P 1 Ver 7.0 Reproduccion prohibida – todos derechos reservados FORMACION Síntesis y simulacion para componentes programables VHDL, muy sencillo...

VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

  • Upload
    others

  • View
    20

  • Download
    0

Embed Size (px)

Citation preview

Page 1: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 1Ver 7.0 Reproduccion prohibida – todos derechos reservados

FORMACION

Síntesis y simulacionpara

componentes programables

VHDL,muy sencillo...

Page 2: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 2Ver 7.0 Reproduccion prohibida – todos derechos reservados

M V DCentro de diseño FPGA Xilinx

Consultoría y asistencia técnica a domicilioCentro de formación aprobado

Sitio WEB : www.mvd-fpga.com

FPGA Experts !

Page 3: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 3Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Conocer las múltiples posibilidades ofrecidas por el lenguaje VHDL.• Conocer la sintaxis y el juego de instrucciones utilizado en síntesis lógica VHDL.• Conocer las principales ventajas y limitaciones de los diferentes estilos de escritura.• Verificar las informaciones teóricas por la practica• Aprovechar una base de ejemplos concretos, obtener una maestría rápida del lenguaje en aplicaciones de síntesis.

Objetivos de la formación

Page 4: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 4Ver 7.0 Reproduccion prohibida – todos derechos reservados

VHDLGeneralidades sobre el lenguaje

y sus aplicaciones

Page 5: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 5Ver 7.0 Reproduccion prohibida – todos derechos reservados

• VHDL :Very high speed integrated circuitHardware Description Language.

• Lenguaje de alto nivel conocido por permitir :• El modelado de ensambles electrónicos complejos. ( especificaciones )• La simulación de los modelos de componentes.• La síntesis lógica.

• Lenguaje estandarizado ( IEEE Std 1076-1993 )• La norma no define ninguna metodologia de diseño.

Page 6: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 6Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Modelado de conjuntos electrónicos complejos.• Lenguaje de alto nivel facilitando la descripción del comportamiento de los modelos .• Fuerte nivel de abstracción. La posibilidad material de implementar fisicamente el diseño no es necesariamente tomada en cuenta a este nivel ( behavioral )• La partición en varios elementos permite dividir un modelo complejo en un número de elementos mas simples de desarrollar separadamente .

Page 7: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 7Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Simulación :• Juego de instrucciones particularmente potente para:

- Generación de estímulos - Captura de resultados.

• Los modelos de comportamiento ( especificaciones ) son simulados con el fin de verificar su coherencia.• El conjunto de Modelos de comportamiento + ficheros de simulación constituyen a la vez una especificación y un medio de verificación.El comportamiento de un modelo y de su realización física deberían ser idénticos.

Page 8: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 8Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Síntesis lógica:• Permite implementar físicamente un diseño, gracias a la utilización de herramientas de síntesis.• Usa solamente una parte reducida del juego de instrucciones del lenguaje VHDL.Numerosas construcciones utilizables en modelos o en simulación no pueden ser sintetizadas

Las construcciones soportadas varían según las herramientas.• Portabilidad : Mito o realidad ?

• Entre herramientas de síntesis.• Entre arquitecturas materiales.

Page 9: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 9Ver 7.0 Reproduccion prohibida – todos derechos reservados

VHDLLas construcciones sintetisables

Page 10: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 10Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Presentación general :VHDL permite en particular:

• Definir los " ports " de entrada / salida del conjunto lógico descripto ( ENTITY).Señales simples o sobre la forma de bus.• Definir un modelo de comportamiento sintetisable, ( ARCHITECTURE ) usando el juego de instrucciones soportado por la herramientas de síntesis.Estilo de escritura RTL ( Register Transfer Logic ).• Unir los diferentes módulos descritos separadamente.( gestión de jerarquía, VHDL estructural ).

Page 11: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 11Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Presentación general : Informaciones previas sobre la sintaxis :

• Minúsculas y mayúsculas no son diferenciados en VHDL . Un objeto puede indiferentemente ser llamado :MODULE, Module, module ó modUle

Es lo mismo para las palabras clave.

• Los comentarios pueden ser colocados en cualquier lugar dentro del código. Ellos no afectan en nada los resultados de síntesis o de simulación.• Ejemplo :

_________________________________________________________________________________________________

-- esto en un comentario architecture ARQUI of EJEMPLO is -- esto también begin

_____________________________________________________________________________________________________

• Los archivos VHDL llevan la extensión " --- .VHD "

Page 12: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 12Ver 7.0 Reproduccion prohibida – todos derechos reservados

La pareja entidad / arquitectura

Page 13: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 13Ver 7.0 Reproduccion prohibida – todos derechos reservados

• La pareja entidad / arquitectura :

• Entidad : Porción del código que permite definir en particular las Entradas y Salidas.

• Ejemplo :___________________________________________________________________________________________________

entity EJEMPLO isport (A,B : in bit_vector(7 downto 0);SEL : in bit;MUX_OR : out bit

);end EJEMPLO; _______________________________________________

Equivalencia esquemática

MUX_ORB[7:0]

A[7:0]

SEL

SIMBOLO EJEMPLO

Page 14: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 14Ver 7.0 Reproduccion prohibida – todos derechos reservados

• La pareja entidad / arquitectura : • Entidad : Sintaxis de declaración :_______________________________________________________________________________________________________

entity EJEMPLO isport (

lista de puertos de entrada / salida comprendiendo :nombre_de_señal : modo y tipo.

);end [EJEMPLO]; -- Los corchetes "[]" indican que es opcional -- usar de nuevo el nombre de la entidad después de la palabra clave “end”.

_______________________________________________________________________________________________________

• El nombre dado a la entidad puede ser cualquiera.( excepto las palabras reservadas )

• Dar de preferencia el mismo nombre a la entidad y al fichero VHDL ( en este caso EJEMPLO.vhd )

• La lista de puertos está comprendida entre dos paréntesis, y seguida de un punto y coma.• Nombre de la entidad opcional después de la palabra "end".

Page 15: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 15Ver 7.0 Reproduccion prohibida – todos derechos reservados

• La pareja entidad / arquitectura : • Arquitectura : Porción de descripción del comportamiento del dispositivo a sintetizar.

• Esta asociada a una entidad.( dentro del mismo fichero ).

• Posee una parte declaratoria y una parte operatoria. _______________________________________________________________________________________________________

architecture ARQUI of EJEMPLO is-- parte declaratoria signal MUX_OUT : bit_vector(7 downto 0); -- señal interna------------------------------------------------------ parte operatoria begin

-- asignaciones condicionales de señales con "when..else".-- el signo "<=" es el símbolo de asignación de un valor a una señal

MUX_OUT <= A when SEL='0' else B;MUX_OR <='1' when MUX_OUT /= "00000000" else '0';

end [ARQUI];

Page 16: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 16Ver 7.0 Reproduccion prohibida – todos derechos reservados

• La pareja entidad / arquitectura:

• Arquitectura : Informaciones complementarias (1)• La parte declaratoria puede contener :

• Declaraciones de señales internas.( que no sean I/Os )

• Declaraciones de componentes.( gestión de la jerarquía , VHDL estructural ).

• Declaraciones de constantes.• Declaraciones de tipos de objetos.( utilizados en particular para las maquinas de estado ).

• Declaraciones de sub-programas.( funciones y procedimientos ).

Page 17: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 17Ver 7.0 Reproduccion prohibida – todos derechos reservados

• La pareja entidad / arquitectura : • Arquitectura: Informaciones complementarias(2)• El código operatorio puede contener :

• Asignaciones concurrentes de señales ( los resultados de síntesis y de simulación son independientes del orden de escritura de las instrucciones, como en el ejemplo precedente ).

• Asignaciones secuenciales : Procesos y/o sub programas En simulación, ejecución de instrucciones en el orden de escritura (secuencialmente).En síntesis lógica, el mismo comportamiento es reproducido.

• Instanciación de ”cajas negras". ( componentes ).El modulo en curso de desarrollo puede llamar a otros sub módulos ( gestión de jerarquía, VHDL estructural ).

CODIGORTL

CODIGOESTRUCTURAL

Page 18: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 18Ver 7.0 Reproduccion prohibida – todos derechos reservados

• La pareja entidad / arquitectura : • Arquitectura : Informaciones complementarias (3)

• Resultados de síntesis :_______________________________________________________________________________________________________

architecture ARQUI of EJEMPLO is

-- parte declaratoriasignal MUX_OUT : bit_vector(7 downto 0); -- señal interna

-- parte operatoria begin

MUX_OUT <= A when SEL='0' else B; -- asignaciones condicionales de señales con "when...else".MUX_OR <='1' when MUX_OUT /= "00000000" else '0';

end [ARQUI];__________________________________________________________________________________________________

MUX_ORMUX_OUT[7:0]

A[7:0]

B[7:0]

SEL

Page 19: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 19Ver 7.0 Reproduccion prohibida – todos derechos reservados

• La pareja entidad / arquitectura : Recapitulación : Archivo " EJEMPLO.vhd ".

_______________________________________________________________________________________________________

entity EJEMPLO isport (A,B : in bit_vector(7 downto 0);SEL : in bit; -- El signo ";" se utiliza como separador entreMUX_OR : out bit -- dos declaraciones de señales y no debe

); -- aparecer después de la ultima señal declaradaend [EJEMPLO];

architecture ARQUI of EJEMPLO is

-- parte declaratoriasignal MUX_OUT : bit_vector(7 downto 0); -- señal interna-- parte operatoria beginMUX_OUT <= A when SEL='0' else B;MUX_OR <='1' when MUX_OUT /= "00000000" else '0';end [ARQUI];

Page 20: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 20Ver 7.0 Reproduccion prohibida – todos derechos reservados

• La pareja entidad / arquitectura : Otro EJEMPLO: mux2_1.vhd_______________________________________________________________________________________________________

entity MUX2_1 isport (

A_IN, B_IN : in bit; -- La entidad tiene el mismo nombreSEL : in bit; -- que el fichero VHDLSALIDA : out bit

);end [MUX2_1];

architecture ARCHI of MUX2_1 is

-- parte declaratoria vacía en este EJEMPLO

-- parte operatoria begin

SALIDA <= (A_IN and not(SEL)) or (B_IN and SEL);-- "and", "not", "or" son operadores lógicos predefinidos del -- lenguaje VHDL.

end [ARCHI];

Page 21: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 21Ver 7.0 Reproduccion prohibida – todos derechos reservados

Objetos que se pueden manipular en VHDL

( síntesis lógica )

Page 22: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 22Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Objetos que se pueden manipular en VHDL y sus tipos: • 3 clases principales de objetos :

• SEÑALES : similares a las señales encontradas en los esquemas Los “ports” declarados dentro de una entidad son señales. Pueden ser declarados como “bus”.• CONSTANTES : permiten definir valores permanentes .• VARIABLES : utilizadas solamente dentro de los “PROCESS “ ( instrucciones secuenciales ).

• Una declaración de objeto comprende :• CLASE : señal, constante o variable.• NOMBRE : a elección del creador ( excepto palabras reservadas ).• MODO : ( solamente señales ) : in, out, inout, buffer.• TIPO : bit, bit_vector, boolean, integer...

Page 23: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 23Ver 7.0 Reproduccion prohibida – todos derechos reservados

Los tipos de datos

Page 24: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 24Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Tipos de objetos que se pueden manipular en VHDL: • Tipos pré-definidos principales:

• BIT : puede tomar el valor '0' o '1'.

• BIT_VECTOR : grupo de BITS ( bus ).El valor binario de un bit_vector esta definido entre comillas dobles .

EJEMPLO : ___________________________________________________________________________________________________

signal A : bit_vector(7 downto 0);-- El bit de mas peso (MSB)esta a la izquierda ! -- En nuestro caso es el bit 7.beginA <= "01011010";-- equivalente a : A <= X"5A";-- X"valor" indica un valor hexadecimal

Page 25: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 25Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Tipos de objetos que se pueden manipular en VHDL: • Tipos pré-definidos principales : ( cont. )

• BOOLEAN : Puede tomar los valores TRUE o FALSE.

• INTEGER : Valor entero codificado sobre 32 bits.( de -2.147.483.648 a + 2.147.483.647 )Un entero puede estar limitado en su declaración, a fin de evitar

su codificación sobre 32 bits.EJEMPLO :

___________________________________________________________________________________________________

signal VALEUR : integer range 0 to 255;beginVALEUR <= 143 when INIT = '1' else 33;

Page 26: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 26Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Tipos de datos que se pueden manipular en VHDL : • Tipos " user defined " :

• STD_LOGIC y STD_ULOGIC : Extensiones del tipo BIT, pueden tomar 9 valores diferentes :type STD_ULOGIC is (

'U', -- Uninitialized'X', -- Forcing Unknown'0', -- Forcing 0'1', -- Forcing 1'Z', -- High impedance'W', -- Weak unknown'L', -- Weak 0'H', -- Weak 1 '-' );-- Don't care

( Extraído del código fuente del package "STD_LOGIC_1164". )

Page 27: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 27Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Tipos de objetos que se pueden manipular en VHDL : • Tipos " user defined " : STD_LOGIC

• El tipo STD_LOGIC da una mayor potencia operacional que el tipo BIT, tanto para la simulación como para la síntesis . ( particularmente los valores 'Z’ y '-' para la síntesis ).

• Tipos " user defined " : STD_LOGIC_VECTOR• Grupo de objetos similar a BIT_VECTOR, pero con los 9 estados posibles del STD_LOGIC para cada uno de los bits.• Para utilizar estos tipos de datos ( STD_LOGIC_VECTOR y STD_LOGIC ), debemos declarar la utilización de la biblioteca IEEE que contiene el package particular ( STD_LOGIC_1164 ), en el encabezado del archivo .vhd. library IEEE;use IEEE.STD_LOGIC_1164.all;

Page 28: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 28Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Tipos de objetos que se pueden manipular en VHDL : • EJEMPLO de declaración de la biblioteca IEEE, y del package STD_LOGIC_1164 :_____________________________________________________________________________________________________________

library IEEE;use IEEE.STD_LOGIC_1164.all;entity EJEMPLO is

port ( A, B : in STD_LOGIC_VECTOR(7 downto 0);SEL : in STD_LOGIC;MUX_OR : out STD_LOGIC);

end EJEMPLO;

architecture ARCHI of EJEMPLO is .........

Page 29: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 29Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Tipos de objetos que se pueden manipular en VHDL :

• Tipos enumerados :• Principalmente utilizados en síntesis para definir los estados de las maquinas de estado.

______________________________________________________________________________________________________

architecture ARCHI of MACHINE is

-- parte declaratoria de la arquitectura type ESTADOS is ( REPOSO, LECTURA, ESCRITURA);signal ESTADO_ACTUAL, ESTADO_SIGUIENTE: ESTADOS;-- Las señales ESTADO_ACTUAL y ESTADO_SIGUIENTE, podrán -- tomar los valores “REPOSO”, “LECTURA” o “ESCRITURA”.begin

-- asignaciones.

Enumeración de tipo !

Page 30: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 30Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Reglas de asignación de los vectores de datos:

• EL orden en el cual se utiliza el vector ( bus ) debe ser el mismo que en la declaración del vector.( valores crecientes o decrecientes de los índices )

• No es necesario utilizar el vector entero. ( utilización de una parte de las señales de un bus ).

• El ancho del bus ( tamaño del vector ) debe corresponder para la mayoría de las operaciónes. ( excepto para comparación ).

Page 31: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 31Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Reglas de asignación de los vectores de datos:architecture ARCHI of VECTOR is-- parte declaratoria de la arquitecturasignal D_IN, MASCARA, D_OUT : std_logic_vector(7 downto 0);signal Q_OUT : std_logic_vector(7 downto 0);constant FIJA : std_logic_vector(2 downto 0) := "010"; -- la asignación de un valor a una constante o variable -- se realiza por el símbolo " := " -- en forma diferente a la asignación de señales.

beginD_OUT <= D_IN and not(MASCARA); -- Todas las operaciones

-- son sobre 8 bits.Q_OUT <= (D_IN(6 downto 2) and not(MASCARA(7 downto 3)))

& FIJA;-- El signo “&” es un operador llamado de concatenación

end [ARCHI];

Page 32: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 32Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Ejemplo de un código equivalente :D_OUT(7) <= D_IN(7) and not(MASCARA(7));D_OUT(6) <= D_IN(6) and not(MASCARA(6));

-- -- -- -- -- -- ;D_OUT(0) <= D_IN(0) and not(MASCARA(0));

Q_OUT(7) <= D_IN(6)and not(MASCARA(7));Q_OUT(6) <= D_IN(5)and not(MASCARA(6));

-- -- -- -- -- -- ;Q_OUT(3) <= D_IN(2)and not(MASCARA(3));Q_OUT(2) <= FIJA(2); -- o Q_OUT(2) <= '0';Q_OUT(1) <= FIJA(1); -- o Q_OUT(1) <= '1';Q_OUT(0) <= FIJA(0); -- o Q_OUT(0) <= '0';

Page 33: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 33Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Reglas de asignación de los vectores de datos:• Ejemplos de errores de escritura en las asignaciones:architecture ARCHI of VECTOR is-- parte declaratoria de la arquitectura signal D_IN, MASCARA,D_OUT : std_logic_vector(7 downto 0);signal Q_OUT : std_logic_vector(7 downto 0);constant FIJA : std_logic_vector(2 downto 0) := "010";

beginD_OUT <= D_IN(0 to 7) and not(MASCARA); -- ERROR ! D_IN fue declarado -- con valores decrecientes de los índices (7 downto 0). No puede ser -- usado en una asignación poniendo los mismos índices en orden crecientes -- En cambio, podríamos haber escrito :

-- D_OUT(7) <= D_IN(0) and not(MASCARA(7));-- D_OUT(6) <= D_IN(1) and not(MASCARA(6));

-- -- -- -- -- -- ; -- D_OUT(1) <= D_IN(6) and not(MASCARA(1)); -- D_OUT(0) <= D_IN(7) and not(MASCARA(0));

-- De la misma forma, la línea siguiente es ilegal( error en la -- utilización de la constante "FIJA" ).Q_OUT <= (D_IN(6 downto 2) and not(MASCARA)) & FIJA(0 to 2); --ERROR !end [ARCHI];

Page 34: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 34Ver 7.0 Reproduccion prohibida – todos derechos reservados

Los operadores

Page 35: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 35Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Operadores frecuentemente utilizados en síntesis:• Operadores lógicos pre definidos :

• and, or, nand, nor, xor y not• Operan sobre todos los objetos de todas las clases ( señales constantes, variables ) y de tipo :

• bit• bit_vector• std_logic, std_ulogic• std_logic_vector, std_ulogic_vector• boolean

• Los operandos deben ser del mismo tipo y contener el mismo número de bits.

Page 36: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 36Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Operadores frecuentemente utilizados en síntesis :• Operadores lógicos pré-definidos :

• Ejemplo de utilización (1) :____________________________________________________________________________________________________

entity OPE isport ( A, B, C : in bit;

S : out bit);end OPE;

architecture ARCHI of OPE isbeginS <= (A and B) and not(C);

end ARCHI;

Page 37: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 37Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Operadores frecuentemente utilizados en síntesis :• Operadores lógicos pre definidos:

• Ejemplo de utilización(2) :_______________________________________________________________________________________________________

library IEEE; -- declaración de la biblioteca IEEE,-- seguida de la sentencia "use" para indicar que -- queremos usar de esta biblioteca el package -- "STD_LOGIC_1164", sin limitación de las funciones -- u otros elementos de la biblioteca disponibles ( .all; )use IEEE.STD_LOGIC_1164.all;entity OPERA isport ( A, B, C : in std_logic_vector(6 downto 0);

S : out std_logic_vector(6 downto 0));end OPERA;architecture ARCHI of OPERA isbeginS <= (A and B) and not(C);

end ARCHI;

Page 38: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 38Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Operadores frecuentemente utilizados en síntesis :• Operadores relacionales :

• = ( igual a ) /= ( diferente de )• < ( inferior a ) <= ( inferior o igual a )• > ( superior a ) >= ( superior o igual a )

• Operan sobre objetos de tipo :• bit, bit_vector• std_logic, std_logic_vector • std_ulogic, std_ulogic_vector• integer• boolean

Page 39: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 39Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Operadores frecuentemente utilizados en síntesis :

• Operadores relacionales : ( cont. )

• Los operandos deben ser del mismo tipo, pero el número de bits comparados puede ser diferente !

• Cuidado con las sorpresas !!!

Page 40: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 40Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Operadores corrientemente utilizados en síntesis:• Operadores relacionales : Comparación de vectores :

• La comparación se hace comparando bit a bit los dos vectores comenzando por el MSB.Los resultados pueden sorprender si los vectores no son del mismo número de bits. Ejemplo:

____________________________________________________________________________________________

signal REG : std_logic_vector(4 downto 0);signal CNT : std_logic_vector(3 downto 0);begin-- tenemos el derecho de escribir :-- REG CNT-- "01111" > "0100" resultado poco sorprendente -- y "01111" < "1000" resultado muy sorprendente !

-- El MSB de CNT es superior al MSB de REG, -- el vector CNT es considerado como superior.

Page 41: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 41Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Operadores corrientemente utilizados en síntesis :• Operadores relacionales : ( cont. )

• La utilización de packages estandarizados permite efectuar operaciónes relacionales entre objetos de tipo INTEGER y otro de tipo STD_LOGIC_VECTOR.

• Estos packages se encuentran en la biblioteca « IEEE » asi como los packages son : STD_LOGIC_UNSIGNED, ySTD_LOGIC_ARITH. Para ser visibles, deben se declarados al inicio del archivo.

Page 42: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 42Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Operadores corrientemente utilizados en síntesis:• Operadores relacionales : Informaciones complementarias

El resultado de una comparación es de tipo “boolean” puede tomar solo los valores TRUE o FALSE.Ejemplo : ____________________________________________________________________________________________

signal IGUAL, VENTANA : boolean;signal COUNT : std_logic_vector(4 downto 0);beginIGUAL <= (COUNT = 27);VENTANA <= (COUNT >= 13) and (COUNT <= 25);-- operación lógica entre dos “booleans”.

• Nota : Los operadores lógicos relacionales distintos de "=" y "/=" son frecuentemente implementados en FPGA en forma de funciones aritméticas cableadas.

Page 43: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 43Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Operadores corrientemente utilizados en síntesis :• Operadores relacionales y la implementación de funciones aritméticas :

• La comparación ( distinta de “ = ” o “ /= ” ) de vectores puede resultar en la utilización de funciones aritméticas cableadas, y por esto no serán optimizadas después de la síntesis. Prudencia en la utilización de los operadores <, <=, > , >= . Dos porciones de código pueden tener un comportamiento equivalente, pero los resultados de síntesis pueden ser muy diferentes.Ejemplo :

____________________________________________________________________________________________

signal CNT : std_logic_vector(7 downto 0);beginTOTO <= '1' when (CNT < "10000000") else '0'; -- podemos escribir-- TOTO <= '1' when CNT(7)='0' else '0';-- o mas simple TOTO <= not(CNT(7));

Page 44: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 44Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Operadores corrientemente utilizados en síntesis:• Operadores aritméticos :

+ ( suma ) - ( resta ) * ( multiplicación ) / ( división )** ( potencia ) mod rem abs

• Operan sobre objetos de tipo INTEGER.• Pueden igualmente operar sobre STD_LOGIC_VECTOR utilizando los packages STD_LOGIC_UNSIGNED y STD_LOGIC_ARITH.• Restricciones: La mayoría de las herramientas de síntesis solo autorizan las operaciónes de multiplicación y división entre CONSTANTES, o una CONSTANTE potencia de 2 y una SEÑAL.

Page 45: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 45Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Operadores corrientemente utilizados en síntesis:• Implementación física de funciones descritas por medio de operadores aritméticos :

• Algunas arquitecturas de componentes programables tienen recursos de lógica específicos para una implementación eficaz de las funciones aritméticas y similares ( en términos de velocidad y área de silicio usado ). • Las herramientas de síntesis pueden hacer un uso de estos recursos mas o menos oportuno, según su «conocimiento» de la arquitectura del circuito usado.Disponen en general de opciones de síntesis, para elegir usar o no dichos recursos lógicos.

Page 46: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 46Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Operadores frecuentemente utilizados en síntesis :• Posibilidades extendidas de utilización de operadores aritméticos y relacionales gracias a la utilización de packages estandarizados:

• La comparación entre STD_LOGIC_VECTOR y INTEGER, es posible utilizando ciertos packages.• El nombre de la biblioteca y del package puede ser diferente según las herramientas.

__________________________________________________________________________________________________

library IEEE;use IEEE.STD_LOGIC_UNSIGNED.all;entity ...architecture ARCHI of ...signal CNT : std_logic_vector(7 downto 0);beginTOTO <= '1' when (CNT = 143) else '0';TITI <= '1' when (CNT >= 75) and (CNT <= 123) else '0';

Page 47: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 47Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Operadores corrientemente utilizados en síntesis :• Operador de concatenación:

• Permiten la creación de vectores a partir de bit o de vectores.• Ejemplos :

_____________________________________________________________________________________________________

library IEEE;use IEEE.STD_LOGIC_1164.all;entity MY_BUS isport ( A, B, C, D : in std_logic;

STATUS : out std_logic_vector(7 downto 0));end MY_BUS;architecture ARCHI of MY_BUS isbeginSTATUS <= "0000" & A & B & C & D;-- equivalente a : STATUS(7 downto 4) <= "0000";-- STATUS(3) <= A; STATUS(2) <= B; -- STATUS(1) <= C; STATUS(0) <= D;

end ARCHI;

Page 48: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 48Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Operadores corrientemente utilizados en síntesis :• Operadores de concatenación :

• Otro ejemplo :_____________________________________________________________________________________________________

library IEEE;use IEEE.STD_LOGIC_1164.all;entity MY_BUS isport ( A, B, C, D : in std_logic;

STATUS : out std_logic_vector(7 downto 0));end MY_BUS;architecture ARCHI of MY_BUS isconstant ZERO : std_logic_vector(3 downto 0) := "0000";beginSTATUS <= ZERO & A & B & C & D;-- equivalente à : STATUS(7 downto 4) <= "0000";-- STATUS(3) <= A; STATUS(2) <= B; -- STATUS(1) <= C; STATUS(0) <= D;

end ARCHI;

Page 49: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 49Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Pregunta : el código siguiente contiene errores en las asignaciones, podría usted indicarlas ?_____________________________________________________________________________________________________

library IEEE;use IEEE.STD_LOGIC_1164.all;

entity MY_BUS isport ( A, B, C, D : in std_logic_vector(3 downto 0);

SEL : in std_logic_vector(0 to 1);VALOR : in integer range 0 to 255;IGUAL : out boolean;STATUS : out std_logic_vector(7 downto 0));

end MY_BUS;

architecture ARCHI of MY_BUS isconstant DOCE : std_logic_vector(3 downto 0) := "1100";constant TRECE : std_logic_vector(0 to 3) := "1101";beginSTATUS(0 to 3) <= DOCE;STATUS <= DOCE & A(0) & B(0 to 2);STATUS <= A when SEL="00" else B when SEL="01"

else C when SEL="10" else D;STATUS <= TRECE & DOCE;IGUAL <= STATUS = A & D;IGUAL <= '1' when STATUS=VALOR;

Page 50: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 50Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Respuestas : E = ERROR C = CORRECTO

E STATUS(0 to 3) <= DOCE;-- STATUS después de estar declarado std_logic_vector(7 downto 0), -- nosotros solo podemos usarlo con índices decrecientes

E STATUS <= DOCE & A(0) & B(0 to 2);-- B esta declarado como std_logic_vector(3 downto 0), -- entonces solo podemos usarlo con índices en sentido decreciente

E STATUS <= A when SEL="00" else B when SEL="01"else C when SEL="10" else D;

-- STATUS es un vector de 8 bits, mientras que A, B, C, y D son -- vectores de 4 bits.

C STATUS <= TRECE & DOCE; -- equivalente a STATUS <= "1101_1100";E IGUAL <= STATUS = A & D; -- STATUS es una salidaE IGUAL <= '1' when STATUS=VALOR;

-- STATUS es una salida-- IGUAL (booleano) solo puede tomar un valor TRUE o FALSE-- Un std_logic_vector comparado con un integer. -- Esta comparación solo es posible con la ayuda de bibliotecas -- especificas.-- falta "else" después de "when". Legal pero no deseable

Page 51: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 51Ver 7.0 Reproduccion prohibida – todos derechos reservados

Instrucciones concurrentesy

secuenciales

Page 52: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 52Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes :Las operaciónes se efectúan al mismo tiempo (en paralelo).

• El orden de escritura de las instrucciones no afecta el resultado de síntesis o de simulación.• El estilo de escritura es comparable a los lenguajes de programación de los PALs ( ecuaciones lógicas ).• Ejemplo de asignaciones simples : ( ecuaciones ) ____________________________________________________________________________________________________

entity CONCURRENT isport ( A, B, C : in bit;

S, T : out bit); end CONCURRENT;

architecture ARCHI of CONCURRENT isbeginS <= (A and B) and not(C);T <= B xor C;-- El orden de asignación S y de T es indiferente.

end ARCHI;

Page 53: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 53Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones secuenciales :Las operaciónes se efectúan en secuencia.

• El orden afecta los resultados de simulación y de síntesis..

• Estilo de escritura parecido a los lenguajes de informática de alto nivel .• Las Instrucciones secuenciales se usan en partes específicas del código : PROCESS o súbprogramas.• Ejemplo :

____________________________________________________________________________________________________

architecture ARCHI of SECUENCIA isbeginprocess(CK) begin

if CK'event and CK='1' thenif ENA = '1' then COUNT <= COUNT + 1;end if;

end if; end process;

end ARCHI;

Utilización del Clock_Enablededicado de los Flip Flops Xilinx

( ver Procesos Sincrónicos )

Page 54: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 54Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes :• Asignación de señales por condición : WHEN ... ELSE

• Sintaxis :signal_x <= valor_x when signal_y = valor_y

else valor_z;

• Notar que valor_z es indicado directamente después de" else ". (el símbolo de asignación "<=" es aquí implícito) Ejemplo :

____________________________________________________________________________________________________

entity CONCURRENT isport ( A, B, C : in bit;

S, T : out bit);end CONCURRENT;architecture ARCHI of CONCURRENT is begin

S <= A when C='1' else B;T <= B xor C;

end ARCHI;

Page 55: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 55Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes :• Asignación de señales por condición : WHEN ... ELSE____________________________________________________________________________________________________

entity CONCURRENT isport ( A, B, C : in bit;

S, T : out bit);end CONCURRENT;

architecture ARCHI of CONCURRENT is beginS <= A when C='1' else B;T <= not B;

end ARCHI;________________________________________________________________________________________________________

• Las dos instrucciones ( o asignaciones ) son concurrentes. El orden de escritura no afecta los resultados.

• Estas instrucciones generan :

0

1A

B

C

S B T

Page 56: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 56Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes :• Asignación de señales por condición : WHEN ... ELSE____________________________________________________________________________________________________

entity TRISTATE isport ( A, B, C : in std_logic;

S : out std_logic);end TRISTATE;

architecture ARCHI of TRISTATE isbeginS <= A when C='0' else 'Z';S <= B when C='1' else 'Z';

end ARCHI;________________________________________________________________________________________________________

B S

A

C

Page 57: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 57Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes :• Asignación de señales par condición : WHEN ... ELSE____________________________________________________________________________________________________

entity TRISTATE isport ( A, B : in std_logic_vector(15 downto 0);

C : in std_logic;S : out std_logic_vector(15 downto 0));

end TRISTATE;

architecture ARCHI of TRISTATE isbeginS <= A when C='0' else "ZZZZZZZZZZZZZZZZ";S <= B when C='1' else "ZZZZZZZZZZZZZZZZ";

end ARCHI;________________________________________________________________________________________________________

B[15:0] S[15:0]

A[15:0]

C

Page 58: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 58Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes :• Asignación de señales por selección : WITH ...SELECT

• Sintaxis :with SIGNAL_X select

SIGNAL_Y <= valor_y1 when "00",valor_y2 when "01",valor_y3 when "10",valor_y4 when others;

• WHEN OTHERS (ultima línea) indica que SIGNAL_Y tomará el valor valor_y4 para todo valor de SIGNAL_X no indicado explícitamente.

Page 59: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 59Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes :• Asignación de señales por selección : WITH ...SELECT

• Ejemplo :____________________________________________________________________________________________________

architecture ARCHI of CONCURENT isbeginwith SEL select S <= A when "00",

B when "01",C when "10",D when others;

T <= not B;end ARCHI;

_________________________________________________________________________________________________________

B T

00

01

10

otros casos

A

D

SEL[1:0]

SB

C

Page 60: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 60Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes :• Instrucción de bucle : FOR i IN ... GENERATE :

• Sintaxis :LABEL : for I in entero_a to entero_b generate

--Instrucciones concurrentes...end generate;

• GENERATE produce una iteración de las instrucciones .• El número de iteraciónes esta determinado por los valores enteros "entero_a" y "entero b". • La utilización de un LABEL es obligatoria.• La instrucción GENERATE puede ajustarse al ancho de un bus si se usa con el atributo RANGE :BLABLA : for I in DATA'range generate ...

Page 61: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 61Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes :• Instrucción de bucle : FOR i IN ... GENERATE :

Ejemplos :_____________________________________________________________________________________________________________

BLABLA : for I in 0 to 15 generateS(I) <= A(I) when C ='0' else 'Z'; S(I) <= B(I) when C ='1' else 'Z';

end generate;_____________________________________________________________________________________________________________

BLABLA : for I in S'range generateS(I) <= A(I) when C ='0' else 'Z'; S(I) <= B(I) when C ='1' else 'Z';

end generate;____________________________________ B[15:0] S[15:0]

A[15:0]

C

Page 62: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 62Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes :• Instrucción de bucle : FOR i IN ... GENERATE y atributo RANGE :

____________________________________________________________________________________________________________

BLABLA : for I in S'range generateS(I) <= A(I) when C='0' else 'Z'; S(I) <= B(I) when C='1' else 'Z';

end generate;____________________________________________________________________________________________________________

• RANGE es un atributo pre-definido de VHDL.• Indica la gama de valores de los índices de un vector de datos.• Código genérico, independiente del ancho del bus • Portabilidad, re-uso, evoluciónes facilitadas...

Page 63: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 63Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes : Ejercicio recapitulativo

6 A5 B4 C3 D2 E1 F0 G

DISPLAY[6:0]

Comparador (when ... else )

VAL[3:0]

A_MIN (declarado en modo OUT)

A < BBUS_A[3:0]

BUS_B[3:0]

A

B

MIN[3:0]

MAX[3:0]

1

0

1

0

SEL_MIN

Multiplexores lógicos

(when ... else)

Decodificador7 segmentos( with ... select)

Multiplexor tri-state

(for I in ... generate)

(señal interna)

salidas

Page 64: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 64Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes : Ejercicio -- El fin de este ejercicio es describir un ensamble que permita -- presentar sobre un indicador de 7 segmentos el valor mínimo o -- máximo que se presentan sobre el bus BUS_A o BUS_B, -- según el estado de la señal SEL_MIN;

-- Esta es una guía para facilitar el ejercicio.library ...; use ...;

-- La biblioteca METAMOR permite incluir dentro del código fuente -- los parámetros directamente ligados a cada arquitectura -- En el ejemplo nosotros podemos imponer una disposición -- ( total o parcial ) de los pines del FPGA. library METAMOR;use METAMOR.ATTRIBUTES.all;

entity CONCUR isport ( BUS_A, BUS_B : std_logic_vector(3 downto 0);

-- declaración de las otras entradas y salidas...-- El atributo PINNUM permite imponer la distribución de pines.attribute PINNUM of BUS_A : signal is "P40,P41,P42,P43";

end CONCUR;

Page 65: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 65Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes : Ejercicio architecture ARCHI of CONCUR is-- declaración de señales internas begin-- A_MIN <= BUS_A < BUS_B; -- Solamente si A_MIN es BOOLEANA_MIN <= '1' when BUS_A < BUS_B else '0' ;

-- selección de los valores MIN o MAX por multiplexado lógico(no TRISTATE)-- MAX <= BUS_A when not(A_MIN) else BUS_B;MAX <= BUS_A when A_MIN = '0' else BUS_B;

-- asignación de otras señales ...-- selección de los valores MIN o MAX por TRISTATE.VALOR : for I in ... generate

VAL(I) <= MAX(I) when ... else ... ;VAL(I) <= MIN(I) when ... else ... ;

end generate;-- a decodificador 7 segmentos-- --- ( en forma de tabla verdad )-- f | |b con la instrucción concurrente :-- | | WITH ... SELECT-- ----- e | g |c-- | |-- ----- d

Page 66: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 66Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes : Ejercicio -- continuación

with VAL select -- descripción en forma de tabla verdad -- ABCDEFG

DISPLAY <= "0000001" when ..., -- 0 | segmentos encendidos con 0"1001111" when ..., -- 1"0010010" when ..., -- 2

-- otros casos...

"0111110" when others; -- F

A <= DISPLAY(6);B <= ...;C <= ...;D <= ...;E <= ...;F <= ...;G <= ...;

end ARCHI;

Page 67: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 67Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes : Ejercicio -- El fin de este ejercicio es describir un ensamble que permita -- presentar sobre un indicador de 7 segmentos el valor mínimo o -- máximo que se presentan sobre el bus BUS_A o BUS_B, -- según el estado de la señal SEL_MIN; library ieee; use ieee.std_logic_1164.all;-- La biblioteca METAMOR permite incluir dentro del código fuente -- los parámetros directamente ligados a cada arquitectura -- En el ejemplo nosotros podemos imponer una disposición -- ( total o parcial ) de los pines del FPGA.

entity CONCUR isport ( BUS_A, BUS_B : std_logic_vector(3 downto 0);

SEL_MIN : in std_logic;A_MIN : out boolean; A,B,C,D,E,F,G : out std_logic);

end CONCUR;

Page 68: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 68Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes : Ejercicio architecture ARCHI of CONCUR issignal VAL, MAX, MIN : std_logic_vector(3 downto 0); -- declaración de señalessignal DISPLAY : std_logic_vector(6 downto 0); -- internassignal A_MIN_INT : boolean; begin

A_MIN_INT <= BUS_A < BUS_B; -- A_MIN es una condición lógicaA_MIN <= A_MIN_INT;

-- selección de los valores MIN y MAX por multiplexado lógico( no TRISTATE )MAX <= BUS_A when not(A_MIN_INT) else BUS_B; MIN <= BUS_A when A_MIN_INT else BUS_B;

-- selección del valore MIN o MAX por TRISTATE.VALEUR : for I in BUS_A'range generate

VAL(I) <= MAX(I) when SEL_MIN ='0' else 'Z';VAL(I) <= MIN(I) when SEL_MIN ='1' else 'Z';

end generate;-- a decodificador 7 segmentos-- --- ( en forma de tabla verdad)-- b | |f con la instrucciones concurrente :-- | | WITH ... SELECT-- ----- c | g |e-- | |-- ----- d

Page 69: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 69Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes : Ejercicio -- continuación

with VAL select -- descripción de la tabla verdadDISPLAY <= "0000001" when x"0",

"1001111" when x"1","0010010" when x"2", "0000110" when x"3", "1001100" when x"4","0100100" when x"5", "0100000" when x"6", "0001111" when x"7","0000000" when x"8", "0000100" when x"9", "0001000" when x"A","1100000" when x"b", "0110001" when x"C", "1000010" when x"d","0010000" when x"e", "0111000" when x"F", "0000000" when others;

A <= DISPLAY(6);B <= DISPLAY(5);C <= DISPLAY(4);D <= DISPLAY(3);E <= DISPLAY(2);F <= DISPLAY(1);G <= DISPLAY(0);

end ARCHI;

Page 70: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 70Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones secuenciales: noción de PROCESS.

• Un PROCESS es una parte de código en la cual las instrucciones se ejecutan en secuencia ( siguiendo el orden de escritura ).

• Una misma arquitectura puede contener varios PROCESS.

• Todos los process se ejecutan en paralelo. ( un PROCESS es equivalente a una instrucción concurrente compleja).

• El juego de instrucciones utilizables dentro de un process es diferente del juego de instrucciones concurrentes.

• El orden de escritura de las instrucciones afecta los resultados de simulación y de síntesis.

Page 71: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 71Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones secuenciales : noción de PROCESS.

• Implementación de :

• Lógica combinatoria ( process combinatorio ).• Lógica sincrónica ( process sincrónicos ). • Lógica sincrónica con inicialización asincrónica.

• En simulación, un process se dice dormido hasta que las señales susceptibles de activarlo cambian de estado.

Page 72: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 72Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones secuenciales : noción de PROCESS.

• Estructura general de un process :

[etiqueta :] process ( lista_de_sensibilidad )-- parte declaratoria

-- declaracion eventual de variables ...begin -- parte operatoria-- instrucciones secuenciales ( if, case, loop... )

end process;

Etiqueta opcional

Lista de las señalespodiendo provocar una reevaluacion

del valor de las señales asignadas en el Process

Fin del Process

Page 73: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 73Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Metodología de uso de los PROCESS :

• El usuario debe tomar las precauciones necesarias para dominar el comportamiento y la implementación de la lógica generada.

Para esto, deberá indicar el la lista de sensibilidad todas las señales capaces de provocar un cambio en la asignación de los valores de las señales de salida del PROCESS, y únicamente estas.

• Un gran rigor en la definición de la lista de sensibilidad permitirá sintetizar diseños sin sorpresas ( sin asincrónismos )

Page 74: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 74Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Metodologia de uso de los PROCESS en sintesis :

ABCD

STU

S

D Q

D Q

CK

T

AB

CD

process (A,B,C,D)

-- process combinatoriobeginif (A=‘1’ and B=‘0’)

then ...

process (CK)

-- process sincronicobeginif CK’event and CK=‘1’

then if (A=‘1’ and B=‘0’

then...

process (CK, INIT)

-- process sincronico-- con initializacion-- asinchronicabeginif INIT=‘1’ thenS <= ‘1’; T <= ‘0’;

elsif CK’event and CK=‘1’ then

if (A=‘1’ and B=‘0’) then...

AB

S

D

R

Q

D S Q

CKINIT

TCD

Page 75: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 75Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Incoherencias de diseño hardware( soportadas por el lenguaje VHDL )

AB

S

D

R

Q

D S Q

CKINIT

TCD

S

D Q

D Q

CK

T

AB

CD

process (CK, A,B,C,D )

-- process sincronicobeginif CK’event and CK=‘1’

then if (A=‘1’ and B=‘0’

then...

process (CK, INIT, A, B, C, D )

-- process sincronico-- con initializacion-- asinchronicabeginif INIT=‘1’ thenS <= ‘1’; T <= ‘0’;

elsif CK’event and CK=‘1’ then

if (A=‘1’ and B=‘0’) then...

Page 76: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 76Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones secuenciales : noción de PROCESS.• Procesos combinatorios :

• Sintaxis :[LABEL :] process (lista_de_sensibilidad) [declaraciones] begin -- Instrucciones secuenciales

end process [LABEL];

• La lista de sensibilidad contiene todas las señales que pueden causar una actividad en el process.• La parte declaratoria puede contener variables. • Una variable es solo visible dentro del process en que esta declarada.

Page 77: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 77Ver 7.0 Reproduccion prohibida – todos derechos reservados

Instrucciones secuenciales : noción de PROCESS.• Procesos combinatorios:

• Ejemplo :_____________________________________________________________________________________________________

MUX : process ( A, B, SEL) -- lista de sensibilidad-- parte declaratoria no usada en este ejemplobegin

if SEL = '0' then SALIDA <= A;else SALIDA <= B;end if;

end process;

• Las señales tratadas dentro de este tipo de process son puramente combinatorias ( ninguna referencia se hace a la detección del flanco de cambio del reloj ).

Page 78: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 78Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones secuenciales : noción de PROCESS.

• Proceso sincrónico simple : (sin inicialización asincrónica ).• Ejemplo :

process -- sin lista_de_sensibilidad begin wait until (CK'event and CK='1');COUNT <= COUNT + 1; -- legal solamente si la biblioteca

-- std_logic_unsigned a es declarada

end process;

• La señal COUNT ( std_logic_vector ) será construida por flip-flops.• Ninguna señal tratada en este process puede ser combinatoria

Page 79: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 79Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones secuenciales : noción de PROCESS.

• Proceso sincrónico simple : (sin inicialización sincrónica ).• Ejemplo ( Sintaxis 2 ) :

process (CK) begin if (CK'event and CK='1') then

COUNT <= COUNT + 1; -- legal solamente la biblioteca end if; -- std_logic_unsigned fue declarada

end process;

• La señal COUNT ( std_logic_vector ) será construida por flip-flops.

Page 80: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 80Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones secuenciales : noción de PROCESS.• Procesos sincrónicos con inicialización asincrónica.

• Ejemplo :

process (CK,RST) -- lista de sensibilidad begin if RST = '1' then

COUNT <= "0000"; -- acción asincrónicaelsif (CK'event and CK='1') then

COUNT <= COUNT + 1; -- acción sincrónicaend if;

end process;

Page 81: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 81Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Variables y señales :• Las señales :

• Objetos que pueden ser declarados en el interior de una entidad ( ports ) o de una arquitectura (señales internas).• Visibles dentro de toda la arquitectura.• La asignación de un valor a una señal se hace con un retardo ( infinitesimal ).

PROCESS y juego de instrucciones secuenciales

Page 82: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 82Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Variables y señales : Ejemplo sobre las señales :entity SIG isport (A, B, C, CK : in std_logic;

S, T : out std_logic);end SIG;

architecture ARCHI of SIG issignal TMP : std_logic; begin

processbegin

wait until CK'event and CK='1';TMP <= A or B; -- esta línea será ignorada S <= TMP;TMP <= A and C; -- anula la asignación precedente T <= TMP; -- sobre la señal TMP.

end process;end ARCHI;

A

C

CK

TMP

D Q

D Q

D Q

T

S

PROCESS y juego de instrucciones secuenciales.

Page 83: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 83Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Variables y señales :• Variables :

• Son objetos que pueden ser declarados dentro de un process (u otras entidades secuenciales).• Invisibles desde el exterior del process donde son declaradas.• La asignación de una variable se hace en el momento preciso en el cual la instrucción es ejecutada. • Las variables son utilizadas para facilitar la escritura del código, o como " artificio de escritura ".Dan al lenguaje VHDL un comportamiento similar al de un lenguaje informático ( ejecución en secuencia ).

PROCESS y juego de instrucciones secuenciales

Page 84: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 84Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Variables y señales : Ejemplo utilizando une variable :entity VAR isport (A, B, C, CK : in std_logic;

S, T : out std_logic); end VAR;architecture ARCHI of VAR isbegin

processvariable TMP : std_logic;begin

wait until CK'event and CK='1';TMP := A or B; -- esta línea será efectivaS <= TMP; -- para la asignación de la señal STMP := A and C; -- esta lo será T <= TMP; -- para la asignación de la señal T

end process;end ARCHI;

S

D Q

D Q

CK

TA

C

A

B

PROCESS y juego de instrucciones secuenciales

Page 85: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 85Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones secuenciales frecuentemente utilizadas

• IF ... THEN ... ; [ELSIF ... THEN ...]; [ELSE ...]; END IF;Similar à la asignación de señales par condición.

• CASE ... END CASE;Similar a la asignación de señales par selección.

• FOR ... LOOP END LOOP;Similar a la instrucción FOR ... GENERATE.

PROCESS y juego de instrucciones secuenciales

Page 86: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 86Ver 7.0 Reproduccion prohibida – todos derechos reservados

• IF..THEN ..;[ELSIF..THEN ..]; [ELSE ..]; END IF;

• Ejemplo :_________________________________________________________________________________________________

signal A, B, C, D : std_logic_vector(7 downto 0);signal SEL : std_logic_vector(1 downto 0);signal MUX : std_logic_vector(7 downto 0);

BLABLA : process (A, B, C, D, SEL) -- etiqueta BLABLA

-- parte declaratoria no utilizada en este ejemplobegin

if SEL = "00" then MUX <= A;elsif SEL = "01" then MUX <= B;elsif SEL = "10" then MUX <= C;else MUX <= D;end if;

end process;

Page 87: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 87Ver 7.0 Reproduccion prohibida – todos derechos reservados

• IF..THEN ..;[ELSIF..THEN ..]; [ELSE ..]; END IF;Sintaxis :

• Toda instrucción IF debe terminarse por END IF;• IF est en general seguida de ELSE.• Varios IF pueden estar enlazados, • La contracción ELSIF permite simplificar la escritura :Ejemplo 1 :

______________________________________________________________________________________________________

process (A, B, C, D, SEL) beginif SEL="00" then MUX <= A;else if SEL = "01" then MUX <= B;

else if SEL = "10" then MUX <= C;else MUX <= D;end if;

end if;end if;

end process;

Page 88: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 88Ver 7.0 Reproduccion prohibida – todos derechos reservados

• IF..THEN ..;[ELSIF..THEN ..]; [ELSE ..]; END IF;

Ejemplo 2 :______________________________________________________________________________________________________

process (A, B, C, D, SEL)beginif SEL = "00" then MUX <= A;elsif SEL = "01" then MUX <= B;elsif SEL = "10" then MUX <= C;else MUX <= D;end if; -- un solo "end if".

end process;

-- Las contracciones de ELSE IF en ELSIF permiten -- simplificar la escritura suprimiendo la necesidad de -- tantos END IF;

Page 89: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 89Ver 7.0 Reproduccion prohibida – todos derechos reservados

• IF..THEN ..;[ELSIF..THEN ..]; [ELSE ..]; END IF;

Resultados de síntesis :

0

1

0

1

0

1

"00"

SEL[1:0]

CMP=

"01"

SEL[1:0]

CMP=

"10"

SEL[1:0]

CMP=

A

B

C

D

MUX

Page 90: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 90Ver 7.0 Reproduccion prohibida – todos derechos reservados

D Q

CK

01D

EC

CK

Flip-Flop D con Clock Enable dedicado( FPGA Xilinx )

• IF..THEN ..; [ELSIF..THEN ..]; [ELSE ..]; END IF;

Utilización del Clock Enable dedicado de los Flip-Flops ( FPGAs Xilinx )

generadorde funcionescombinatorias

F o G(LUT de 4 entradas)

Porción de CLB

Page 91: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 91Ver 7.0 Reproduccion prohibida – todos derechos reservados

• IF..THEN ..; [ELSIF..THEN ..]; [ELSE ..]; END IF;• Ejemplo 3 : Utilización del Clock_Enable dedicado (con wait until):

____________________________________________________________________________________________________

architecture ARCHI of SEQUENCE isbeginprocess(CK) begin

if CK'event and CK = '1‘ thenif ENA = '1' then COUNT <= COUNT + 1;end if;

end if;end process;

end ARCHI;

-- Si ENA /= '1', el process puede ser activado por el flanco -- del reloj, pero si la condición if ENA = '1' no es verdadera -- el ultimo valor de COUNT será conservado.-- Este estilo de escritura garantiza el uso del Clock_Enable -- dedicado de los Flip-Flops FPGAs Xilinx, y permite por esto una -- economía substancial de elementos de lógica combinatoria , -- y el aumento de la frecuencias de funcionamiento ..

Utilización del Clock_Enablededicado de los FF Xilinx

Page 92: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 92Ver 7.0 Reproduccion prohibida – todos derechos reservados

• IF..THEN ..;[ELSIF..THEN ..]; [ELSE ..]; END IF;

• Ejemplo 3 b: Utilización del Clock_Enable dedicado (if CK'event...)

___________________________________________________________________________________________

architecture ARCHI of SEQUENCE isbeginprocess(CK) begin

if CK'event and CK = '1' thenif ENABLE = '1' then COUNT <= COUNT + 1;end if;

end if;end process;

end ARCHI;Utilización del Clock_Enablededicado de los FF Xilinx

Page 93: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 93Ver 7.0 Reproduccion prohibida – todos derechos reservados

• IF..THEN ..; [ELSIF..THEN ..]; [ELSE ..]; END IF;

Cuidado con los riesgos de inserción de lógica combinatoria en los caminos de reloj !

process(CK,EC)begin

if (CK'event and CK='1' and EC='1' ) then Q <= D;end if;

end process;

D Q

CK

D

EC

CK

Q

Page 94: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 94Ver 7.0 Reproduccion prohibida – todos derechos reservados

• IF..THEN ..; [ELSIF..THEN ..]; [ELSE ..]; END IF;

Informaciones complementarias :

• Después de que una condición IF es verdadera, el programa ejecuta las asignaciones relacionadas con la dicha condición, y pasa a la instrucción siguiente al END IF;Las otras condiciones no son analizadas.

• No es necesario enumerar todos lo valores posibles de las señales (cuidado con los latches y valores fijos no deseados, en particular dentro de los process combinatorios ! ).

Page 95: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 95Ver 7.0 Reproduccion prohibida – todos derechos reservados

• IF..THEN ..; [ELSIF..THEN ..]; [ELSE ..]; END IF;

Ejemplo 4: Latches no deseados

process (A, C )beginif C = '1' then S <= A;end if;

end process;

-- El process es reactivado cuando se produce un cambio -- sobre las señales A o C. Dependiendo, si C pasa de '1' a -- '0', el process es activado, pero la condición C ='1' no es -- verdadera. La asignación S <= A no ocurre nunca, y S conserva su -- antiguo valor. -- Esto se traduce por la realimentación de S sobre la entrada del -- multiplexor, para garantizar el mantenimiento del antiguo valor.

0

1A

C

S

Page 96: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 96Ver 7.0 Reproduccion prohibida – todos derechos reservados

• IF..THEN ..; [ELSIF..THEN ..]; [ELSE ..]; END IF;

Ejemplo 6 : Valores permanentes asignados a una señal.______________________________________________________________________________________________________

process (A, C)beginif C = '1' then S <= '1';end if;

end process;

-- Un solo valor puede ser asignado a la señal S el valor '1'.-- ninguna condición esta definida para asignar otro valor-- La herramienta de síntesis va por lo tanto a asignar el valor '1’-- independientemente de que la condición de C ='1' sea o no -- verdadera

S

VCC

Page 97: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 97Ver 7.0 Reproduccion prohibida – todos derechos reservados

• CASE ... END CASE :

Instrucciones que permiten revisar a todos los valores posibles de una señal.

• Todos los casos posibles deben ser enumerados.• Generalmente, el ultimo caso citado engloba todos los casos no citados explícitamente (WHEN OTHERS). • Muy utilizados en la descripción de maquinas de estado y en funciones combinatorias en forma de tabla verdad.

Page 98: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 98Ver 7.0 Reproduccion prohibida – todos derechos reservados

• CASE ... END CASE;Ejemplo :______________________________________________________________________________________________________

process (A, B, C, D, SEL) begincase SEL is

when "00" => MUX <= A;when "01" => MUX <= B;when "10" => MUX <= C;when others => MUX <= D;

end case;end process;-- WHEN OTHERS permite de citar en el ultimo lugar todos los otros -- casos posibles que no fueron citados precedentemente.-- El símbolo " => " es interpretado como “por lo tanto”.

Page 99: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 99Ver 7.0 Reproduccion prohibida – todos derechos reservados

• CASE ... END CASE;

Resultados de síntesis

"00", "01", "10"

SEL[1:0]Decodificado de Valores

MUX

A

B

C

D OTHERS

"10"

"01"

"00"

Page 100: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 100Ver 7.0 Reproduccion prohibida – todos derechos reservados

• IF ... END IF y CASE ... END CASE;IMBRICACIÓN DE IF Y DE CASE . Ejemplo :_____________________________________________________________________________________________________

process ( FASE, ACCION ) begincase FASE iswhen REPOSO => if ACCION = "00" then SALIDA <= "010";

STATUS <= "01";elsif ACCION = "10" then SALIDA <= "011";

STATUS <= "01";else SALIDA <= "000";

STATUS <= "00";end if;

when TRABAJO => if ACCION = "00" then SALIDA <= "100";STATUS <= "10";

else SALIDA <= "101";STATUS <= "00";

end if;when others => SALIDA <= "000"; STATUS <= "00";end case;end process;

Page 101: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 101Ver 7.0 Reproduccion prohibida – todos derechos reservados

• CASE ... END CASE;

• La instrucción CASE es en particular utilizada en la descripción de maquinas de estado

Page 102: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 102Ver 7.0 Reproduccion prohibida – todos derechos reservados

VHDLstatemac.vhd

Page 103: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 103Ver 7.0 Reproduccion prohibida – todos derechos reservados

VHDLstatemac.vhd

Page 104: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 104Ver 7.0 Reproduccion prohibida – todos derechos reservados

• CODIF ICACIÓN DE LAS MAQUINAS DE ESTADO : • BINARIO u ONE HOT : Dos métodos son frecuentemente utilizados para codificar maquinas de estado :

• Codificación binaria: 3 bits pueden codificar hasta 8 estados4 bits pueden codificar hasta 16 estados...

Para decodificar un estado, es necesario analizar el estado de todos los flip flops• Codificación " one hot " : 1 flip flop par estado. ( un solo flip flops esta activado en cada estado ).Para decodificar un estado, es suficiente analizar la salida del flip flop que representa ese estado.Ejemplo : codificación "one hot" de una maquina de 5 estados :Estado 0 : " 00001 "Estado 1 : " 00010 "Estado 2 : " 00100 "Estado 3 : " 01000 "Estado 4 : " 10000 "

Page 105: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 105Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Ejercicio : maquina de estados con salidas combinatorias

Lógicacombinatoria

( processcombinatorio )

Registros( process

sincrónico )CK

RST

Salidas(s)Combinatorias

BINGO

Estado Actual(señal interna)

Siguiente Estado(señal interna)

Entrada(s)DATA_IN

VALID

Page 106: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 106Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Ejercicio : maquina de estados sincrona (1)

Page 107: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 107Ver 7.0 Reproduccion prohibida – todos derechos reservados

NOTAS.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

Page 108: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 108Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Ejercicio : maquina de estados sincrona (2)library IEEE;use IEEE.std_logic_1164.all;

entity STATE is port (A: in STD_LOGIC;

B: in STD_LOGIC;C: in STD_LOGIC;CK: in STD_LOGIC;RST: in STD_LOGIC;S: out STD_LOGIC;T: out STD_LOGIC);

end STATE;

architecture ARCHI of STATE is

type ETAT_type is (S0, S1, S2, S3, S4);signal ETAT: ETAT_type;

begin

Page 109: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 109Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Exercice : maquina de estados (2)

ETAT_machine: process (CK, RST) beginif RST = ‘1’ then ETAT <= S0; S <= ‘0’; T <= ‘0’; elsif CK'event and CK = '1' thencase ETAT is

when S0 => if A='0' and B='1' then ETAT <= S2; S <= '1'; T <= '1';elsif A='1' and B='0' then ETAT <= S1; S <= '1'; T <= '0';end if;

when S1 => if A='1' and B='1' then ETAT <= S3; S <= '0'; T <= '0';end if;

when S2 => if A='1' and B='1' then ETAT <= S3; S <= '0'; T <= '0';end if;

when S3 => ETAT <= S4; S <= '0'; T <= '1';when S4 => if C='1' then ETAT <= S0; S <= '0'; T <= '0';

end if;when others => null; -- when others => ETAT <= S0; S <= ‘0’; T <= ‘0’;

-- No es una buena idea usar el « when others => null»

end case;end if;

end process;

end ARCHI;

Page 110: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 110Ver 7.0 Reproduccion prohibida – todos derechos reservados

• FOR ... LOOP :• Ejemplo 1 :

_______________________________________________________________________________________________

process (CNT) variable TMP : integer range 0 to 32;

begin TMP := 0;for I in CNT'range loop

if CNT(I) = '1' then TMP := TMP + 1;end if;

end loop;VALOR <= TMP;end process;

-- este código permite contar el número bits en '1' sobre un bus de -- 32 bits. Puede según las herramientas y sus opciones generar -- incrementadores en cascada

Variable inicializada en cada llamado al process !

Page 111: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 111Ver 7.0 Reproduccion prohibida – todos derechos reservados

• FOR ... LOOP : Ejemplo 3 :

________________________________________________________________________________________________

library IEEE; use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_UNSIGNED.all;entity CONTADOR isport ( CK, ENABLE : in std_logic;

QOUT : out std_logic_vector(7 downto 0);TERM_CNT : out std_logic );

end CONTADOR;architecture ARCHI of CONTADOR issignal COUNT : std_logic_vector(7 downto 0); beginprocess beginwait until CK'event and CK='1';

if ENABLE='1' then COUNT <= COUNT + 1;end if;

end process;QOUT <= COUNT; -- ver continuación en pagina siguiente ---->

Importante !!!

Page 112: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 112Ver 7.0 Reproduccion prohibida – todos derechos reservados

• FOR ... LOOP :• Ejemplo con utilización de una variable :

________________________________________________________________________________________________

process (COUNT) -- process combinatoriovariable TEMP : std_logic; -- parte declaratoria

beginTEMP := '1'; -- valor inicial de TEMP

-- en el inicio del buclefor I in COUNT'range loop -- nombre iteracionesTEMP := TEMP and COUNT(I); -- igual al número de bits

end loop; -- presentes en el vector COUNT;TERM_CNT <= TEMP; -- Después de la ultima iteración,

-- el valor de TEMP es asignado a la señal TERM_CNT;end process;

end ARCHI;

• La variable TEMP no es visible al exterior del process. Ella sirve de artificio de cálculo para la generación de la señal TERM_CNT ya que esta toma su valor al final del process.

Page 113: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 113Ver 7.0 Reproduccion prohibida – todos derechos reservados

• FOR ... LOOP

Resultados de síntesis

COUNT(0) COUNT(1) COUNT(2) COUNT(3) COUNT(4) COUNT(5) COUNT(6) COUNT(7)

TERM_CNT

Page 114: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 114Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Instrucciones concurrentes y secuenciales :• Ejercicio :

• Implementación del diseño siguiente :

-- SEÑALES A DECLARAR EN LA ENTIDAD :

-- ENTRADAS Y SALIDASDATA : inout std_logic_vector(7 downto 0);AEQB_R, TC_R : out std_logic;

-- SEÑALES DE CONTROLWA, WB, WR_B : in std_logic;RDA_B, RDB_B, READ_B : in std_logic;LOAD, ENA : in std_logic;ICK : in std_logic;

READ_B

D Q

CE

CK

RDA_B

WA

CK

D Q

CE

CK

RDB_B

WB

CK

WR_B

DBUS (interno)DATA(inout)

DIN(interno)

REGISTRO REGISTRO

D CNT

LD

EC

CK TC

LOAD

ENA

CK

CONTADORCARGABLE

A

B

COMPARADOR

A=B

REGB

REGA CNT

IOBs

CK

A_EQ_BD Q

AEQB_R

IOB

-- SEÑALES INTERNAS :signalDBUS, REGA, REGB, CNT : std_logic_vector(7 downto 0);A_EQ_B, TERM_CT : std_logic;-- según estrategia utilizada

CK

TERM_CTD Q

TC_R

IOB

Page 115: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 115Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Este diseño representa una interconexión bi-direccional 8 bits con un microprocesador.• Dos registros de 8 bits, REGA y REGB pueden ser escritos en el flanco de subida del reloj, según la validación de WA y de WB.• Para esto, los datos presentes sobre DATA, son transmitidos al bus DBUS cuando la señal WR_B es activa (a '0').• Por la activación de las señales RDA_B y RDB_B, los datos de REGA o REGB son transmitidos sobre el bus interno DBUS, después sobre DATA, gracias a la señal READ_B.• El registro REGA permite cargar un contador donde la salidas son comparadas con el valor de REGB para obtener la señal A_EQ_B.• La salidas del comparador (A_EQ_B) y la cuenta final del contador (TERM_CT) son sincronizados antes ser enviados a las salidas (AEQB_R y TC_R).

Page 116: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 116Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Para este diseño, utilizar las instrucciones siguientes :• Para los registros : process sincrónicos con utilización del clock enable dedicado de las Flip-Flops.• Para el contador :

• Process sincrónico con utilización del clock enable dedicado, para la parte contador;• Process combinatorio con la instrucción LOOP para la generación del TERM_CT ( cuenta terminal ).

• Para los buffers tri-state, Instrucción GENERATE con WHEN ELSE. • Para el comparador de registros dos soluciones:

• Process sincrónico ( en este caso, la declaración de la señal A_EQ_B no se usa ).• WHEN ELSE para generación de A_EQ_B, + process sincrónico para los FF de salidas.

Page 117: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 117Ver 7.0 Reproduccion prohibida – todos derechos reservados

Notas.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

.............................................................................................................

......................... ......................... ......................... ......................... .....

Page 118: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 118Ver 7.0 Reproduccion prohibida – todos derechos reservados

Gestión de la jerarquíay

VHDL estructural

Page 119: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 119Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Gestión de la jerarquía ( VHDL estructural ) :• Se effectua conectando entre si varios módulos.( similar con una netlist ).• Estilo de escritura bautizado VHDL estructural.• La operación que permite llamar a un modulo ( o caja negra ) se llama INSTANCIACIÓN.• Los elementos lógicos ( puertas, Flip-Flops ... ) generados por las herramientas de síntesis a partir de un código tipo RTL son llamados INFERIDOS ( noción de inferencia ). • Un mismo fichero VHDL puede contener a la vez código estructural ( instancias ), y código de comportamiento o RTL ( inferencia ).

Page 120: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 120Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Gestión de la jerarquía y VHDL estructural :• En síntesis Lógica, las instancias son utilizadas para :

• Gestión de la jerarquía ( el diseño es partido en varios elementos).• Uso de elementos pre-optimizados para la arquitectura en usada ( macro funciones o primitivas ).

• Ventajas e inconvenientes de las instancias de módulos específicos optimizados:

• Permiten acceder a detalles de arquitectura no necesariamente accesibles desde la herramienta de síntesis.( Ej : memoria SRAM en las familias XC4000E y XC4000XL, decodificadores rápidos... )• Limita la portabilidad de los diseños entre las arquitecturas.

Page 121: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 121Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Gestión de la jerarquía y VHDL estructural :• Condicionado automático de las instancias modulares :

En ciertas condiciones, el ancho del bus de las instancias modulares puede ser ajustado en forma automática para cada instancia. Para esto los módulos deben cumplir las siguientes condiciones:

• Ser concebidos en forma genérica ( código independiente del ancho del bus utilizado ver GENERICO ).• Ser visibles por la herramienta de síntesis, durante la compilación, al nivel jerárquico superior .

Page 122: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 122Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Gestión de la jerarquía y VHDL estructural :• Reglas a observar para la instancia de un componente :

• Declaración de la instancia. ( dentro la parte declaratoria de la arquitectura , o dentro un package ).• La declaración de los componentes necesitan la lista de puertos los que se describen dentro de la entidad del modulo correspondiente.• La asignación de las señales del componente ( modos posicionales y asociativos).• Cada instancia de un componente debe estar precedido por una etiqueta única .

Page 123: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 123Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Gestión de la jerarquía y VHDL estructural :• Ejemplo de instancia :

______________________________________________________________________________________________

entity STRUCT isport ( IA, IB, IC, ID : in std_logic_vector(7 downto 0);

SELECT : in std_logic_vector(0 to 1);CLK, ENABLE, RESET : in std_logic;QOUT : out std_logic_vector(7 downto 0));

end STRUCT;

architecture ARCHI of STRUCT is

-- declaraciones de señales internes y componentes signal MXE, MXF, MXG : std_logic_vector(7 downto 0);

component M2_1 port (A, B : in std_logic_vector(7 downto 0);

SEL : in std_logic; MX : out std_logic_vector(7 downto 0));end component;

component REGISport (DIN : in std_logic_vector(7 downto 0);

CK, ENA, RST : in std_logic;REGOUT : out std_logic_vector(7 downto 0);SPARE : out std_logic);

end component;

Page 124: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 124Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Gestión de la jerarquía y VHDL estructural :• Ejemplo de instancia ( modo asociativo) :

______________________________________________________________________________________________

beginU1 : M2_1 port map

(A => IA, B => IB, -- nombre del pin, seguido del símboloSEL => SELECT(0), -- " => " y del nombre del señal conectada MX => MXE); -- Las diferentes parejas pin/señal

-- son separadas por una coma. El orden de asignación de los pines-- a las señales no tiene importancia.U2 : M2_1 port map

(SEL => SELECT(0),A => IC, B => ID,MX => MXF);

U3 : M2_1 port map (A => MXE, B => MXF,SEL => SELECT(1),MX => MXG);

U4 : REGIS port map(DIN => MXG, CK => CLK, ENA => ENABLE, RST => RESET, REGOUT => QOUT,SPARE => open);

end ARCHI;

RESET

ENABLE

CLK

MXE[7:0]

MXF[7:0]

MXG[7:0]

IA[7:0]

IB[7:0]

IC[7:0]

ID[7:0]

ASEL MXB

M2_1

SELECT(0)

ASEL MXB

M2_1

SELECT(0)

ASEL MXB

M2_1

SELECT(1)

U1

U2

U3

DIN

REGOUT

RST

ENA

CK

QOUT[7:0]

U4

REGIS

SPARE

palabra clave !

Page 125: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 125Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Gestión de la jerarquía y VHDL estructural :• Ejemplo de instancia ( modo posicional ) :

______________________________________________________________________________________________

beginU1 : M2_1 port map

(IA, IB, -- La asignación de las señales a los pines SELECT(0), -- del componente, se hace en relación a la MXE); -- de la posición de cada pin en la declaración

-- del componente

U2 : M2_1 port map (IC, ID,SELECT(0),MXF);

U3 : M2_1 port map (MXE, MXF,SELECT(1),MXG);

U4 : REGIS port map(MXG, CLK, ENABLE, RESET, QOUT, open );

end ARCHI;

RESET

ENABLE

CLK

MXE[7:0]

MXF[7:0]

MXG[7:0]

IA[7:0]

IB[7:0]

IC[7:0]

ID[7:0]

ASEL MXB

M2_1

SELECT(0)

ASEL MXB

M2_1

SELECT(0)

ASEL MXB

M2_1

SELECT(1)

U1

U2

U3

DIN

REGOUT

RST

ENA

CK

QOUT[7:0]

U4

REGIS

SPARE

Page 126: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 126Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Gestión de la jerarquía y VHDL estructural :• Ejemplo de instanciación de memoria sincrónica :( RAM16x1s - 16 x 1 bit, sincrónica )

____________________________________________________________________________________________

library IEEE; use IEEE.std_logic_1164.all;entity MEMO_TRI is -- Modulo de memoria 16 x 6. port ( ADR : in std_logic_vector(3 downto 0);

DIN : in std_logic_vector(5 downto 0);WR, READ_B, CK : in std_logic;DOUT : out std_logic_vector(5 downto 0));

end MEMO_TRI;architecture ARCHI of MEMO_TRI issignal INT : std_logic_vector(5 downto 0); component RAM16x1s port (A3, A2, A1, A0, D, WE, WCLK : in std_logic;

O : out std_logic); end component;beginGENE : for I in DIN'range generateUA : RAM16x1S port map (

A3 => ADR(3), A2 => ADR(2), A1 => ADR(1), A0 => ADR(0),D => DIN(I), WE => WR, WCLK => CK, O => INT(I));DOUT(I) <= INT(I) when READ_B ='0' else 'Z'; -- salidas tri-state

end generate;end ARCHI;

Page 127: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 127Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Gestión de la jerarquía y VHDL estructural :• Ejemplo de instanciación de memoria sincrónica :( RAM16x1s - 16 x 1 bit, sincrónica )

______________________________________________________________________________________________

INT(5)

INT(4)

INT(3)

A3A2A1A0DWEWCLK RAM16x1S

O

A3A2A1A0DWEWCLK RAM16x1S

O

A3A2A1A0DWEWCLK RAM16x1S

O

ADR(3)ADR(2)ADR(1)ADR(0)DIN(5)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(4)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(3)

WRCK

GENE/UA4

GENE/UA5

GENE/UA3

INT(2)

INT(1)

INT(0)

A3A2A1A0DWEWCLK RAM16x1S

O

A3A2A1A0DWEWCLK RAM16x1S

O

A3A2A1A0DWEWCLK RAM16x1S

O

ADR(3)ADR(2)ADR(1)ADR(0)DIN(2)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(1)

WRCK

ADR(3)ADR(2)ADR(1)ADR(0)DIN(0)

WRCK

GENE/UA2

GENE/UA1

GENE/UA0

DOUT(5)

DOUT(4)

DOUT(3)

DOUT(2)

DOUT(1)

DOUT(0)

READ_B

Page 128: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 128Ver 7.0 Reproduccion prohibida – todos derechos reservados

Atributos

Page 129: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 129Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Atributos frecuentemente utilizados en síntesis :• Propietarios asignados a un type, a un objeto ( señal, variable o constante ) o a una entidad• Atributos definidos en VHDL :

LEFT -- valor del índice izquierdo RIGHT -- valor del índice derechoHIGH -- índice de valor mas elevado LOW -- índice de valor mas bajoLENGTH -- número de elementos ( para un vector )RANGE -- rango de índices de un vectorREVERSE_RANGE -- inverso ,,EVENT -- evento sobre un objeto

Page 130: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 130Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Atributos frecuentemente utilizados en síntesis :• Ejemplos de atributos definidos :signal DATA : std_logic_vector (15 downto 8);signal SELECTOR : std_logic_vector(2 to 5);

DATA'high -- = 15DATA'low -- = 8SELECTOR'high -- = 5SELECTOR'low -- = 2DATA'right -- = 8DATA'left -- = 15SELECTOR'right -- = 5SELECTOR'left -- = 2DATA'length -- = 8SELECTOR'length -- = 4DATA'range -- = range 15 downto 8DATA'reverse_range -- = range 8 to 15SELECTOR'range -- = range 2 to 5SELECTOR'reverse_range -- = range 5 downto 2

Page 131: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 131Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Atributos frecuentemente utilizados en síntesis :

• Ejemplos de atributos definidos ( cont ) :

signal CK : std_logic;

CK'event -- evento sobre la señal CK-- flanco de subida o bajada

CK'event and CK = '1';--flanco de subida en CK

CK'event and CK = '0';--flanco de bajada en CK

Page 132: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 132Ver 7.0 Reproduccion prohibida – todos derechos reservados

Código Genérico

Page 133: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 133Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Código Genérico :• Ancho de bus paramétrico: VHDL permite de definir dentro de la entidad el ancho de bus

por defecto, ajustable en la instancia del componente dentro de un módulo de nivel jerárquico superior.

• Valor por defecto especificado dentro de la entidad. Este valor podrá ser cambiado durante la instanciación del

elemento por un código de nivel jerárquico superior.• Ejemplo de declaración genérica de port :___________________________________________________________________________________________

entity CONTADOR isgeneric ( M : integer := 8 );port ( CK, ENA : in std_logic;

CNT :out std_logic_vector( M-1 downto 0));end CONTADOR;

Page 134: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 134Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Código genérico :• Ejemplo de declaración genérica de port (cont) :___________________________________________________________________________________________

library IEEE; use IEEE.STD_LOGIC_1164.all;use IEEE.STD_LOGIC_UNSIGNED.all;entity CONTADOR isgeneric ( M : integer := 8 );port ( CK, ENA, RST : in std_logic;CNT : out std_logic_vector(M-1 downto 0)); -- CNT est une salidas pure

end CONTADOR;architecture ARCHI of CONTADOR issignal COUNT : std_logic_vector(M-1 downto 0); beginprocess(CK, RST) begin -- todos los bits de COUNT son puestos a '0' al reset.if RST = '1' then COUNT <= (others => '0'); -- ver agregadoselsif CK'event and CK='1' then

if ENA = '1' then COUNT <= COUNT + 1; end if;end if;

end process;CNT <= COUNT; -- CNT recibe su asignación fuera del process para evitar end ARCHI; -- un segundo nivel de Flip-Flops !!!

Page 135: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 135Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Código genérico:• Instancia de un elemento genérico:

• La instancia ( pareja entidad/arquitectura ) debe estar visible por la herramienta de síntesis al momento de la compilación.• El ancho de los bus debe estar definido por medio de un valor declarado “GENERIC" con el fin de poder ser redefinido durante la instanciación .

Es por supuesto posible sintetizar por separado cada elemento de diseño. En este caso, cada elemento será sintetizado con sus valores por defecto.

Page 136: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 136Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Código genérico :• Ejemplo de instanciación de un componente genérico:___________________________________________________________________________________________

entity COUNTERS isgeneric ( T : integer := 12); port ( CK, ENA1, ENA2, RESET : in std_logic;

MAX : out std_logic_vector(T-1 downto 0));end COUNTERS;

architecture ARCHI of COUNTERS issignal COUNT1, COUNT2 : std_logic_vector(T-1 downto 0);component CONTADORgeneric ( M : integer );port ( CK, ENA, RESET : in std_logic;

CNT :out std_logic_vector(M-1 downto 0));end component;beginU1 : CONTADOR generic map ( M => T) port map (

CK => CK, ENA => ENA1, RST => RESET, CNT => COUNT1 );U2 : CONTADOR generic map ( M => T) port map (

CK => CK, ENA => ENA2, RST => RESET, CNT => COUNT2 );MAX <= COUNT1 when COUNT1 > COUNT2 else COUNT2;end ARCHI;

Page 137: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 137Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Código genérico :

• AGREGADOS : VHDL permite asignar un valor a un vector ( BUS) de la forma siguiente : _________________________________________________________________________________________________

signal DIV, SIG : STD_LOGIC_VECTOR(7 downto 0);signal TRI_ST, B : STD_LOGIC_VECTOR(13 downto 0);signal TODO_ZERO : STD_LOGIC_VECTOR(9 downto 0);signal TODO_UNO : STD_LOGIC_VECTOR(33 downto 0);begin

DIV <= SIG when A ='0' else(3 =>'1', 4 to 7 =>'0', others => 'Z');

TRI_ST <= B when A = '0' else (others => 'Z');TODO_ZERO <= ( others => '0' ); TODO_UNO <= ( others => '1' );

Page 138: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 138Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Código genérico : AGREGADOS :_________________________________________________________________________________________________

DIV <= SIG when A = '0' else( 3 =>'1', 4 to 7 =>'0', others => 'Z' );

______________________________________________________________________________________________________

TRI_ST <= B when A = '0' else ( others => 'Z');

______________________________________________________________________________________________________

TODO_ZERO <= ( others => '0' ); ______________________________________________________________________________________________________

TODO_UNO <= ( others => '1' );

TODO_ZERO[9:0]

TODO_UNO[33:0]VCC

A

SIG[2:0] DIV[2:0]

A

B TRI_ST[13:0]

SIG[7:4] DIV[7:4]

SIG(3)A

VCC

DIV(3)

others => 'Z'

3 => '1'

4 to 7 => '0'

Page 139: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 139Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Código genérico : ARRAYS ( TABLAS )

• Es posible definir tablas de objetos en dos dimensiones.• Ejemplos :

architecture ARCHI of TABLA is

type MEMORIA is array(0 to 15) of std_logic_vector(7 downto 0);

signal MEM : MEMORIA; -- 16 bytes de memoria

begin ....

architecture ARCHI of TABLA is

subtype BYTE is std_logic_vector(7 downto 0);type MEMORIA is array(0 to 15) of BYTE;-- 16 bytes de RAMsignal MEM : MEMORIA;

begin ....

Page 140: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 140Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Código genérico : ARRAYS ( TABLAS )Implementación de una tabla memoria con acceso en escritura y en lectura independientes ( de doble acceso y con escritura sincrónica ) :

library IEEE; use IEEE.std_logic_1164.all;

entity MYRAM is

generic(DATA : integer := 6;-- Ancho bus de datosADR : integer := 4);-- Ancho bus de direcciones

port ( DIN : in std_logic_vector(DATA-1 downto 0);CK : in std_logic;ADI, ADO : in integer range 0 to (2**ADR)-1 ;SALIDA : out std_logic_vector(DATA-1 downto 0));

end MYRAM;

Page 141: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 141Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Código genérico : ARRAYS ( TABLA ) contarchitecture ARCHI of MYRAM is

subtype WORD is std_logic_vector(DATA-1 downto 0);type MEMORIA is array(0 to (2**ADR)-1) of WORD; signal MEM : MEMORIA;

beginprocess(CK) beginif CK='1' and CK'event thenMEM(ADI) <= DIN; -- El elemento apuntado por ADI

end if; -- recibe el dato DIN.end process;

BLABLO : for I in 0 to (2**ADR)-1 generateSALIDA <= MEM(I) when ADO = I else (others => 'Z');

end generate; -- multiplexor de lectura por buffers-- tri_state

end ARCHI;

Page 142: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 142Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Código genérico : Informaciones complementarias :• Instrucción condicional: IF condición GENERATE :

• Sintaxis :LABEL : if CONDICION generate

--Instrucciones concurrentes...end generate;

• Las Instrucciones concurrentes no serán tomadas en consideración si la condición " CONDICION " no es verdadera.• Esta forma de escritura permite pasar los parámetros de síntesis a travéz de la jerarquía, y de hacer variar las directivas de síntesis según que la condición boleana sea verdadera o no.( ver archivos CALL_RAM y MEME_TM siguientes).

Page 143: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 143Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Código genérico : Informaciones complementarias :Instrucción condicional : IF condición GENERATE :

• Ejemplo operador de rotación:entity GENE isgeneric(N : integer := 8);port (DIN : in std_logic_vector(N-1 downto 0);

CK : in std_logic;QOUT : out std_logic_vector(N-1 downto 0)); end GENE;

architecture ARCHI of GENE iscomponent FLIP_FLOP port(

D, CK : in std_logic;Q : out std_logic); end component;

beginGENA : for I in QOUT'range generateGENB : if I = 0 generate

U1 : FLIP_FLOP port map(DIN(N-1), CK, QOUT(I));end generate;GENC : if I /= 0 generate

U2 : FLIP_FLOP port map(DIN(I-1), CK, QOUT(I));end generate;

end generate;end ARCHI;

Page 144: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 144Ver 7.0 Reproduccion prohibida – todos derechos reservados

Los sub-programasFunciones y procedimientos

Page 145: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 145Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Funciones :• Sub-programa pudiendo ser llamado una o varias veces por el programa principal. Permite organizar el código separando las partes repetidas.

• Una función necesita un o mas parámetros de entrada y regresa un valor.• Ejemplo :______________________________________________________

function BOOL_TO_BIT ( A : in boolean ) return STD_LOGIC isbegin

if A then return '1'; else return '0';end if;

end BOOL_TO_BIT;

Page 146: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 146Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Funciones :• Una función debe estar declarada antes de ser utilizada. Ejemplo :______________________________________________________

library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity FUNCION isport ( ENTRADA : in boolean; B : in STD_LOGIC;

C : out STD_LOGIC); end FUNCION;architecture ARCHI of FUNCION isfunction BOOL_TO_BIT (A : in boolean) return STD_LOGIC isbegin

if A then return '1'; else return '0'; end if;end BOOL_TO_BIT;

beginC <= B and BOOL_TO_BIT(ENTRADA);end ARCHI;

Declaración

Llamado

Page 147: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 147Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Funciones :

• Las funciones usan el juego de las instrucciones secuenciales .• Los parámetros (entradas) de la función son enteramente genéricos. Ex :

function COSA ( ABUS : in std_logic_vector) return boolean is

• Variables locales pueden ser declaradas • Las variables declaradas dentro una función son reinicializadas a cada llamado.

Page 148: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 148Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Funciones :• Las Funciones pueden estar declaradas dentro de la parte declaratoria de la arquitectura o dentro un package.• Utilizadas para efectuar las conversiones de datos ( Ex : std_logic_vector a integer ), u operaciónes lógicas y aritméticas diversas ...• Los operadores " + ", " - " , " = " ... son definidos por funciones.• Las funciones pueden ser re-definidas (sobrecargadas) con el fin por ejemplo de ser aplicables a tipos de datos no previstos inicialmente. Por ejemplo :

• El package STD_LOGIC_UNSIGNED re-define los operadores aritméticos y relacionales para las ser aplicables al tipo STD_LOGIC_VECTOR.

Page 149: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 149Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Funciones : Ejemplo de sobrecarga de funciones (operador "+" para sumas entre STD_LOGIC_VECTOR y enteros)function "+" ( A : std_logic_vector; B : integer)

return std_logic_vector is variable INT_A : integer range 0 to ((2**(A'high+1))-1);variable STD_OUT : std_logic_vector(A'range);beginINT_A := 0;for I in A'range loopif A(I) = '1' then INT_A := INT_A + 2**I; else INT_A := INT_A;end if; -- este bucle convierte el vector a entero

end loop;INT_A := INT_A + B; -- suma de 2 enterosfor J in A'reverse_range loopif INT_A rem 2 = 1 then STD_OUT(J) := '1'; else STD_OUT(J):='0';end if; INT_A := INT_A / 2; end loop; -- conversión del entero INT_A en std_logic_vectorreturn STD_OUT; -- el valor retornado es un std_logic_vector

end;

Page 150: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 150Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Procedimientos :

• Sub-programa puede ser llamado una o varias veces desde el programa principal. • Un procedimiento puede tener como parámetros objetos en modo in, out o inout.( como un "component ", pero la el tamaño de los parámetros siempre es genérico).• Los procedimientos usan el juego de Instrucciones secuenciales .• Variables locales pueden ser estar declaradas. Estaran re-iniciadas a cada llamado del procedimiento.

Page 151: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 151Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Procedimientos : Ejemplo 1:_______________________________________________library IEEE;use IEEE.STD_LOGIC_1164.all;entity PROCED isport ( A, B : in STD_LOGIC_VECTOR(9 downto 0);

SALIDA : out STD_LOGIC_VECTOR(9 downto 0));end PROCED;

architecture ARCHI of PROCEDU isprocedure MIN(signal L, M : in STD_LOGIC_VECTOR;

signal S : out STD_LOGIC_VECTOR) isbegin

if L < M then S <= L; else S <= M; end if;end MIN;

begin

MIN(A, B, SALIDA);

end ARCHI;Llamado

Especificación de la clase de objeto (señales y constantes)

Declaración de procedimiento

Page 152: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 152Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Procedimientos : Ejemplo 2 :Vector de DFF con Reset asincrónico y Load

_______________________________________________

procedure DFFARL_V ( signal DIN: in std_logic_vector;signal RESET : in std_logic;signal CLK : in std_logic;signal LOAD : in std_logic;signal DOUT : out std_logic_vector) is

beginif RESET = '1' then -- RESET asincrónico

for I in DIN'range loopDOUT(I) <= '0';

end loop; elsif (CLK'event and CLK = '1') then

if LOAD = '1' then DOUT <= DIN; end if ;

end if ;end DFFARL_V;

Page 153: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 153Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Procedimiento : Ejemplo 2 ( cont )Vector de DFF con Reset asincrónico y Load

_______________________________________________

architecture ARCHI of DFF_EJEMPLO isbegin

-- Asignación de parámetros por posiciónDFFARL_V ( DATA_IN, RST, CK, ENABLE, QOUT);

-- Asignación de parámetros por asociaciónDFFARL_V ( DIN => DATA_IN,

RESET => RST,CLK => CK,LOAD => ENABLE,DOUT => QOUT );

end ARCHI;

Page 154: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 154Ver 7.0 Reproduccion prohibida – todos derechos reservados

Packages

Page 155: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 155Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Packages(s) : Colección(es) de sub-programas ( Funciones y/o procedimientos, componentes, constantes, tipos... )

• Permiten de separar une parte del código.• Pueden limitar la portabilidad hacia otras herramientas.• Están constituidos por 2 porciones distintas:

• PACKAGE : declaración de los elementos que forman el package en si mismo.• PACKAGE BODY : código de los diferentes elementos del package.

Page 156: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 156Ver 7.0 Reproduccion prohibida – todos derechos reservados

• EJEMPLOs de packages (packages ):

• STD_LOGIC_1164 : Contiene en particular las definiciones relativas a los tipos STD_LOGIC y STD_LOGIC_VECTOR.

• STD_LOGIC_UNSIGNED : Contiene las definiciones de ciertas operaciónes relacionales y aritméticas entre STD_LOGIC_VECTORs , STD_LOGIC_VECTOR y enteros.

• packages "usuario" agrupados dentro la biblioteca " WORK ".• Utilización de un package local por las sentencias :

"USE nombre_biblioteca.nombre_package.all;"

Page 157: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 157Ver 7.0 Reproduccion prohibida – todos derechos reservados

EJEMPLO de package :library ieee; use ieee.std_logic_1164.all;

package CONVERT is -- declaracion de los elementos del Packagefunction TO_INT(A : in std_logic_vector) return integer;function TO_VEC(A : in integer; B : in std_logic_vector) return std_logic_vector;end CONVERT;

package body CONVERT is -- descripcion de las Funciones, procedimientos...function TO_INT(A : in std_logic_vector) return integer isvariable TMP : integer range 0 to (2**(A'high+1)-1); begin TMP := 0;for i in A'range loopif A(i)='1' then TMP := TMP + (2**i); end if; end loop; return TMP;

end TO_INT;

function TO_VEC(A : in integer; B : in std_logic_vector) return std_logic_vector isvariable TMP : std_logic_vector(B'high downto 0);variable INT : integer; begin INT := A; TMP := (others => '0');for i in 0 to B'high loopif (INT rem 2)=1 then TMP(i) := '1';else TMP(i) := '0'; end if;INT := INT / 2;end loop; return TMP;

end TO_VEC;end CONVERT;

Page 158: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 158Ver 7.0 Reproduccion prohibida – todos derechos reservados

EJEMPLO de utilización de un package :library ieee; use ieee.std_logic_1164.all;library work; use work.CONVERT.all;entity COMPA isport ( C : in std_logic_vector(11 downto 0);

D : in integer range 0 to 8191;SALIDA : out std_logic_vector(11 downto 0);VENTANA : out std_logic );

end COMPA;architecture ARCHI of COMPA isbeginprocess(C) begincase TO_INT(C) iswhen 503 to 4093 => VENTANA <= '1';when others => VENTANA <= '0';

end case;end process;

SALIDA <= TO_VEC((TO_INT(C) + D), C );

end ARCHI;Conversión de C en entero

Parámetro A (entero) de la función TO_VEC

Parámetro B (std_logic_vector) de la función TO_VEC

Page 159: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 159Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Creación de una biblioteca personalizada :• Puede contener 1 o varios packages.• Cada package puede contener :

• Las declaraciones de componentes• Las declaraciones de constantes• Las declaraciones de tipos y sub-tipos• Las declaraciones de funciones y procedimientos

• La biblioteca puede igualmente contener componentes ( parejas entidad/arquitectura ), genéricas o no.• Ver ejemplo en paginas siguientes.

Page 160: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 160Ver 7.0 Reproduccion prohibida – todos derechos reservados

Simulation y modelizacion en VHDL

Page 161: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 161Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Presentacion generalLas construcciones sintetizables pueden ser utilizadas en simulacion.

En simulacion podremos usar todavis mas posibilidades del lenguaje.

Page 162: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 162Ver 7.0 Reproduccion prohibida – todos derechos reservados

Ejemplos de construcciones simulables que no pueden ser usadas en sintesisSIGNAL_A <= ‘1’, ‘0’ after 100 ns;-- El tiempo no se sintetisa. En cambio-- un simulador podra tomar en cuenta-- las instrucciones “after”.-------------------------------------------------process(CK) beginif CK’event then

CNT <= CNT + 1;end if;

end process;-- Este process usa los 2 flancos del reloj (lo cual -- no se entiende en sintesis

Page 163: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 163Ver 7.0 Reproduccion prohibida – todos derechos reservados

El Testbench

Page 164: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 164Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Que es un Testbench ?

El testbench permite crear un conjunto de simulacion para nuestro diseño

Permite aplicar patterns a las entradas y capturar resultados

Page 165: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 165Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Que es un Testbench ?

FPGA

simulado

ArchitecturaDel Testbench

Entidad del testbench

Patterns de

simulacion

captura de

resultados

Page 166: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 166Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Que es un Testbench ?

FPGA

simulado

ArchitecturaDel Testbench

Entidad del testbench

Patterns de

simulacion

captura de

resultados

Otro componente

Page 167: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 167Ver 7.0 Reproduccion prohibida – todos derechos reservados

• La entidad del testbench :la entidad del testbench no lleva ports

library IEEE;use IEEE.STD_LOGIC_1164.all;

entity TESTBENCH is end TESTBENCH;

architecture ARCHI_SIMU of TESTBENCH is…

Page 168: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 168Ver 7.0 Reproduccion prohibida – todos derechos reservados

• La entidad del testbench :En cambio, sera posible definir genericos. Ejemplo :entity TESTBENCH isgeneric(PERIOD : time := 25.0 ns);end TESTBENCH ;

Architecture ARCHI_SIMU of TESTBENCH is.. beginprocess begin

CLK <= '1';wait for PERIOD /2;CLK <= '0';wait for PERIOD /2;

end process;...

Page 169: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 169Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Acceso en lectura y/o escritura a archivos ASCII

Entidad del testbench

FPGA

simulado

ArchitecturaDel Testbench

stimuli captura

Ficherosde vectoresde test

Ficherosde

résultado

Page 170: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 170Ver 7.0 Reproduccion prohibida – todos derechos reservados

Instrucciones utilizablesen simulacion

Page 171: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 171Ver 7.0 Reproduccion prohibida – todos derechos reservados

- Retrasos- Esperas- Bucles - Tipos de datos- Operadores- Acceso a archivos ASCII

Page 172: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 172Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Retrasos : AFTER RST <= ‘1’, ‘0’ after 100ns, ‘1’ after 1000ns, ‘0’ after 1100ns;-- el timing se indica relativamente al instante 0

DATA <= “01011100”, “00110011” after 150ns;

S <= A and B after 25ns;

25ns 25ns

Pulso < 25ns

ABS

Salida filtrada

Page 173: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 173Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Retrasos : TRANSPORT Permite anular la inercia de « After »

S <= transport (A and B) after 25ns;

25ns 25ns

Pulso < 25ns

ABS

La salida no esta filtrada

Page 174: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 174Ver 7.0 Reproduccion prohibida – todos derechos reservados

•Esperas : WAIT instruccion secuential (se usa en los process y sub-programas)

• La instruccion WAIT es incopatible con la lista de sensibilidad (los dos son exclusivos)• Distintos tipos de WAIT

WAIT UNTIL CONDICION;

WAIT FOR TIEMPO;

WAIT ON NOMBRE_DE_SEÑAL;

WAIT; -- suspende definitivamente la ejecucion -- del process

Page 175: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 175Ver 7.0 Reproduccion prohibida – todos derechos reservados

• WAIT UNTIL (1):

process beginwait until CK’event and CK = ‘1’;if ENABLE = ‘1’ then

ACCUM <= ACCUM + DIN;end if;

end process;

Page 176: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 176Ver 7.0 Reproduccion prohibida – todos derechos reservados

• WAIT UNTIL (2):

process beginwait until (A and B) = ‘1’;BUS_A <= BUS_B or BUS_C;wait until (A xor B) = ‘1’;BUS_A <= BUS_B xor BUS_C;wait;

end process;

Page 177: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 177Ver 7.0 Reproduccion prohibida – todos derechos reservados

• WAIT FOR :

-- generacion de un reloj

process beginCK <= ‘1’;wait for 50 ns;CK <= ‘0’;wait for 50 ns;

end process;

Page 178: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 178Ver 7.0 Reproduccion prohibida – todos derechos reservados

• WAIT ON :

IRQ <= TIMER(15);process begin

CLEAR_IRQ <= ‘0’;wait on IRQ;CLEAR_IRQ <= ‘1’;wait for 50ns;

end process;

No hay lista de sensibilidad

Esperamos un cambio de valor en la señal IRQ

Page 179: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 179Ver 7.0 Reproduccion prohibida – todos derechos reservados

• WAIT ON :

IRQ <= TIMER(15);process begin

CLEAR_IRQ <= ‘0’;wait on IRQ;CLEAR_IRQ <= ‘1’;wait for 50ns; CLEAR_IRQ <= ‘0’;wait;

end process;

Suspende definitivamente el process

Page 180: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 180Ver 7.0 Reproduccion prohibida – todos derechos reservados

Bucles

Page 181: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 181Ver 7.0 Reproduccion prohibida – todos derechos reservados

• LOOP :(se usa en los process)

for … loop …end loop;---------------------------

while … loop …end loop;---------------------------

loop … exit when …end loop;

Page 182: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 182Ver 7.0 Reproduccion prohibida – todos derechos reservados

• FOR... LOOP :• Largement utilisé en synthèse logique.

process(CK) beginif CK’event and CK = ‘1’ thenBUCLE : for I in DATA’RANGE loop

DATA_SWAP(I) <= DATA(DATA’high - I);end loop;

end if;end process;

Page 183: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 183Ver 7.0 Reproduccion prohibida – todos derechos reservados

• WHILE… LOOP :architecture TB of TESTBENCH issignal DIN : std_logic_vector(7 downto 0) := (others => ‘0’); ---beginprocess

variable I : integer range 0 to 2**DIN’high-1;begin

I := 0;BUCLE : while (A < B) loop

DIN <= SOURCE + I;I := I + 1;wait for 20 ns; -- importante adelantar el tiempo

end loop;wait; -- suspension del process end process;

end process;

Page 184: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 184Ver 7.0 Reproduccion prohibida – todos derechos reservados

• LOOP … EXIT WHEN :

processbeginDBUS <= (others => ‘0’);wait for 20 ns;BUCLE : loopexit when A > B; -- esperamos esta

-- condicion para salirDBUS <= DBUS + 1; wait for 20 ns;

end loop;wait;

end process;

Page 185: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 185Ver 7.0 Reproduccion prohibida – todos derechos reservados

Acceso a los archivos ASCII

Page 186: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 186Ver 7.0 Reproduccion prohibida – todos derechos reservados

VHDL permite acceder en lectura y escritura a archivos ASCIILa manipulacion de archivos implica la declaracion de la libreria STD, y del package TEXTIO.Este package permite-Abrir y cerrar un archivo-Escribir -Leer-Buscar la ultima linea de un archivo

Nota : el package TEXTIO no soporta la lectura ni la escritura de STD_LOGIC o STD_LOGIC-VECTOR (valores U, X, Z…). Solamente soporta los BIT y BIT_VECTOR.

Para uso directo de STD_LOGIC y STD_LOGIC_VECTOR, delarar el package STD_LOGIC_TEXTIO

Page 187: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 187Ver 7.0 Reproduccion prohibida – todos derechos reservados

•Ejemplo de lectura de datos a partir de un archivo :process

file LISTA : TEXT;variable MY_LINE : line;variable DATA_VAR : std_logic_vector(31 downto 0);variable ADR_VAR : std_logic_vector(31 downto 0);

beginfile_open(LISTA, "C:\ORIGEN.TXT", read_mode);

-- abre el archivo en lecturaBUCLE : for I in 0 to 9 loopreadline(LISTA,MY_LINE); -- lee una linea completa

-- en el archivo ORIGENread(MY_LINE,DATA_VAR); -- assigna los 32 primeros caracteres de la

-- linea a la variable DATA_VARread(MY_LINE,ADR_VAR); -- asigna los 32 caracteres siguientes

-- a la variable ADR_VARDATA <= DATA_VAR; ADR <= ADR_VAR;wait for 10ns;end loop;file_close(LISTA); wait; -- cierra el archivoend process;

Page 188: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 188Ver 7.0 Reproduccion prohibida – todos derechos reservados

•Ejemplo de escritura en un archivo ASCII :process

file RESULTADO : TEXT;variable MY_LINE : line;variable DAT : std_logic_vector(31 downto 0);

begin-- abre el archivo en escriturafile_open(RESULTADO , "C:\RESULTADO.TXT", write_mode); DAT := DATA; for I in O to 99 loop-- escribe los resultados (justificado a la derecha en un -- campo de 40 caracteres)write(MY_LINE, DAT, right, 40);

writeline(RESULTADO, MY_LINE);-- escribe la linea en el archivo

wait for 100 ns; end loop;file_close(RESULTADO); -- cierra el archivowait;end process;

Page 189: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 189Ver 7.0 Reproduccion prohibida – todos derechos reservados

Anexo

Page 190: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 190Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Palabras reservadas:absaccessafteraliasandarchitecturearrayassertattribute

beginblockbodybufferbus

casecomponentconfigurationconstant

disconnectdownto

elseelsifendentityexit

fileforfunction

generategenericguarded

ifininoutis

labellibrarylinkageloop

mapmod

Page 191: VHDL, muy sencillo - orgfree.comsolano.orgfree.com/DD/VHDL_es_ver7b.pdf · VHDL, muy sencillo... MEDIA VIDEO DISEÑO Ver 7.0 Reproduccion prohibida – todos derechos reservados P

Síntesis y simulacion para componentes programables

VHDL, muy sencillo...

MEDIA VIDEO DISEÑOwww.mvd-fpga.com

P 191Ver 7.0 Reproduccion prohibida – todos derechos reservados

• Palabras Reservadas (cont ) :nandnewnextnornotnull

ofonopenorothersout

packageportprocedureprocess

rangerecordregisterremreportreturn

selectseveritysignalsubtype

thentotransporttype

unitsuntiluse

variable

waitwhenwhilewith

xor