En la siguiente práctica vamos a realizar el estudio de la
creación de un símbolo a partir de un esquema a través del siguiente ejercicio:
Implementar un Contador Binario de
4 bit’s con permiso de reloj y borrado asíncrono. Su salida será decodificada
(binario a decimal) sobre una barra de 10 LED’s, los cuales nos mostrarán la
cuenta a razón de su peso, tal como indica la tabla de verdad del
decodificador.
Tabla de la verdad:
Las salidas corresponden a:
Led9 = Q3 /Q2 /Q1 Q0
Led8 = Q3 /Q2 /Q1 /Q0
Led7 = /Q3 Q2 Q1 Q0
Led6 = /Q3 Q2 Q1 /Q0
Led5 = /Q3 Q2 /Q1 Q0
Led4 = /Q3 Q2 /Q1 /Q0
Led3 = /Q3 /Q2 Q1 Q0
Led2 = /Q3 /Q2 Q1 /Q0
Led1 = /Q3 /Q2 /Q1 Q0
Led0 = /Q3 /Q2 /Q1 /Q0
Para la realización del presente ejercicio utilizaremos la herramienta grafica de
captura del programa ISE que se llama ECS.
Para realizar el diseño utilizaremos la herramienta que
gestiona los diseños:
Project Navigator/Design manager.
Comenzaremos creando un nuevo proyecto (FileàNew Project…) una vez
abierto el programa ISE y le daremos un nombre, en este caso CONTBIN siendo de
un tipo esquemático.
Pulsaremos el botón siguiente y procederemos a configurar
la Familia, Dispositivo, Encapsulado, Velocidad, Sintetizador, Simulador y
Lenguaje de simulación.
Una vez configurado, seguiremos al próximo paso que
consistirá en crear una nueva fuente, que nombraremos Contbin y que será de
tipo esquemático.
Ahora procederemos a diseñar el
esquema del contador añadiendo los componentes del mismo, el diseño del
contador binario de 4bits con permiso de reloj y borrado asíncrono, queda
resuelto al seleccionar la primitiva desarrollada por Xilinx ‘CB4CE’,
para obtener los datos de esta, deberemos pulsar con el botón izquierdo y
seleccionar sus propiedades, y en el panel que nos muestra las mismas,
pulsaremos “Symbol info”:
Para los no
angloparlantes, más o menos lo que nos explica son las siguientes
características:
El elemento esta diseñado de una forma asíncrona,
siendo un contador binario.
El clear asincrónico (CLR) de entrada, cuando está
en alto, anula todas las demás entradas y las salidas de las Q, el contador
(TC) y la habilitación del reloj a un nivel lógico cero, independiente de las
transiciones de reloj.
Las salidas Q incrementan
cuando el reloj de entrada (CE) esta en alto
El contador ignora
transiciones del reloj cuando CE esta en bajo.
La salida TC es alta
cuando todas las salidas Q son altos.
La longitud máxima de la barra está
determinada por los retardos de propagación acumulados CE-a-TC en comparación
con el período de reloj.
El período de reloj debe
ser mayor que n (TCE-TC), donde n es el número de etapas y el tiempo de tec-TC
es el retardo de propagación CE-a-TC de cada etapa.
A lo largo del CPLD existen unas rutas
dedicadas tales como:
Las líneas que van a los pines de 3-state
en los IOB’s.
Las líneas que van a los pines de set/reset
en los flip-flop’s.
Las líneas que van a los pines de reloj
en lso flip-flop’s.
Estas rutas tienen características
especiales con bajos retardos y minimización del skew. Para hacer
uso de estos
recursos deberemos utilizar en el
esquema unas primitivas especiales preparadas para ello como, por ejemplo,
BUFGSR, BUFGTS ó BUFG.
En nuestro ejercicio, para minimizar
el skew, vamos a utilizar BUFG.
Con la ayuda de la tabla
superior vamos a realizar el diseño del decodificador “binario-decimal”. Para
ello crearemos un nuevo archivo fuente de tipo esquemático que llamaremos
decod.sch
Resolvemos las ecuaciones de salida con
puertas ‘and’.
Las entradas del
decodificador las vamos a integrar en un bus, para lo cual, en ECS realizaremos
el dibujo del bus como una NET que nombraremos BUS Q(3:0).
Además habrá que añadir
la opción de que el nombre sea visible.
Procederemos a conectar
las líneas de entrada al BUS utilizando el icono Bus Tap.:
Añadimos también los
nombres de las net´s (led1 --- Led9)
Añadimos además las
marcas Imput/Output :
Ahora desde el Project navigator
generamos el símbolo del decodificador para utilizarlo en el esquema general.
Una vez creado el símbolo,
vamos a poder llamarlo e introducirlo en el esquemático contbin original, añadiremos
el bus y los nombres de las líneas, así como los I/O. Una vez realizado esto
observaremos en el esquema que el decodificador forma en la parte inferior del
esquema general.
Una vez finalizado el
diseño debemos realizar la simulación del mismo. Para ello vamos a crear el
fichero de test bench waveform, el cual es un fichero VHDL que nos permite
probarlo denomidado “uut” (uni under test).
Pulsando el botón derecho sobre el
fichero ‘contabin.sch’ seleccionamos
la opción de nueva fuente.
En la siguiente pantalla elegimos la opción de
‘Test Bench Waveform’, y
le llamamos ‘tb_contbin’.
Nos aparecerá la siguiente ventana
desde la que configuraremos los parámetros de simulación.
Esta ventana de configuración la dejamos
por defecto.
Podemos ver que el tiempo del reloj en
estado alto es de 100ns, al igual que en el estado bajo. Por otra parte el ‘setup time’ y
el ‘hold
time’ es de 15 ns.
También se define la entrada de reloj
(elegimos el pin ‘CLOCK’).
El tiempo de test
es 2500ns para que podamos observar toda la cuenta.
Una vez pulsado finsih nos aparecerá una pantalla donde podemos ver las
formas de la onda del simulador.
Introduciremos en las entradas para ver cuál es la respuesta pulsando
con el botón izquierdo encima del fondo azul de las entradas
No hay comentarios:
Publicar un comentario