vhdl. introduccion se estudiará como vhdl es usado en proyectos de diseño. se analizarán las...

210
VHDL

Upload: reina-madrazo

Post on 27-Jan-2016

249 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

VHDL

Page 2: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

INTRODUCCION

Se estudiará como VHDL es usado en proyectos de diseño.

Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el lenguaje.

Se aprenderán sus elementos básicos, sus ventajas y sus desventajas.

Se discutirán los principales conceptos del lenguaje y los principales constructos.

Page 3: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

DEFINICION

VHDL es un doble acrónimo: Very High Speed Integrated Circuit. Hardware Description Languaje.

Fue desarrollado a principios de los 80´s para el departamento. de los EEUU, como una implementación, realizada por computadora para describir sistemas electrónicos.

Page 4: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

En 1987 es Estandarizado por la IEEE (Std 1076)

1993: Una nueva versión fue definida. Para los constructos comúnmente usados hay pocas

diferencias entre las dos versiones.

Page 5: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

VHDL permite

VHDL como lenguaje de alto nivel permite:

1. El modelado de ensambles electrónicos complejos.

2. La simulación de los modelos de componentes.

3. La síntesis lógica.

4. La portabilidad entre herramientas de síntesis y entre arquitecturas.

Page 6: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

VHDL permite

Definir los “ports” de entrada y salida del conjunto lógico descripto (entity).

Definir una arquitectura usando el juego de instrucciones soportado por las herramientas de síntesis (escritura RTL).

Unir los diferentes módulos descritos separadamente (VHDL estructural)

Page 7: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

EL PROCESO DE DISEÑO ELECTRONICO

Page 8: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

LIMITACIONES

VHDL es principalmente un lenguaje para diseño digital. Actualmente tiene capacidades muy limitadas en el área analógica, pero existen trabajos para crear una versión analógica del lenguaje.

El estándar 1076 define un estándar y su sintaxis, sin describir ningun “estilo” para usarlo en un diseño. Hay otros estándares que usan, o que requieren definir un “estilo” antes de usar el lenguaje en ciertas áreas.

Page 9: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

VENTAJAS

Notación formal: permite su uso en cualquier circuito electrónico.

Disponibilidad pública: no esta sometido a una patente o fábrica.

Independencia Tecnológica: soporta varias tecnologías de diseño y distintas funcionalidades.

Capacidad descriptiva: Permite el diseño en varios niveles de abstracción

Reutilización de Código: Sin importar la tecnología (CMOS, Bipolar, etc.) o la implementación (FPGA, PLD, etc.)

Page 10: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

SOPORTE PARALENGUAJE DE SINTESIS

Solo es posible sintetizar lógicamente desde un subgrupo del lenguaje de VHDL. Cada compañia tiene su herramienta que tienen su propio subgrupo ligeramente distinto de los demás.

Page 11: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

SINTAXIS

Los archivos VHDL llevan la extensión “----.VHD Minúsculas y mayúsculas no son diferenciadas en VHDL. Un objeto puede

ser indiferentemente llamado: MODULE, Module, moDulE o module

Lo mismo ocurre con 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

ni de simulación.

EJEMPLO:

- - este es un comentario

archtecture ARCHI of EJEMPLO is -- este también

begin

Los archivos VHDL llevan la extensión “----.VHD”

Page 12: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

SINTAXIS Separadores: los separadores utilizados son: “ ; ” (Punto y coma, entre dos declaraciones o al fin de una

instrucción). “ , “ (coma, entre dos nombres de señal dentro de una misma

declaración). “ : “ (dos puntos, dentro de una declaración entre el nombre de

un objeto y su tipo). “ “ (espacio). El número de espacios entre dos palabras es indiferente, siempre que el

mínimo sea respetado. Retorno carro: Una misma instrucción o declaración puede ser escrita

en varias líneas consecutivas. Los comentarios pueden ser insertados al final de las líneas sin

afectar la integridad del código. A_IN, B_IN : in bit; - -puede también escribirse : -- A_IN, --B_IN : in bit;

Page 13: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

CONCEPTOS

Page 14: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

SINTESIS

Proceso de transformar instrucciones lógicas de software en circuitos hardware que desarrollen estas instrucciones.

Page 15: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

ABSTRACCION

Cada abstracción define los detalles del diseño especificados en una descripción particular de el.

Los diferentes estilos de escribir código VHDL tienen que ver con la abstracción.

Page 16: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

NIVELES DE ABSTRACCION

1. LAYOUT: Especifica información acerca de la verdadera implementación del diseño en silicio.

2. LOGICO: se interconectan compuertas lógicas y registros.

3. RTL: (transferencia de registros):se define cada registro en el diseño, y la lógica entre ellos.

4. COMPORTAMIENTO: describe la función del diseño, sin especificar la arquitectura de los registros.

Page 17: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

SENTENCIAS

CONCURRENTES

ocurren en paralelo

SECUENCIALES

se ejecutan una después de la otra.

Page 18: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

FUNCION Es una rutina que hace una tarea particular. Cuando el programa pasa el control a una función.

Ésta realiza la tarea y devuelve el control a la instrucción siguiente a la que llamo.

Ejecutan esta tarea utilizando valores específicos, denominados argumentos, en un orden determinado.

