Está en la página 1de 7

Electrónica Digital

Dpto Ing. Electrónica 1

Práctica 8
Introducción al lenguaje VHDL (parte 2)

1. Introducción..................................................................................................................................................2

2. Ejercicios para la práctica ..............................................................................................................................3


2.1. Contador síncrono de 4 bits(contadorN.vhd y contadorN_tb.vhd)............................................................3
2.1.1. Ejercicio 1: simular un contador de módulo 10 y con señal de habilitación.......................................3
2.1.2. Ejercicio 2: simular el contador anterior pero reversible ..................................................................3
2.1.3. Ejercicio 3: Realizar la síntesis del circuito anterior y su ejecución en proteus. .................................4
2.2. Contador de N bits con salida de 7 segmentos(contadorN.vhd, top_contador.vhd y bcd7seg.vhd) ...........4
2.2.1. Ejercicio 4: simulación del contador reversible de módulo 10 con entrada de habilitación. ..............5
2.2.2. Ejercicio 5: Síntesis del circuito anterior ..........................................................................................5
2.2.3. Ejercicio 6: Simular el contador módulo 10 reversible módulo 10 con entrada de habilitación pero
diseñado con un único fichero. .................................................................................................................6
2.3. Registro de desplazamiento para generar dos salidas desplazadas un tiempo fijo. ..................................6
2.3.1. Ejercicio 7: Simular el registro de desplazamiento. ..........................................................................6
2.3.2. Ejercicio 8: Síntesis del registro de desplazamiento. .......................................................................6

3. Ejercicios adicionales ....................................................................................................................................7


3.1. Simular un circuito con 3 biestables: Latch, biestable D con reset asíncrono y síncrono. ...........................7
3.2. Simular un multiplexor de 8 entradas en la que cada entrada es un vector de 3 bits. ...............................7
3.3. Simular un decodificador de 2 a 4 con salidas activas a nivel bajo y señal de habilitación. .......................7

4. Consideraciones sobre la práctica .................................................................................................................7

Objetivos:
 Conocer la diferencia entre un circuito combinacional y otro secuencial.
 Entender la diferencia entre diseño secuencial síncrono y asíncrono.
 Comprobar que un proceso se ejecuta cuando cambia alguna de las señales de su
lista sensible.
 Confirmar que una señal solo puede asignarse de dos formas: (a) directamente en
la arquitectura o (b) dentro de un proceso. En ningún caso puede asignarse en
diferentes procesos ya que daría lugar a varios circuitos con la misma salida (la
señal asignada). Eso sería un cortocircuito y se muestra como una línea roja en la
simulación.
 Generar estímulos para una señal de reloj.
 Diseño de un sistema con una estructura jerárquica.
 Visualizar señales internas de un sistema.

Profesores de prácticas:
 Carlos Janer, janer@us.es
Estas prácticas han sido concebidas y redactadas por el profesor Rafael Millán.

Rafael Millán
2 Lenguaje VHDL

1. Introducción
En la práctica anterior se realizaron diversos ejercicios con circuitos
combinacionales (no tienen elementos de memoria –biestables-). En esta segunda
práctica se diseñarán circuitos secuenciales.
La presencia de biestables en estos circuitos implica la utilización de dos señales
de entrada: el reloj y el reset. En el lenguaje VHDL habría que declarar en la entidad
(ENTITY) ambas entradas.
El reloj sincroniza en qué momento los biestables pueden capturar los datos que
hay en sus entradas. El reset permite dar un valor inicial a los biestables cuando arranca
el sistema. Por ejemplo, los ordenadores tienen, al menos, dos posibles eventos que
generan un reset: el power-on-reset (resetautomático al detectar que se acaba de dar
tensión al sistema) y el botón de reset -para reiniciar manualmente-. Ambos eventos
permiten dar un valor inicial a los miles biestables que constituyen autómatas que
gobiernan el sistema.
Un concepto muy importante en el diseño de circuitos secuenciales es la diferencia
entre circuitos síncronos y asíncronos. Un circuito asíncrono es aquel en el que los
biestables no utilizan una misma señal para sus entradas de reloj. El esquema siguiente
corresponde a un contador de 4 bits asíncrono. El reset es común pero no así el reloj.

