Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Práctica 8
Introducción al lenguaje VHDL (parte 2)
1. Introducción..................................................................................................................................................2
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
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.
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
3. Ejercicios adicionales
Cada ejercicio del apartado 2 vale 1 punto excepto los dos últimos (registro de
desplazamiento) que valen 0,5 puntos cada uno.