Los argumentos pueden ser números, texto, valores lógicos como VERDADERO o FALSO, matrices, valores de error (con #N/A ) o referencias de celda.

El argumento que se designe deberá generar un valor válido para el mismo. Los argumentos pueden ser también constantes, fórmulas u otras funciones.

Page 19: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

PRODECIMIENTO

Su interés radica en las acciones que se realizan durante su invocación.

Siempre se invocan de forma aislada. Ejemplo: println(...)

Éste siempre se invoca en forma aislada. Las acciones que realiza la invocación de println

consisten en desplegar en pantalla el argumento que recibe. Es ilegal escribir asignaciones como:

x= println( ... ); porque println no retorna ningún valor.

Page 20: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

DIFERENCIA ENTRE PROCEDIMIENTO Y FUNCION

La diferencia entre un procedimiento y una función es que la función regresa al termino de la ejecución un valor específico

Page 21: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

PROCESO

El proceso es una parte del código VHDL dentro del cual las sentencias se ejecutan en secuencia. Un proceso existe dentro de una arquitectura, y múltiples procesos interactúan unos con otros de manera concurrente.

Hay procesos: combinatorios sÍncronos

Page 22: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

PROCESO

Un proceso es una parte de código en la cual las instrucciones se ejecutan en secuencia.

Una arquitectura puede contener varios proceso . Todos los proceso se ejecutan en paralelo.

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

Page 23: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Sintaxis del Proceso

Mux: process (A,B,SEL) begin if SEL = '1' then Z <= A; else Z <= B; end if;

end process MUX;

Sentencias secuenciales

Etiqueta Lista de sensitividad

Page 24: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Eventos en la lista de sensibilidad

Un proceso no se ejecuta continuamente, el proceso empieza a ejecutarse cuando una de las señales en su lista de sensibilidad cambia de valor o, en el lenguaje VHDL tiene un evento.

Mux: process (A,B,SEL)begin if SEL = '1' then Z <= A;else Z <= B;end if;end process MUX;

Page 25: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Múltiples procesos concurrentes

Mientras que cada proceso ejecuta sus sentencias en secuencia, múltiples procesos interactúan con los demás de manera concurrente al producirse un evento en las señales de la lista de sensibilidad.

Proceso Proceso

Proceso

Page 26: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Múltiples procesos en una arquitectura

architecture A of E is begin -- Sentencias Concurrentes P1: process begin -- Sentencias Secuenciales end process P1; -- Sentencias Concurrentes P2: process begin -- Sentencias Secuenciales end process P2;

-- Sentencias Concurrentes end A;

Proceso 1

Proceso 2

Page 27: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejecución de procesos

Cuando estas 2 señales son concurrentes, definen 2 drivers sobre la señal Z.

Concurrente: 2 drivers

architecture CONCURRENT of MULTIPLE is signal Z,A,B,C,D: std_logic; begin

Z <= A & B;Z <= C & D;

end CONCURRENT;

?

AB

CD

Z

Page 28: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejecución de procesos

Cuando estas 2 señales son secuenciales, el valor con el cual la señal es actualizada es el último valor que se le asigna durante el proceso de ejecución.

Secuencial: 1 driver, última asignación

architecture SEQUENTIAL of MULTIPLE is signal Z,A,B,C,D: std_ulogic; begin process (A,B,C,D) begin

Z <= A & B;Z <= C & D;

end process; end SEQUENTIAL ;

CD Z

Page 29: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Señal actualizada cuando el proceso se suspende

Las señales asignadas dentro de un proceso son actualizadas hasta cuando el proceso termina y queda suspendido.

architecture SEQUENTIAL of MULTIPLE is signal Z,A,B,C,D: std_ulogic; begin process (A,B,C,D) begin

Z <= A & B;Z <= C & D;

end process; end SEQUENTIAL ;

Page 30: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Noción de process

Un process es una parte de código en la cual las instrucciones se ejecutan en secuencia.

Una arquitectura puede contener varios process .

Todos los process se ejecutan en paralelo. El orden de escritura de las instrucciones

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

Page 31: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Implementación de Procesos

Lógica combinatoria. Lógica sincrónica. Lógica sincrónica con inicialización asincrónica.

Procesos dormidos, se les llama así a los procesos mientras las señales que los activan no cambian su estado.

Page 32: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Estructura de Proceso

[ etiqueta: ] process ( lista de sensibilidad )-- declaraciones

-- variables eventualesBegin

-- parte operatoria-- instrucciones secuenciales -- (if, case, loop)

End process;

Lista de sensibilidad, cambia la asignación de señales asignadas en el proceso.

Page 33: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Metodología de Procesos.

Lista de sensibilidad consistente. Dominación de comportamiento e implementación de

la lógica. Diseños sintetizados, sin asincronismos.

Page 34: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Proceso Combinatorio

[ etiqueta: ] process ( lista de sensibilidad )-- declaracionesBegin

-- instrucciones secuenciales -- (if, case, loop)

End process [ etiqueta];

• Lista de sensibilidad con señales que activan el proceso.• Parte declaratoria que puede contener variables.• Variable con ámbito de proceso.

Page 35: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejemplo Combinatorio.

Mux: process (A, B,SEL )

Begin

if SEL=‘0’

then SALIDA<=A;

else SALIDA<=B;

end if;

End process;

Page 36: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Estructura Proceso Síncrono

[ etiqueta: ] process -- declaracionesBegin

wait until (CK’ event and CK=‘1’); End process [etiqueta];

• El flanco de subida provoca el cambio en el estado.• wait until evalúa la condición.

Page 37: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejemplo síncrono.

ProcessBegin

wait until ( CK’ event and CK=‘1’ );COUNT <= COUNT + 1;

End process;

• COUNT es construida por flip flops• No debe haber señales combinatorias.

Page 38: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Proceso Síncrono

[ etiqueta: ] process ( CK )

-- declaraciones

Begin

if (CK’ event and CK=‘1’)

then --instrucciones secuenciales.

end if;

End process [etiqueta];

Page 39: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

[ etiqueta: ] process ( CK , RST)-- declaracionesBegin

if RST=‘1’then --acción asíncrona

elseif (CK’ event and CK=‘1’)then --instrucciones secuenciales.

end if;End process [etiqueta];

Proceso Síncrono con Inicialización Asíncrona

Cambio de prioridad por condición asíncrona

Page 40: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejemplo Síncrono

Process ( CK )

Begin

if ( CK’ event and CK=‘1’ )

then COUNT <= COUNT + 1;

end if;

End process;

• COUNT es construida por flip flops• Todas las señales deben ser combinatorias.

Page 41: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

SENSITIVIDAD

La sensitividad es el conjunto de entradas de un bloque que cada vez que tengan un cambio en su estado activan el sistema y producen una salida.

Page 42: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Lista de Sensitividad

MUX: process (A , B, SEL) begin if SEL = '1' then Z <= A; else Z <= B; end if;

end process MUX;

SEL

A

B

Z

Page 43: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Lista de Sensitividad

MUX: process (A , B) begin if SEL = '1' then Z <= A; else Z <= B; end if;

end process MUX;

Falta SEL SEL

A

B

Z

Page 44: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

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).

•La asignación de un valor a una señal se hace con un retardo (infinitesimal).

•Variables

•Son objetos que pueden ser declarados dentro de un process (u otras entidades secuenciales).

Page 45: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Entity SIG is port ( A, B, C, CK : in std_logic; S, T: out std_logic );End SIG;Architecture ARCHI of SIG is signal TMP : std_logic;begin process begin 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;

Ejemplo sobre las señales:

Page 46: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Entity VAR is port ( A, B, C, CK : in std_logic; S, T: out std_logic );End VAR;Architecture ARCHI of VAR isbegin process variable TMP : std_logic; begin wait until CK’event and CK = ‘1’ ; TMP := A or B; S <= TMP; TMP := A and C; T <= TMP; end process;End ARCHI;

Ejemplo utilizando una variable:

Page 47: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Instrucciones secuénciales: frecuentemente utilizadas.

•-IF…THEN… ; [ELSIF… THEN…];[ELSE…]; END IF;•Similar a la asignación de señales por selección.

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

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

Page 48: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

La Sentencia IF

Sintaxis if- then – else.

if CONDITION then--- Sentencias secuenciales

end if;

if CONDITION then--- Sentencias secuenciales

else--- Sentencias secuenciales

end if;

Page 49: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Estructura if – elsif.

if CONDITION then--- Sentencias secuenciales

elsif CONDITION then--- Sentencias secuenciales

elsif CONDITION then--- Sentencias secuenciales

.

.

.else

--- Sentencias secuencialesend if;

Page 50: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

IF-ELSIF

•El orden de las sentencias en la estructura if-elsif es muy importante. Más de una condición puede ser verdadera, y es la primera condición verdadera la que provoca que se ejecuten el grupo de sentencias que le siguen

if CONDITION then

-- sentencias secuenciales

elsif CONDITION then

-- sentencias secuenciales

elsif CONDITION then

-- sentencias secuenciales

else

-- sentencias secuenciales

end if;

Page 51: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejemplo de IF-ELSIF

process (A,B,C,X)

begin

If (X=“0000”) then

Z<=A;

elsif (X<=“0101”) then

Z<=B;

else

Z<=C;

end if;

end process;

•Si X tiene el valor “0000”, la condición X=0000 es probada primero, entonces a Z se le asigna el valor de A.

Page 52: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

IF… THEN… ;[ELSIF… THEN…];[ELSE…]; END IF;

Sintaxis:

Todo IF debe terminarse por END IF.

IF esta en general seguido por ELSE

Varios IF pueden estar enlazados.

La contracción ELSIF permite simplificar la escritura

Page 53: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

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

begin

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

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

begin

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;

Ejemplo 2 de IF-ELSIF

Page 54: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Utilización de Clock_Enable

architecture ARCHI of SECUENCE is

begin

process

begin

wait until CK’event and CK = ‘1’ ;

If ENABLE = ‘1’ then COUNT<=COUNT+1;

end if;

end process;

end ARCHI;

Page 55: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

architecture ARCHI of SECUENCE is

begin

process(CK)

begin