Un buen diseño digital es aquél que utiliza lógica síncrona. Es decir, todos los
biestables tienen la misma señal de reloj. Por tanto, todos los biestables capturan sus
entradas en el mismo instante. Ese instante es el flanco activo de la señal de reloj. Podría
ocurrir que en un diseño complejo, ciertos biestables capturen sus entradas con el flanco
de subida y otros con el flanco de bajada. En este caso particular seguiría siendo un
diseño síncrono ya que los biestables solo podrían conmutar en un instante que está
sincronizado por la señal de reloj. Unos biestables conmutarían con el flanco de subida y
otros con el de bajada; pero sincronizados por una misma señal de reloj. El siguiente
esquema corresponde a un contador síncrono de 4 bits activo por flanco de bajada del
reloj. Ahora tanto la señal de reloj como la de reset son comunes a todos los biestables.

Como comentario final a esta introducción, afirmar que un buen diseño digital es
un diseño síncrono. El hecho de que las salidas de los biestables estén todas
sincronizadas por una única señal (el reloj) evita que haya pulsos parásitos (glitches) en
el sistema.
Lenguaje VHDL 3

2. Ejercicios para la práctica

En esta práctica se simularán dos circuitos que se descargarán desde la web de la


asignatura: un contador y un registro de desplazamiento. Se propondrán diferentes
comprobaciones y modificaciones a dichos circuitos. También se realizará la síntesis de
los circuitos modificados y, el resultado final, se simulará con el programa PROTEUS. Si
se dispusiera de una tarjeta con la PAL22V10 se podría programar y probar su validez
dando tensión (ya no sería simulación).

2.1. Contador síncrono de 4 bits(contadorN.vhd y contadorN_tb.vhd)

El fichero contadorN.vhd utiliza un parámetro llamado N. Está declarado como


GENERIC en la ENTITY para parametrizar el tamaño del contador. En el fichero de
estímulos se crea un componente contador con un tamaño de N=4 bits. El contador es
activo por flanco de subida del reloj (flanco activo) y la señal de reset es activa a nivel
bajo.
Dado que la PAL22V10 es un dispositivo que dispone solo de 10 biestables tipo D,
la síntesis se encargará de incluir la circuitería necesaria para conseguir 4 biestables tipo
J-K a partir de 4 biestables tipo D.

2.1.1. Ejercicio 1: simular un contador de módulo 10 y con señal de habilitación

El fichero de los apuntes contiene la entrada enableque permite contar cuando toma el
valor '1'y bloquea la cuenta cuando toma el valor '0' (en este caso el contador ignora los
flancos activos del reloj). El resultado de la simulación es el siguiente:

En este ejercicio se pide que sea, además, un contador módulo 10 por lo que el contador
contará de 0 a 9 y vuelve otra vez a 0 para comenzar una nueva cuenta.

La señal reset solo está activa al comienzo de la simulación (ver gráfica) para dar un
estado inicial conocido a los biestables (todos a ‘0’).

La señal enable debe modificarse en el fichero de estímulos para que no esté cambiando
continuamente. A partir de un cierto momento debe ponerse a 1 y dejarse a ese valor
para que el contador pueda contar cada vez que le llegue un flanco de subida de reloj
durante todo el tiempo.

2.1.2. Ejercicio 2: simular el contador anterior pero reversible


Se le añadirá al diseño una nueva entrada llamada up_down que hará que el
contador cuente ascendentemente cuando tome el valor '1' y descendentemente cuando
toma el valor '0'.
Pasos a tener en cuentaen el fichero contadorN.vhd:
 Incluir la entrada up_down en la entidad (entity).
 Incluir en el proceso que describe el contadoruna sentencia if que
