0% encontró este documento útil (0 votos)
219 vistas24 páginas

Integración de Entidades en VHDL

El documento describe los conceptos de integración de entidades y programación de entidades individuales en VHDL. Explica cómo VHDL permite integrar subsistemas electrónicos mediante el diseño de bloques lógicos individuales y su posterior unión, o bien evaluando el sistema de forma global a través de sus entradas y salidas. También cubre temas como el uso de señales y variables, la asignación a señales, y cómo esto afecta el número de registros inferidos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
219 vistas24 páginas

Integración de Entidades en VHDL

El documento describe los conceptos de integración de entidades y programación de entidades individuales en VHDL. Explica cómo VHDL permite integrar subsistemas electrónicos mediante el diseño de bloques lógicos individuales y su posterior unión, o bien evaluando el sistema de forma global a través de sus entradas y salidas. También cubre temas como el uso de señales y variables, la asignación a señales, y cómo esto afecta el número de registros inferidos.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

Integracin de entidades en

VHDL
Ing. Diego Barragn Guerrero
http://www.matpic.com

Introduccin
Una de las fortalezas de VHDL es la facilidad de

integrar sistemas digitales que contienen una


gran cantidad de subsistemas electrnicos con el
fin de minimizar el tamao de la aplicacin.
La integracin de entidades puede realizarse
mediante el diseo individual de cada bloque
lgico a travs de varios procesos internos que
posteriormente pueden unirse mediante un
programa comn.
Otra posibilidad es observar y analizar de
manera global todo el sistema evaluando su
comportamiento solo a travs de sus entradas y
salidas.

Programacin de entidades
individuales: Contador y decodificador

Reporte de uso de recursos.

Contador y decodificador: usando


seales.

Teclado, codificador, registro,


decodificador

Teclado, codificador, registro,


decodificador: TEST BENCH

Teclado, codificador, registro,


decodificador: uso de SEALES.

Teclado, codificador, registro,


decodificador: TEST BENCH.

SIGNAL y VARIABLES
VHDL provee con dos objetos para trabajar con valores de datos no estticos:

seales y variables.
Constantes y seales pueden ser globales (usadas en tipos de cdigo

concurrente o secuencial).
Una variable es local, usada solo en cdigos secuenciales: procesos.
SIGNAL
Una seal sirve para pasar valores de entrada o salida de un circuito, as como

entre sus unidades internas.


Todos los puertos de una entidad son seales por defecto.
Sintaxis:
SIGNAL name : type [range] [:= initial_value];
Ejemplos:
SIGNAL control: BIT := '0';
SIGNAL count: INTEGER RANGE 0 TO 100;
SIGNAL y: STD_LOGIC_VECTOR (7 DOWNTO 0);
Una seal puede modificar su valor mediante la sentencia de asignacin de

seales, que es <= (ejm: count<=35;)


Un aspecto muy importante de las seales, cuando se usa en un seccin

secuencial de cdigo (proceso), es que su actualizacin no es inmediata, sino

SIGNAL
Otro aspecto a tener en cuenta en las seales es la asignacin mltiple hecha a una

seal. El compilador puede indicar un aviso o bien no completar el chequeo de sintaxis,


o inferir un circuito errneo (considerando solo la ltima asignacin, por ejemplo).

Contador de unos (1)


El cdigo tiene mltiples

asignaciones a la misma seal


-temp- (temp <= 0; y temp
<= temp + 1;). Sin embargo,
debido a que el valor de una
seal no se actualiza de
inmediato, ambas
asignaciones entran en
conflicto, ya que el valor de la
primera asignacin no se
cumple sino hasta el final del
proceso, de tal modo que un
valor errneo se asigna en la
segunda asignacin.

VARIABLES
Contrario a un seal o constante, una variable representa solo

informacin local.
Solo puede usarse dentro de un proceso (cdigo secuencial) y
su valor no puede transferirse de forma directa.
Su actualizacin es inmediata, as el nuevo valor puede ser
usado inmediatamente en la siguiente lnea del cdigo.
Para declarar una variable se usa la siguiente sintaxis:
VARIABLE name : type [range] [:= init_value];

Ejemplos:
VARIABLE control: BIT := '0';
VARIABLE count: INTEGER RANGE 0 TO 100;
VARIABLE y: STD_LOGIC_VECTOR (7 DOWNTO 0) := "10001000";

Debido a que una variable solo puede usarse en cdigo