if CK’event and CK = ‘1’ then

If ENABLE = ‘1’ then COUNT<=COUNT+1;

end if;

end process;

end ARCHI;

Utilización de Clock_Enable

Page 56: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Riesgos de inserción de lógica combinatoria en la línea del reloj

Page 57: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

GESTION DE LA JERARQUIA

Page 58: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Modelo de un proceso

El modelo de simulación en VHDL consiste de múltiples procesos que se encuentran ejecutándose secuencialmente.

Proceso

____________________

Proceso

____________________

Proceso

____________________

Page 59: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Concurrentes vs. Secuencial

Este modelo puede tener cualquier numero de procesos.

El proceso es visto como una sola sentencia concurrente.

Se puede tener n número de sentencias concurrentes y por lo tanto cualquier número de procesos.

architecture A of E isbegin -- concurrent statements P1: process begin -- sequential statements end process P1; -- concurrent statements

P2: process begin -- sequential statements end process P2;

-- concurrent statmentsend A;

Page 60: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Asignación de señales en un proceso

Page 61: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Procesos concurrentes: múltiples drivers.

Architecture CONCURRENT of MULTIPLE is

signal A, B, C ,D : std_ulogic;

signal Z : std_logic;

Begin

Z <= A and B;

Z <= C and D;

End CONCURRENT;

Tenemos dos asignaciones a la señal Z, realizadas fuera de un proceso. Las sentencias fuera de un proceso son concurrentes y por lo tanto Z tiene dos drivers

??

A

B

C

D

Z

Page 62: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Dentro de un proceso: un solo driver.

Dentro de este ejemplo similar, las dos asignaciones a Z se encuentran dentro de un proceso. (Un proceso puede definir únicamente un driver en una señal)

architecture SEQUENTIAL of MULTIPLE is

signal Z, A, B, C, D : std_ulogic;

begin

process(A, B, C, D)

begin

Z <= A and B;

Z <= C and D;

end process;

end SEQUENTIAL;

C

DZ

Page 63: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

El lenguaje define que en un proceso, la última asignación hecha a una señal tiene efecto, pero únicamente cuando el proceso se suspende (final del proceso)

architecture SEQUENTIAL of MULTIPLE is

signal Z, A, B, D : std_ulogic;

begin}

process (A, B, C, D)

begin

Z <= A and B;

Z <= C and D;

end process;

end SEQUENTIAL;

Última asignación

cuando se suspende

Tiene efecto

Page 64: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Diferente significado

Estas mismas dos sentencias tienen significado muy distinto, dependiendo si se ejecutan dentro o fuera de un proceso.

process (A, B, C, D)begin

Z <= A and B;Z <= C and D;

end process;

Architecture X of MULTIPLE is…begin

Z <= A and B;Z <= C and D;

end X;

=

Page 65: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

¿Llamadas a múltiples procesos?

Un proceso puede ser potencialmente ejecutado varias veces antes de que todas las señales sean actualizadas.

Page 66: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejemplo

SEÑALES ASIGNADAS DESPUES DE UNA LECTURA.

Tenemos un proceso con asignación a la señal M, y el valor de M es también leído en el proceso

B cambia de 0 a 1.

EJEMPLO: process (A, B, M)

begin

Y <= A;

M <= B;

Z <= M;

end process EJEMPLO;

A: 0B:1M:0Z:0

Evento en B

Proceso llamado

Page 67: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Actualización de valores

Ejemplo: process(A,B,M)beginY <= A;M <=B;Z <=M;end process Ejemplo;

La asignación no es inmediata!

En este punto Z sigue teniendo valor 0!

Page 68: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Actualización de valores

A

B

M

Z

El proceso termina la primera ejecución

Z no ha sido actualizada!

T1process

T1process: Tiempo que tarda en ejecutarse el bloque “process”

Page 69: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Debido a que M ha cambiado de 0 a 1 (por la asignación M<=B), el proceso vuelve a ejecutarse

A

B

M

Z

T1process

Ejemplo: process(A,B,M)BeginY <= A;M <=B;Z <=M;end process Ejemplo;

Segunda ejecución del procesoAl ejecutarse esta línea Z no es afectada!

Page 70: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Actualización de valores

A

B

M

Z

T1

process

Termina la segunda ejecución del proceso

T2

process

Page 71: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

ENTRADA Y SALIDA

Page 72: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Definición de entrada/salida

Se necesitan dos pasos para definir las entradas/salidas.

A) El tipo buffer (entrada, salida, tres estados ,etc.)

B) La asignación de pins (pin particular del circuito)

Page 73: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Definición del tipo en el código

Inferir o instanciar la entrada y salida.

La herramienta de síntesis Xilinx es capaz de inferir automáticamente los tipos de entrada/salida.

Page 74: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Jerarquía separada para entrada/salida Existen herramientas que

no infieren en la entrada/salida básica.

Para poder instanciarlos consultar el manual de uso del fabricante.Instanciación de los

componentes de la lógica del núcleo

Buffer E/S

Nivel Superior

Page 75: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Definición del tipo en la herramienta de síntesis

Se puede realizar de forma separada la definición de entrada/salida.

Se selecciona los tipos de buffer y se asignan a los puertos de la lógica del núcleo.

Page 76: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Asignación de los pins de entrada/salida

Asignación de pins en las Herramientas de

Foundation.

User Control File (.UCF)

Con las herramientas de Xilinx, la asignación de los pins es a través del archivo (.UCF).

Page 77: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Tres estados y entrada/salida bidireccional

Dentro de la familia Xilinx es capaz de soportar entrada/salida bidireccional, de tres estados o con registros, etc.

Page 78: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Salida de 3 estados

Las herramientas de síntesis tienen la habilidad de inferir automáticamente celdas de entrada/salida tanto salidas de 3 estados como bidireccionales.

Código VHDL

Síntesis

OUT

IN

EN

OUT

EN

‘Z’

‘Z’

Page 79: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Estilo de código para inferir 3 estados.

El uso de la asignación de Z es la que permite a la herramienta de síntesis inferir en el buffer de tres estados.

if (EN = ‘0’) then OUT_PAD <= BUS_OUT;

else OUT_PAD <= ‘Z’;end if;

Síntesis

BUS _OUT OUT_PAD

EN

Page 80: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Código para inferir entradas y salidas bidireccionales

CORE_IN <= BIDI;process (CORE_OUT, BIDI)if (EN=‘0’) then BIDI <= CORE_OUT; else BIDI <= ‘Z’;end if;end process;

Síntesis

BIDIEN

CORE_OUT

CORE_IN

Sentencia concurrente

Uso de la asignación al valor Z

Page 81: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Entrada/Salida con registro

La implementación es automática utilizando un registro en la celda de entrada/salida apropiada si esta disponible.

Debe soportar el uso implícito de enable y reset síncronos en la celda.

CLK

D

Q

Terminal de Terminal de SalidaSalida

Page 82: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Inserción de registros durante MAP

Además las herramientas de implementación de Xilinx tiene un interruptor que les permite poner registros en las celdas de entrada/salida donde sea apropiado.

Page 83: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Pull-up

Xilinx en su mayoría de dispositivos permite el uso de pull-up/down, en las terminales de entrada/salida.

Page 84: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Requerimentos de ruteo especiales

En ocasiones, se requiere que las señales de reset y del reloj, tengan mejor velocidad y desempeño.

Sucede cuando alguna señal se distribuye en una red de elementos (alto fanout).

Si la herramienta de síntesis no infiere esta red, se debe especificar con STARTUP, una red llamada GSR (Global set/reset)

Page 85: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Redes para reloj

Al sintetizar Xilinx, instancia buffers globales automaticamente en redes de reloj.