incremente la salida del contador si la entrada up_down='1' y que
ladecremente si vale '0'. Esta nueva sentencia “if” irá anidada con el if
que filtra el flanco de subida del reloj.
Pasos a tener en cuentaen el fichero contadorN_tb.vhd:
4 Lenguaje VHDL

 Incluir la entrada up_down en la declaración del componente.


 Crear una nueva señal en la arquitectura UP_DOWN_test y enlazarla
en la instrucción que crea el componente nuevo llamado U1.
 Añadir al proceso de estímulos esta nueva señal. Se le asignará valores
para que el contadorcomienze contando ascendentemente después del
reset. Cuando la cuenta llegue a 8 (WAIT for 6*ciclo) se cambiará el
valor lógico de esta señal hasta que cuente decrecientemente hasta 6.
Se vuelve a cambiar esta señal para que cuente crecientemente y se
deja así de forma indefinida. La secuencia de la salida del contador
sería: 0,1,2,3,4,5,6,7, 8, 7,6,5,4,3,2,1,0,9,8,7,6, 7,8,9,0,1,2,3…

En la siguiente gráfica se muestra el resultado de un contador reversible de 4 bits


pero que no es módulo 10 (puede contar hasta la ‘f’).

2.1.3. Ejercicio 3: Realizar la síntesis del circuito anterior y su ejecución en


proteus.
Para este apartado harán falta el fichero de restricciones (contador4.ucf) y el fichero de
proteus (contador4.dsn).

2.2. Contador de N bits con salida de 7 segmentos(contadorN.vhd,


top_contador.vhd y bcd7seg.vhd)

El fichero top_contador.vhd crea dos componentes U1 (de tipo contadorN) y


otro U2 (de tipo bcd7seg) y los une mediante una señal interna de la arquitectura
llamada BCD (salida de 4 bits del contador). Además conecta las entradas y salidas de la
entidad a estos dos componentes según corresponda.

Visualización de señales internas en las gráficas

Hay que crear el fichero de estímulos y realizar la simulación del sistema en el que
se incluirá la señal interna BCD en las gráficas.
Lenguaje VHDL 5

 Picamos en la opción Heriarchy.


Aparecerán los diferentes componen-
tes que se han creado en el diseño en
el fichero de estímulos. En nuestro
caso se tiene el componente
top_contador que, a su vez, está
constituido por los componentes
U1(contadorN) y U2 (bcd7seg). Para
ver las señales internas de un
determinado componente se pica
sobre él.

 En la esquina inferior izquierda aparecerán las señales de este componente. Las


señales internas están en color azul claro. En este caso interesa la señal bcd.
 Picamos sobre dicha señal con el botón de la derecha y seleccionamos
AddSelected to Waveform.

 Se reinicia la simulación pulsando F5 o bien en el menú Simulate ->Restart.


Se avanza en la simulación. Aparecerá la señal BCD. Esta señal es interna ya
que no es ni entrada ni salida del circuito.

2.2.1. Ejercicio 4: simulación del contador reversible de módulo 10 con entrada


de habilitación.
Rellenar aquellos elementos del fichero de estímulos o de los ficheros del diseño que
estén incompletas para realizar la simulación del contador.

2.2.2. Ejercicio 5: Síntesis del circuito anterior


Se utilizarán los ficheros VHDL del apartado anterior (diseño). Además habrá que
diseñar el fichero de restricciones y el fichero de Proteus. El conexionado viene fijado en
los comentarios que se han puesto en la ENTITY en el fichero top_contador.vhd. Dicho
conexionado se corresponde con el siguiente esquema en proteus:
6 Lenguaje VHDL

El diseño no cabe en el dispositivo 22V10. Solución: En el fichero top_contador.vhd-que