secuencial, debe colocarse en la parte declarativa del proceso.

VARIABLES
Contador de unos (1)
Debido a que la actualizacin de

una variable es inmediata, el


valor inicial se establece
correctamente y no hay conflicto
de asignaciones mltiples.

SIGNAL versus VARIABLE


SIGNAL

VARIABLE

Asignaci
n

<=

:=

Utilidad

Representa interconexin
de circuitos (cableado)

Representa informacin local

Global

Local (visible solo dentro del


proceso)

Visin
Entorno

En cdigo secuencial, la
actualizacin no es
inmediata (el nuevo valor
por lo general solo es
disponible a la finalizacin
del proceso).

Actualizacin inmediata (el


nuevo valor puede ser usado en
la siguiente lnea del cdigo)

Uso

En Paquetes, entidades,
arquitecturas. En una
entidad, todos los puertos
son seales por defecto.

Solo en cdigo secuencial


(dentro de un proceso, en su
parte declarativa)

SIGNAL versus VARIABLE


Recordar: la asignacin a una variable es inmediata, lo que no es

el caso de un seal. En general, el nuevo valor de una seal ser


solo disponible al finalizar del proceso. Por lo general, solo una
asignacin a seal es permitida dentro de un proceso.

Un error comn al usar seales es


olvidar que se necesita una cierta
cantidad de tiempo para actualizar
la seal. As, la asignacin
sel<=sel+1 en el cdigo resultar
en uno ms cualquier valor que haya
sido previamente propagado a sel,

SIGNAL versus VARIABLE


Recordar: la asignacin a una variable es inmediata, lo que no

es el caso de un seal. En general, el nuevo valor de una seal


ser solo disponible al finalizar del proceso. Por lo general, solo
una asignacin a seal es permitida dentro de un proceso.

Cuando se usa variables, la


asignacin de variables es
siempre inmediata.

Asignacin a SIGNAL
Recordar que un puerto es una seal por

defecto.

La asignacin q<=d y qbar<=NOT


q son ambas sncronas, de tal
modo que sus nuevos valores
sern disponibles solo al finalizar
el proceso. Esto es un problema
para qbar, debido a que el nuevo
valor de q no se ha propagado
todava. Por lo tanto, qbar tomar
el valor anterior a q, de tal modo
que el valor de qbar estar un
ciclo de reloj retardado.
Resultando en un mal
funcionamiento del circuito.

Asignacin a SIGNAL
DFF

En este ejemplo, se coloca


la asignacin qbar<=NOT q
fuera del proceso, de tal
forma que opera como una
expresin concurrente.

Divisor de frecuencia: uso de


seales y variables.
Circuito que divide la frecuencia de reloj por 6.

Divisor de frecuencia: uso de seales


La declaracin generic es una

Reset
Asncro
no

herramienta muy til cuando se


necesita varios valores de prueba
en una entidad. La lnea
GENERIC(N : INTEGER := 5);define
una variable entera N igual a 5,
que determina la divisin de
frecuencia del reloj por 6 (N+1,
debido al conteo del 0). De este
modo, para cambiar la divisin de
frecuencia a otro valor, solo es
necesario cambiar N.

Nmero de registros
Una seal genera un FF siempre que una asignacin se

hace en la transicin de otra seal, esto es, cuando


ocurre una asignacin sncrona.
Tal asignacin, siendo sncrona, solo puede suceder
dentro de un proceso (usualmente luego de la
declaracin "IF signal'EVENT..." o "WAIT UNTIL").
Una variable, por otro lado, no necesariamente
generar un FF si su valor nunca deja un proceso.
Sin embargo, si el valor es asignado a una variable en
la transicin de otra seal, y tal valor es
eventualmente pasado a un seal (la cual deja el
proceso), se inferirn FF.
Una variable genera tambin un registro cuando se
usa antes de un valor que ha sido asignado a ella.

Nmero de registros
Ejemplos:

En el precedente proceso, tanto output1 como output2

son almacenadas (esto es, infieren un FF), debido a que


a ambas se les asigna valores a la transicin de otra
seal (clk).

Nmero de registros
Ejemplo 2:

En el ejemplo precedente, solo output1 se

almacenar (output2 har uso de compuertas


lgicas).

Nmero de registros: DFF con q and qbar

Ambas soluciones funcionan adecuadamente. La diferencia

entre ellas reside en el nmero de FF necesarios en cada caso.

También podría gustarte