Si esto no sucede, entonces debe instanciarse una celda de buffer global para manejar la red del reloj

Los Buffers Genéricos son:

XC3000 BUFG

XC5200 BUFG

XC4000E BUFGP,BUFGS

Page 86: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

BUFG

Puede ser aplicado sobre un IBUF (buffer de entrada), o sobre redes internas que manejan señales de CLK.

El efecto que tiene es conectar una señal, por la ruta mas corta, a la red sobre la que se aplica el BUFG

Ejemplos: BUFG = CLK: mapea hacia una línea global de reloj

(GCK) BUFG = OE: mapea hacia una línea global de control 3-

estado. BUFG = SR: mapea a una linea global de control

set/reset

Page 87: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Sintaxis BUFG

attribute BUFG: string; attribute BUFG of signal_name: signal is “{CLK|OE|SR|

DATA_GATE}”;

Page 88: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Señales internas de 3 estados

El uso de buffers internos ayuda en ocasiones a simplificar el diseño

Estos buffers pueden ser implementados de tres maneras:

- tres estados- and cableada- or-and cableada

Para el uso de un mux 5-1, el uso de estos elementos simplifica el diseño

Page 89: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Mux 5-1 con Buffers internos

Xilinx infiere cuando instanciar automáticamente buffer, (BUFT)

Page 90: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Decodificadores amplios(Wide Edge Decoder)

En ocasiones es de mucha utilidad contar con un decodificador de direcciones, por ello Xilinx tiene circuiteria dedicada sobre el contorno del dispositivo, por lo que las señales de entrada pueden ser decodificadas. Estos decoficadores son implementados con celdas and y pull-up.

Existe el tipo WAND, que permite instanciar este tipo de decodificadores.

Page 91: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

TIEMPO

VHDL nos permite modelar el tiempo, que es una parte importante al describir sistemas electrónicos.

Page 92: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

ESTRUCTURA

Composición de elementos.

Page 93: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

ENTIDAD

La entidad en VHDL describe la interfase de un bloque jerárquico, sin describir su comportamiento.

La entidad es equivalente a un “símbolo” en un diseño basado en una estructura esquemática.

Es la porción de código que permite definir en particular Entradas y Salidas

Page 94: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

ENTIDAD: Informaciones Complementarias

- Equivalente a símbolos en los esquemas.- Los “ports” de entrada/salida deben imperativamente

estar declarados dentro de la entidad y definir su modo:

in, out, inout, buffer.

Modo por defecto:in

- Los “ports” pueden igualmente ser declarados en forma de “señales” simples (ej. Bit) o en forma de bus (ej: bit_Vector).

Page 95: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

EJEMPLO DE ENTIDAD

Ejemplo:

entity Ejemplo is

port(

A,B:in bit_vector(7 downto 0);

SEL:in bit;

Mux_OR:out bit );

end Ejemplo;

Equivalencia Esquemática Sel

Símbolo Ejemplo

B[7:0]

A[7:0]

MUX_OR

Page 96: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

ENTIDAD: Sintaxis de declaración