se facilita- se ha reducido el tamaño de contadorN a 3 bits. Por tanto, solo puede contar
desde 0 (“000”) hasta 7 (“111”). Habrá que ajustar del diseño del contador N (fichero
contadorN.vhd) para que sea módulo 8: cuando suba a 7 pasa a 0 (creciente) y baje a 0
pasa 7 (decreciente).

2.2.3. Ejercicio 6: Simular el contador módulo 10 reversible módulo 10 con


entrada de habilitación pero diseñado con un único fichero.

Los ficheros contadorN.vhd y bcd7seg serán sendos procesos dentro de la arquitectura


del fichero contadorUnFichero.vhd. Este fichero es la unión de los 3 anteriores.
También necesitará de la señal interna bcd en la arquitectura. El fichero de estímulos
será prácticamente el mismo ya que el diseño no ha cambiado de cara al exterior
(mismas entradas y salidas). Antes se necesitaban 3 ficheros y ahora 1 pero el circuito
hace lo mismo con un diseño diferente.

2.3. Registro de desplazamiento para generar dos salidas


desplazadas un tiempo fijo.

La idea es generar dos señales similares a T1 y T2 de la práctica del semáforo. Se


utilizará un registro de desplazamiento de 8 bits cíclico. El bit que sale por un extremo se
carga por el otro. Durante el reset se cargará el valor “10010000”. Si el registro se
desplaza hacia la derecha, al llegar el primer ‘1’ al extremo la señal T1 se pondrá a ´1´
(registro= “00001001”). Cuando llegara el segundo ‘1’ al extremo entonces T2 se
pondrá a ‘1’ (registro= “00100001”).

2.3.1. Ejercicio 7: Simular el registro de desplazamiento.


El diseño de un registro de desplazamiento está en los apuntes. El fichero de
estímulos hay que diseñarlo. Se deja un registro de desplazamiento básico al que habrá
que añadirle las salida T1 y T2.

2.3.2. Ejercicio 8: Síntesis del registro de desplazamiento.


Añadir el fichero de restricciones y de proteus para poder sintetizarlo y simularlo.

Precaución: El dispositivo 22V10 solo puede poner a 0 los biestables cuando se da un


reset. Por tanto, el reset pondrá a 0 todos estos dispositivos. Se añadirá al circuito una
señal de entrada llamada “carga” y 8 entradas llamadas “entradas”. Al principio de la
ejecución en proteus se dará un pulso en la señal “carga” para que capture esta 8
entradas que tendrán el valor “10010000”.
Lenguaje VHDL 7

3. Ejercicios adicionales

3.1. Simular un circuito con 3 biestables: Latch, biestable D con


reset asíncrono y síncrono.
El biestable tipo Latch captura la entrada mientras la señal de reloj está a nivel alto (no
es en un instante). Si durante ese intervalo la entrada D cambia de valor entonces la
salida también cambia. Por cpor el contrario biestables activos por flanco captura la
entrada D en un instante (es como una foto). Simular el diseño para comprobar el
comportamiento tan diferente del Latch respecto a los biestables activos por flanco.

3.2. Simular un multiplexor de 8 entradas en la que cada entrada


es un vector de 3 bits.

Ejercicio de repaso de la parte combinacional.

3.3. Simular un decodificador de 2 a 4 con salidas activas a nivel


bajo y señal de habilitación.
Solo una salida (de las 4) se activa con nivel ‘0’ dependiendo del valor de las dos
entradas. Si la señal de habilitación no está activa (a nivel alto), las 4 salidas estará a
nivel alto.

4. Consideraciones sobre la práctica


La asistencia se puntúa con 3 puntos.

Cada ejercicio del apartado 2 vale 1 punto excepto los dos últimos (registro de
desplazamiento) que valen 0,5 puntos cada uno.

La carpeta “p5” se descomprimirá en C:\p5. En cada subcarpeta se creará un


proyecto evitando mezclar ficheros de un apartado con el siguiente.

También podría gustarte