entity EJEMPLO is port(Lista puertos de entrada/Salida comprimiendo:

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 97: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

ARQUITECTURA

Porción de descripción del comportamiento del dispositivo a sintetizar.

La arquitectura describe el comportamiento de la entidad.• Esta asociada a una

entidad• (dentro del mismo

fichero)• Posee una parte

declaratoria y una parte operatoria.

Page 98: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Entidad y Arquitectura

Una entidad puede tener mas de una arquitectura.

Una aplicacion es útil, esto es cuando un diseño es descrito a varios niveles de abstracción: pueden existir descripciones a nivel de comportamiento, RTL y de compuertas, del mismo diseño, o varias formas de describir el mismo circuito.

Page 99: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

PAQUETE

Un paquete tiene una colección de definiciones que pueden ser referenciados por varios diseños al mismo tiempo.

Page 100: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

ARREGLOS

Son elementos del mismo tipo. VHDL define dos tipo de arreglo estándar: bit_vector y string.

Un arreglo en VHDL tiene las siguientes tres características1.-El tipo de elementos en el arreglo (tienen que ser del mismo tipo)2.-La longitud de el arreglo3.-Los índices del arreglobit_vector representa un tipo especial de arreglo en el cual el numero de bits o la longitud del arreglo no es restringida y es puesta en la declaración del objeto

1 2 3 4Signal

C_BUS

3 2 1 0Signal

Z_BUS

Declaraciones legalessignal Z_BUS: bit_vector (3 downto 0)signal C_BUS: bit_vector (1 to 4)

Declaraciones ilegalessignal Z_BUS: bit_vector (0 downto 3)signal C_BUS: bit_vector (3 to 0)

Page 101: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

bit string literal.

Es una notación para especificar el valor de un bit_vector.

signal SIG_A: bit_vector (7 downto 0)

SIG_A <= B”1110_0011” --(22710)SIG_A 1 1 1 0 0 0 1 1

7 6 5 4 3 2 1 0

B”11111010” B”1111_1010”

B”11111010”X”FA”

O”372” B”011111010”

Designación Base

B Binaria

O Octal

X Hexadecimal

Page 102: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Asignación por posición.

Dos objetos de tipo arreglo pueden ser asignados uno al otro, mientras sean del mismo tamaño y del mismo tipo:

Notar que la asignación es por posición y no por número de índice. El concepto de bit más significativo no esta definido en VHDL.

signal Z_BUS: bit_vector(3 downto 0);

signal C_BUS: bit_vector(1 to 4);

Z_BUS(3) <= C_BUS(1);Z_BUS(2) <= C_BUS(2);Z_BUS(1) <= C_BUS(3);Z_BUS(0) <= C_BUS(4);

Z_BUS <= C_BUS;

3 2 1 0Signal

Z_BUS

1 2 3 4Signal

C_BUS

Page 103: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Parte de un arreglo. (Slices)

Una parte de un arreglo unidimensional, en general, y un bit_vector en particular puede ser referenciado, inclusive por un solo elemento. La dirección de esta parte (es decir, to o downto) debe corresponder con la dirección del arreglo declarado.

signal Z_BUS: bit_vector(3 downto 0);

signal C_BUS: bit_vector(1 to 4);

legalZ_BUS (3 downto 0) <=“00”C_BUS:(2 to 4) <= Z_BUS (3 downto 1);

ilegalZ_BUS (0 to 1) <=“111”

Los slices de vectores de bit son útiles debido a que a menudo pueden ser vistos como colecciones de campos, donde cada campo lleva una pieza de información. Por ejemplo un vector de bit que represente la instrucción de una computadora puede contener un campo representando el tipo de instrucción.

Page 104: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Concatenación y agregados.

Ahora se discuten dos conceptos conocidos como concatenación y agregado. Estos son dos métodos que sirven para asociar señales entre ellos y asignarlas a un arreglo de objetos.

Page 105: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Concatenación

VHDL tiene la habilidad de asociar bits individuales y vectores para formar una estructura de arreglo. Esto es conocido como concatenación y utiliza el operador “ampersand” (&). Los ejemplos muestran que bits individuales y vectores de bits pueden ser concatenados para formar nuevos vectores

signal Z_BUS: bit_vector(3 downto 0);

signal A,B,C,D: bit;

signal BYTE: bit_vector(7 downto 0);

signal A_BUS: bit_vector(3 downto 0);

signal B_BUS: bit_vector(3 downto 0);

Z_BUS<= A & B & C & D

BYTE<=A_BUS & B_BUS

Page 106: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Agregados.

Otro método de asignación a elementos de un arreglo es conocido como agregado.Un agregado esta contenido entre paréntesis y las asignaciones a cada elemento son separadas por comas.

Z_BUS<=(A, B, C, D);

signal Z_BUS: bit_vector(3 downto 0);signal A,B,C,D: bit;

Z_BUS(3)<=A;Z_BUS(2)<=B;Z_BUS(1)<=C;Z_BUS(0)<=D;

Page 107: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Especificando los elementos por nombre.

Es posible asignar a los elementos de un arreglo por nombre o por posición.

Este ejemplo demuestra que también un rango del arreglo puede ser asignado, siempre y cuando el mismo valor sea asignado a cada elemento del rango.

X<= (3=>’1’, 1 downto 0 =>’1’, 2=>B)

signal X: bit_vector(3 downto 0);signal A,B,C,D: bit;signal BYTE:bit_vector(7 downto 0)

nombre rango nombre

Page 108: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Others, soporte para síntesis.

Los agregados tienen la habilidad de usar la sentencia others, la cual asignará un valor a todos los otros elementos de un arreglo que no han sido especificados. Finalmente, no todas las herramientas de síntesis soportan el uso de agregados, por lo que puede ser necesario usar concatenación para realizar manipulaciones sobre arreglos.

X<= (3=>’1’, 1 =>’0’, others=>B)

signal Z_BUS: bit_vector (3 downto 0);signal A,B,C,D: bit;signal BYTE:bit_vector(7 downto 0);

Page 109: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Necesidad de mas que el “0” y el “1”

El tipo bit tiene unas limitaciones, puede solo representar el 0 y el 1. En simulación puede ser útil el poder representar otros valores, por ejemplo: desconocido, no inicializado, alta impedancia. Mientras para la síntesis puede ser útil representar una condición: don’t care

Unknown El valor era conocido pero ya no lo es. A menudo denota dos compuertas manejando el mismo nodo de salida, con conflicto entre valores.

Un-initialised El valor nunca fue conocido (prepower-up)

High Impedance La red no tiene driver

Drive strengths Maneja diferentes drivers de salida

Don’t care Implementación en sintesis. No estamos interesados en el comportamiento de la entrada/salida, la salida no esta siendo monitoreada bajo ciertas condiciones de entrada o ciertas condiciones de entrada que nunca se espera que ocurran

Page 110: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Lógica de valores múltiples

La idea de una lógica de valores múltiples, o un sistema LVM lleva un tipo de señal enumerado definido por todos los valores, junto con un grupo de funciones que realizan operaciones lógicas tales como: AND y OR sobre objetos de ese tipo.

High impedance

“Z”

Logic 0

“0”

Logic 1

“1”

Un-initialised

“U”

Unknown

“X”

Don’t care

“-”

Page 111: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

0

?

0

1

1

cc Output

input

VDD

Compuerta inversora NMOS Estática

Page 112: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Compuerta inversora NMOS Estática

RONPU

ROFFPD

Input=L

Output=Vdd ROFFP

ROFFPD RON

PU+=H

VDD

RONPU

RONPD

Output=Vdd RONPD

RONPD RON

PU+=L

VDD

Input=H

VDD

H

L

Page 113: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

0

0

0

1

1

cc Output

input

VDD

Compuerta inversora NMOS Estática

Page 114: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

OBJETOS MANIPULABLES

Los objetos que se pueden manipular en VHDL son:

1 SEÑALES: Los “ports” declarados dentro de una entidad son señales.

2 CONSTANTES: permiten definir valores permanentes

3 VARIABLES: utilizados solamente dentro de los procesos(instrucciones secuénciales).

4 ARCHIVOS (FICHEROS)

Page 115: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Declaraciòn de Objetos

La formula de declaraciòn de constantes, variables y señales es:

Tipo_de_Objeto Nombre_de_Objeto Tipo_de_Dato:=Valor Inicial

Por ejemplo:

SIGNAL nodno1: BIT:='1';VARIABLE var1:BIT;CONST pi: REAL:=3.14159;

Page 116: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Señales

Son objetos que permiten simular la interconexión de componentes dentro de la arquitectura de diseño.

Permiten representar entradas o salidas de entidades.

Page 117: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Señales

X0 y x1 no tienen asignada una terminal en la entidad de diseño (funcionan como un medio de interconexión).

Page 118: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Sintaxis general de una señal

signal id {,...} : tipo [:= expresion ];port ( { id {, ...} : direccion tipo [:= expresion];}]

Signal Reloj : std _logic :='0';signal Comparacion: bit;signal Resultado : integer range 0 to 7;port ( a,b : in integer range 0 to 7; c : out integer range 0 to 7; d : inout std_logic );

Page 119: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Señales

Forma de declarar una señal:signal identificator: tipo: [rango];

Ejemplo:signal vcc: bit: ´1´;signal suma: bit_vector: (3 downto 0);

Page 120: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Señales

las señales pueden declararse en una entidad, en una arquitectura o en un paquete.

si se quiere inicializar una señal hay que indicar un valor en [:=expression]

por ejemplo: signal s: bit:='1'; de otra manera, el valor es inicializado al valor

mas bajo del tipo de variable definido.

Page 121: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Señales

Escalar: signal name(s):=type [range_contraint][:=expression];

Vectorial: signal name(s): array_type[index_constraint] [:=expression];

Entidad: port (name(s): direction type [range_constraint][:=expression]);

Page 122: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Señales

Ejemplos: signal count: integer range 1 to 50; (el valor inicial será

1) signal GROUND: BIT:='0'; signal YS_BUS std_logic_vector (7 downto 0); port (B,A: in integer range 0 to 9); signal bogus: bit_vector; (Errónea, no hay dimensión)

Page 123: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Driver de señal

• Un conductor (driver) para una señal se define por el proceso que asigna valores a la señal.

• Los valores que viajan por los caminos de datos en un tiempo dado están contenidos en dicho conductor, el cual consta de una colección de parejas (tuplas) valor/tiempo llamadas transacciones.

Page 124: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Asignación múltiple o concurrente

Los “conductores” son creados por sentencias de asignación de señales.

Una asignación concurrente de señal dentro de una arquitectura produce un “conductor” para cada asignación de señal. Asignaciones múltiples producirán “conductores” múltiples de señal.

Page 125: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Creación de un driver

ARCHITECTURE t1 OF d1 IS

BEGIN

a <= b AFTER 10 ns ;

a <= c AFTER 10 ns ;

END t1;

Page 126: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Función de resolución

La señal ´”a” está siendo manejada por dos fuentes, b y c.

Cada asignación concurrente creará un conductor para la señal a, esto no es admitido a menos que se defina una función de resolución (resolved signals).

La forma en que esto se resuelve queda a cargo del diseñador.

Page 127: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Atributos función de las señales

S´EVENT Retorna verdadero si ocurrió un evento en S durante el corriente delta, de lo contrario devuelve falso.

S´ACTIVE Retorna verdadero si ocurrió una transición en S durante el corriente delta, else falso.

S´LAST_EVENT Retorna el tiempo transcurrido desde la transición previa de la señal S.

S´LAST_VALUE Retorna el valor previo de S antes del último evento.

S´LAST_ACTIVE Retorna el tiempo transcurrido desde la transacción previa de la señal.

Page 128: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Señales de tipo definido

Habiendo definido el tipo, podemos definir señales de este tipo. Aquí hemos declarado la señal STATE de tipo MY_STATE. Debemos observar las reglas estrictas cuando usemos estas señales: no podemos asignar nada a la señal STATE que no sea del tipo MY_STATE

type MY_SATE is(RESET, IDLE, RW_CYCLE, INT_CYCLE);

…Signal STATE: MY_STATE;Signal TWO_BIT: bit_vector (0 to 1);…

STATE<=RESET;

STATE<=“00”;

STATE<=TWO_BIT;

Page 129: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

CONSTANTES

Una constante es un objeto que se inicializaa un determinado valor y no puede ser cambiado una vez inicializado.

Sintaxis general de una constante

constant id {,...} : tipo [:= expresion];

Page 130: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejemplos

Constant Pi: real : =3.1415;constant BitsPalabra : integer :=8;constant NumPalabras : integer :=64;constant NumBits : integer :=BitsPalabras * NumPalabras;constant RetardoAND2 , RetardoOR2 : time := 2 ns

Page 131: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

VARIABLES

Una variable es un objeto que se inicializa a un determinado valor y a diferencia de una constantesu valor puede ser alterado en cualquier instante.

Sintaxis general de una variable

variable id {,....} : tipo [expresion];

Page 132: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejemplos

Variable Indice1, Indice2, Indice3 : integer := 0;variable Comparacion : boolean;variable Resultado : real;

Page 133: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

ARCHIVOS (FICHEROS)

Permiten comunicar un diseño VHDL con el exterior, el modelo lee y escribe datos persistentes.

En el paquete texti o de la biblioteca standar haytipos de datos y operaciones de lectura/escritura de archivos de texto.

VHDL soporta subprogramas para leer y escribir archivos en forma secuencial.

Page 134: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Sintaxis general de un archivo

file id {,....} : tipo [is direcciòn “nombre” ;]file id {,....} : tipo [ [ open tipo_acceso] is “nombre”;]

Ejemplos

file Estimulos : FicheroEnteros open read_mode is “datos.in”;file Salida : FicheroEnteros open write_mode id “datos.out”;

Page 135: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

ASIGNACION DE UN VALOR

A una señal se le asigna un valor, en VHDL, por medio de una sentencia de Asignación de señal.

Una Asignación a una señal define un driver sobre esa señal.

Se pueden tener multilples drivers.

Page 136: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

DEFINICION DE PUERTOS

Señales que relacionan una entidad con otra

Page 137: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Forma genérica de designar un puerto

nombre_variable: modo tipo;

Ejemplos:

puertoa: in bit; puertob: in bit_vector(0 to 7); puertoc: out bit_vector(3 downto 0);puertod: buffer bit; puertoe:inout std_logic;

Page 138: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

in  Un puerto es de modo in si la información correspondiente al mismo, entra a la entidad y se suele usar para relojes, entradas de control (como las típicas load, reset y enable), y para datos de entrada unidireccionales.

Modo de Puerto

out  Un puerto es de modo out si la información fluye hacia fuera de la entidad. Este modo no permite realimentación ya que al declarar un puerto como out estamos indicando al compilador que el estado lógico en el que se encuentra no es leíble.

buffer  Este modo es similar al modo out, pero además, permite la realimentación y no es bidireccional, y solo puede ser conectado directamente a una señal interna, o a un puerto de modo buffer de otra entidad. Una aplicación muy común de este modo es la de salida de un contador, ya que debemos saber la salida en el momento actual para determinar la salida en el momento siguiente.

inout Es usado para señales bidireccionales, es decir, si necesitamos que por el mismo puerto fluya información tanto hacia dentro como hacia afuera de la entidad. Este modo permite la realimentación interna y puede reemplazar a cualquiera de los modos anteriores, pudiéndose usar este modo para todos los puertos.

Page 139: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Tipos Nativos para VHDL

booleanPuede tomar dos valores: verdadero/true o falso/false. Un ejemplo típico es la salida de un comparador que da verdadero si los números comparados son iguales y falso si no lo son

bitPuede tomar dos valores: 0 ó 1 ( o también "low" o "high", según se prefiera). Es el tipo más usado de los nativos

bit_vector Es un vector de bits. Debemos tener cuidado al definir el peso de los bits que lo integran, ya que según pongamos la palabra reservada downto o to estaremos diciendo que el bit más significativo es el número más alto o el más bajo del vector, respectivamente..

numero : bit_vector (0 to 7);numero : bit_vector (7 downto 0);

integer Para mantenerr números enteros. Hay que advertir que el uso de enteros consume muchos recursos del dispositivo de lógica programable, siempre y cuando sea sintetizable, debido a que está prácticamente creado para la simulación.

Page 140: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

• Definir un modelo de comportamiento sintetizable (ARCHITECTURE)Usando el juego de instrucciones soportado por las herramientas de síntesis

architecture archpro of programa is

-- Declaración de señales y otros accesorios

Begin

-- Núcleo del programa

End archpro;

Para describir una arquitectura podremos usar cuatro estilos

Estilo behavioral Estilo dataflow Estilo structural Estilo mixto

Page 141: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Estilo behavioral

architecture behavioral of compa isbegincomp: process (a, b)  begin   if a= b then    igual<='1';   else    igual<='0';   end if;  end process comp;end behavioral;

entity compa is port (a,b: in bit_vector(3 downto 0);igual: out bit);end compa;

Estilo dataflow

architecture dataflow1 of compa isbegin   igual<='1' when (a=b) else '0';end dataflow1;

architecture dataflow2 of compa isbegin   igual<= not(a(0) xor b(0))       and not(a(1) xor b(1))       and not(a(2) xor b(2))       and not(a(3) xor b(3));end dataflow2;

Page 142: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Estilo structural

architecture struct of compa issignal x: bit_vector(0 to 3);

Component xnor2 Port (e1,e2:in bit; y:out bit);End component;

Component and4 Port (e1,e2,e3,e4:in bit; y:out bit);End component;

begin u0: xnor2 port map (a(0),b(0),x(0)); u1: xnor2 port map (a(1),b(1),x(1)); u2: xnor2 port map (a(2),b(2),x(2)); u3: xnor2 port map (a(3),b(3),x(3)); u4: and4 port map (x(0),x(1),x(2),x(3),igual);end struct;

Estilo mixto

Page 143: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Estilo de Escritura RTL (Register Transfer Level)

Netlist Describe los componentes que posee y las conexiones entre ellos (Estilo Estructural)

RTL Describe el comportamiento de cada entidad

Page 144: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

CONCEPTO DE TIPO DE DATO

Todos los objetos en VHDL son de un tipo dado. Un tipo de dato se caracteriza por el conjunto de valores que puede tomar y los operadores que

se le puede aplicar a un objeto.

Page 145: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

TIPO

El tipo define un conjunto de valores y una asignación a esa señal debe ser un valor definido por ese conjunto.

Cuando hacemos una asignación a una señal, los tipos en ambos lados del operador de asignación de señal deben corresponder.

Page 146: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Declaraciòn de tipos de datosSintaxis general

type id is definiciòn_tipo;

Ejemplos

type DiaMes is range 1 to 31 ;type Dela31 is range 1 to 31;type Orientacion is (norte,sur,este,oeste);

Uso

constant DiasEnero : DiasMes :=31;variable DiaHoy : DiaMes;signal Direcciòn : Orientacion;

Page 147: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Los tipos deben corresponder

Cuando hacemos una asignaciòn a una señal, los tipos en ambos lados del operador de asignaciòn de señal deben corresponder.

Ejemplo: Entity HALFADD is port (A,B : in bit; SUM, CARRY : out bit); end HALFADD;

Page 148: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Tipos predefinidos

Escalares Enumerados BOOLEAN,BIT,CHARACTER Enteros INTEGER Físicos TIME Flotantes REAL

Compuestos Arrays STRING,BIT_VECTOR

Page 149: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

• Otros

Puntero

ACCESS

Archivos

FILE

Page 150: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

TIPO BOOLEAN

Este tipo de dato puede tomar un valor

falso o verdadero

TRUE FALSO

Cuando se comparan dos valores de tipo boolean

el resultado también es de tipo boolean.

Page 151: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

TIPO BIT

El tipo BIT sirve para modelar niveles lógicos.Conjunto de valores ‘0’ y ‘1’

Operaciones definidas sobre el: Lógicas: not,and,nand,or,nor,xor y xnor Comparación: ‘=‘, ‘/=‘,’<‘, ‘<=‘, ‘>’, ‘>=‘ Concatenación: &

type bit is (‘0’, ‘1’)

Page 152: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

TIPO CHARACTER

Se utiliza para definir un solo carácter.

‘A’

‘b’

‘x’

Page 153: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

TIPO INTEGERUn tipo integer es un dato cuyo contenido es unvalor numerico entero que esta dentro del siguiente rango :2,147,483,647 a +2,147,483,647.

Ejemplos+1682-139+239

TYPE Integer IS 0 TO 255;TYPE index IS RANGE 7 DOWNTO 1;

Page 154: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

TIPO TIME

El tipo TIME sirve para especificar valores de

tiempo en los modelos

Se define la unidad básica y las derivadas de ellas.

type time is orange -2147483647 to 2147483647

units

fs;

ps = 1000 fs;

ns = 1000 ps;

us = 1000 ns;

min = 60 sec;

end units;

Page 155: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

TIPO REAL

Conocidos también como coma flotante,

son los tipos que definen un numero

real. Al igual que los enteros se definen

mediante la palabra clave RANGE, con la

diferencia de que los límites son números

reales.

Page 156: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

TIPO STRING

El tipo string se define como un arreglo

de cadenas de caracteres.

Ejemplos

“error en sincronia”

“Hola Mundo”

Page 157: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

TIPO BIT_VECTOR

El tipo bit_vector es un arreglo de bit: Permite modelar buses con un solo driver Solo admite valores ‘0’ y ‘1’

"0101_1001"x"00AF"

type bit_vector is array (natural range <>) of bit;

Page 158: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

SUBTIPOS DE DATOS

VHDL permite la definición de subtipos

que son restricciones o subconjuntos de

tipos existentes.

Hay dos tipos, el primero son subtipos

obtenidos a partir de la restricción de un

tipo escalar a un rango.

Page 159: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejemplo:

SUBTYPE raro IS integer RANGE 4 TO 7;SUBTYPE digitos IS character RANGE '0' TO '9';

El segundo tipo de subtipos son aquellos que restringen el rango de una matriz:

Ejemplo:

SUBTYPE id IS string(1 TO 20);SUBTYPE word IS bit_vector(31 DOWNTO 0);

Page 160: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Tipos enumerated.

Un tipo de datos definido por el usuario es conocido en VHDL como un tipo enumerated. Lo más común es definir los tipos dentro de un paquete, arquitectura o proceso, y la mayoría de las herramientas de síntesis son capaces de sintetizar VHDL que contiene tipos enumerated.

Page 161: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Síntesis de tipo enumerated La mayoría de las herramientas de síntesis pueden construir lógica desde una señal

del tipo enumerated. Usualmente la señal tiene el número mínimo de bits requerido para representar el número de valores posibles. Este ejemplo muestra cada como cada valor es usualmente codificado en la implementación del hardware.

RESET “00”IDLE “01”RW “10”INT_CYCLE “11”

Mínimo número de bits

type MY_SATE is(RESET, IDLE, RW_CYCLE, INT_CYCLE);

Codificación de derecha a izquierda en secuencia binaria

Page 162: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

TIPO PREDEFINIDO (enumerated)

Son especificados como código fuente de VHDL, y se encontran en un paquete llamado STANDARD:

Boolean Time Bit Bit_vector

Character String Integer real

Page 163: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

STANDARD_LOGIC

El Estándar 1164 está definido en código fuente VHDL puro y describe un tipo de dato llamado “std_ulogic”, el cual define los nueve estados posibles.

Page 164: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

TIPO STD_ULOGIC

El tipo std_ulogic es un tipo de dato unresolved, y puede tener un solo driver. De hecho, la “u” se refiere al hecho de que es de tipo unresolved.

Page 165: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

TIPO STD_LOGIC

Hay otro tipo definido, llamado “std_logic”. el cual es una versión tipo resolved de std_ulogic y

puede tener mas de un driver. El tipo std_logic tiene los mismos nueve estados de

std_ulogic.

Page 166: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

VECTORES TIPO STD_LOGIC Y STD_ULOGIC

El paquete también contiene la definición de los arreglos de std_logic y std_ulogic, conocidos como std_logic_vector y std_ulogic_vector. estos tipos tienden a ser usados para describir estructuras de bus en la forma como el tipo bit_vector.

Los tipos std_logic y std_logic_vector, son los recomendados para usar en los diseños.

La razón para esto es que hay otros estandares para usar VHDL que están basados en estos tipos en lugar de std_ulogic y std_ulogic_vector.

Page 167: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Asignar std_logic a std_ulogic.

Como se muestra en el diagrama es posible asignar objetos de tipo std_logic a objetos del tipo std_ulogic, y viceversa.

Page 168: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

std_logic para drivers múltiples

Si hay múltiples drivers en una señal se debe usar el tipo std_logic, ya que no es valido tener mas de un driver en un tipo de dato unresolved.

Z o RES_Z ?

signal A,B,Z: std_ulogic;

signal RES_Z: std_logic;

Z<= A; Z<= B;

RES_Z<= A; RES_Z<= B;

Page 169: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Cláusulas library y use

El paquete de definiciones está contenido en una biblioteca llamada IEEE. Es necesario hacer referencia tanto a la biblioteca como al paquete, como es mostrada en el diagrama. Se deben usar estas líneas de código antes de describir las entidades que usan en el Standard Logic.

library IEEE; --hace visible la biblioteca

use IEEE.Std.Logic_1164.all; --hace todo el contenido del paquete visible

entity MVLS is

port (A,B: in std_ulogic;

Z: out std_ulogic);

end MVLS;

Page 170: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

OPERADORES LOGICOS

Tienen la misma precedencia, y se ejecutan de izquierda a derecha en la sentencia.

Page 171: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

OPERADORES RELACIONALES

Los operadores deben ser del mismo tipo, pero el número de bits comparados puede ser diferentes.

Page 172: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

OPERADORES ARITMETICOS

Operan sobre objetos de tipo INTEGER.

Pueden igualmente operar sobre STD_LOGIC_VECTOR utilizando los paquetes STD_LOGIC_UNSIGNED y STD_LOGIC_ARITH.

Page 173: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

OPERADORES DE DESPLAZAMIENTO

rol ( rotate left ) ror ( rotate right ) sll ( shift left logical ) srl ( shift rigth logical ) sla ( shift left arithmetic ) sra ( shift right arithmetic )

Operan sobre objetos de tipo: bit_vector std_logic_vector, std_ulogic_vector

Page 174: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

INSTRUCCIONES SECUENCIALES Y CONCURRENTES

Page 175: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Sentencias secuenciales y concurrentes

Sentencias concurrentes. Se ejecutan al mismo tiempo.

En paralelo.

Sentencias secuenciales. Se ejecutan una a la vez.

En secuencia.

Page 176: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Instrucciones concurrentes

Las operaciones se efectúan al mismo tiempo (en paralelo) :

El orden de escritura de las instrucciones no afecta el resultado de la síntesis o simulación.

El estilo de escritura es comparable a los lenguajes de programación de los PALs (ecuaciones lógicas).

Page 177: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejemplo

Entity CONCURRENT is port(A, B, C : in bit; S, T : out bit); end CONCURRENT;Architecture ARCHI of CONCURRENT is begin S <= (A and B) and not(C); T <= B xor C; end ARCHI;

Page 178: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejecución en paralelo orden independiente

El comportamiento de sentencias concurrentes es independiente del orden en el cual sean escritas.

X <= A + B;

Z <= C + X;

Z <= C + X;

X <= A + B;

Page 179: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Asignación concurrente Los diseños esquemáticos son usados para representar

hardware, por lo que son concurrentes por naturaleza.

X <= A + B;

Z <= C + X;Z <= C + X;

X <= A + B;

++

AB

CZ

Page 180: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Asignación Concurrente

Consideremos la sentencia x <= x + y.

X <= x + y;

En Software;

Registro X Registro X

+

Page 181: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

No para Hardware Siendo una sentencia concurrente, esta misma línea de

código está describiendo un sumador, sin registros de almacenamiento implícitos.

X <= x + y;

En Hardware;

+

x y

x

Page 182: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Instrucciones secuenciales

Las operaciones se efectúan en secuencia. El orden afecta los resultados de simulación y sintésis. 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: PROCESO o subprogramas.

Page 183: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejemplo

Architecture ARCHI of SECUENCIA isbegin process begin wait until CK’event and CK = ‘1’;

if ENA = ‘1’ then COUNT <= COUNT+1; end if;

end process;end ARCHI;

Utilización del Clock_Enable Dedicado de los Flip Flops Xilinx

Page 184: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

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 el valor_z es indicado directamente después

de “else”. (El símbolo de asignación “<=” es implícito)

Page 185: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejemplo

entity CONCURRENT is port (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 186: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejemploentity CONCURRENT is

port (A, B, C : in bit; S, T : out bit);

end CONCURRENT;

architecture ARCHI of CONCURRENT is

Begin

if (c = ‘1’) then S <= A

else S <= B;

T <= B xor C;

end ARCHI;

Page 187: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejemplo

Entity CONCURRENT is

port (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 <= not B;

end ARCHI;

Page 188: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

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

Estas instrucciones generan:

A

B

C

S TB

Page 189: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejemplo

Entity TRISTATE is port (A, B, C, : in std_logic; S : out std_logic );end TRISTATEArchitecture ARCHI of TRISTATE isbegin S <= A when C = ‘0’ else ‘Z’; S <= B when C = ‘1’ else ‘Z’;end ARCHI;

Page 190: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

A

C

B S

Page 191: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Entity is port (A, B : in std_logic_vector(15 downto 0); C : in std_logic; S : out std_logic_vector(15 downto o));end TRISTATE;Architecture ARCHI of TRISTATE isbegin S<=A when C=‘0’ else “ZZZZZZZZZZZZZZZZ”; S<=B when C=‘1’ else “ZZZZZZZZZZZZZZZZ”;End ARCHI;

Page 192: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

C

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

A[ 15:0]

Page 193: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Asignación de señales por selección.with - select

Ejemplo:

with signal_x select

signal_y <= valor_y1 when “00”,

valor_y2 when “01”,

valor_y3 when “10”,

valor_y4 when others;

Page 194: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejemplo 2:

architecture archi of muxAndNot is begin with SEL select S <= A when “00”, B when “01”, C when “10”, D when others; T <= not B, end archi

AABBCCDD BB

SEL[1:0SEL[1:0]]

TT

SS

Page 195: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ciclos con:for - in – to - generate

Sintaxis:

LABEL: for i in enteroA to enteroB generate --Instrucciones concurrentesend generate;

i No necesita declararse previamente y no puede modificarse su valor dentro del ciclo.

enteroA y enteroB definen el número de iteraciones. LABEL es de uso obligatorio. generate puede ajustarse empleando range.

Page 196: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Decodificador.Hexadecimal – 7 Segmentos. Tabla de verdad:

a

b

c

d

e

fg

111000111111111FF

111100100111111EE

101111011001111DD

011100100001111CC

111110011110011BB

111011100110011AA

11011111100001199

11111110000001188

00001111111110077

11111010011110066

11011011100110055

11001100000110044

10011111111000033

10110110011000022

00001101100000011

01111110000000000

ggffeeddccbbaaDDCCBBAA

Page 197: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Decodificador BCD – 7 Segmentos

with BCDIN selectdisplay <= “0000000” when x “0”, “0000000” when x “1”, “0000000” when x “2”, “0000000” when x “3”, “0000000” when x “4”, “0000000” when x “5”, “0000000” when x “6”, “0000000” when x “7”, “0000000” when x “8”, “0000000” when x “9”, “0000000” when x “a”, “0000000” when x “b”, “0000000” when x “c”, “0000000” when x “d”, “0000000” when x “e”, “0000000” when x “f ”, “0000000” when others;

Page 198: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

CONFIGURACION

La configuración es como una lista de partes, especificando cual arquitectura debe ser usada para cada entidad del diseño.

Permitir una configuración por default permite que el código sea más portable.

Page 199: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

CONFIGURACION

Es el enlace entre cada nivel de la jerarquía, y la especificación de cual arquitectura es la que debe ser usada

Page 200: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

COMPILACION Después de que se ha

escrito el código de VHDL en un archivo de texto, el código es analizado para determinar si tiene errores de sintaxis, y se crea un archivo binario.

Este proceso es realizado por unas de las herramientas para compilación y por otras herramientas para análisis.

Page 201: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

MAPEO DE BIBLIOTECAS

Las herramientas de simulación y síntesis de VHDL acceden a un archivo que tiene un mapa de los nombres de las bibliotecas de VHDL con los directorios físicos en la computadora.

VHDL también permite definir una biblioteca llamada WORK como la biblioteca en la cual las unidades de diseño son compiladas sino se especifica una biblioteca

Page 202: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Como se ejecuta una simulación

Page 203: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Mecanismo de ColaEn un momento dado dentro de una simulación se generan 2 colas:

Cola de señales a actualizar Cola de procesos a ejecutar

Actualización de la señal

Ejecución del proceso

Page 204: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Proceso puesto en la cola Cuando una señal es actualizada en un punto específico

del tiempo de simulación, todos los procesos que son sensitivos a esa señal son puestos en una cola de procesos en ejecución.

Actualización de la señal

Ejecución del proceso

Instrucción: M <= B;

B actualizada

Proceso puesto en la cola

Page 205: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Una cola de señales actualizadasLas señales que son asignadas en cada proceso no son actualizadas inmediatamente después de que el proceso se suspende, son puestas en una cola de señales actualizadas.

Las señales son actualizadas cuando todos los procesos han sido ejecutados.

Page 206: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ciclo Delta Como resultado de la actualización de las señales, otros procesos

pueden ser ejecutados en la cola de procesos en ejecución.

Un ciclo que cubre esta secuencia es conocido como un ciclo Delta.

Actualización de la señal

Ejecución del proceso

Ejemplo: process(A,B,M)BeginY <= A;M <=B;Z <=M;end process Ejemplo;

Page 207: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Ejecución sobre el tiempo

Page 208: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

Múltiples deltas en cada punto de tiempo de simulación

Varios ciclos delta en una simulación En cada punto del tiempo de simulación se

ejecuta el ciclo delta, hasta que no haya mas asignaciones o procesos en ejecución

Actualización de la señal

Ejecución del proceso

Actualización de la señal

Ejecución del proceso

Tiempo de simulación

Avanza a la siguiente actividad

Page 209: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

La cláusula “after” La asignación de una señal es colocada en

una cola de “señales actualizadas” en un tiempo en el futuro, en lugar del tiempo actual

Tiempo de simulación

Z <= A after 5ns;

5 ns

Z puesta en esta cola

Page 210: VHDL. INTRODUCCION Se estudiará como VHDL es usado en proyectos de diseño. Se analizarán las aplicaciones de VHDL y los diferentes estilos para usar el

La cláusula “wait for”

Tiempo de simulación

Z <= A;

wait for 5 ns;

5 ns

Z puesta en esta cola