ELECTRONIC MEMORIES

Contador BCD

Posted by discobolo100 en 30 diciembre, 2010

Contador BCD

FINALIDAD

El fin de este ejercicio es realizar el estudio de la creación de un símbolo a partir de un módulo basado en un lenguaje descriptivo HDL.

ISE’ contiene plantillas de código HDL que representan los componentes lógicos de uso más frecuente, tales como contadores, flip-flop’s D, multiplexores, etc…

Además, ‘ISE’ nos facilita la creación de ficheros fuente HDL con la ayuda de un WIZARD, por lo que no se requiere un conocimiento profundo del lenguaje para proyectos básicos.

Hay dos conceptos básicos que debemos tener claros, la identidad y la arquitectura:

ENTIDAD

Las entidades son el elemento básico del lenguaje VHDL. Una entity define la descripción externa de un circuito:

Nombre

Puertos de entrada y salida

Parámetros genéricos

Corresponde a la edición de un símbolo con sus entradas y salidas en un esquemático de un circuito.

MODOS DE LA ENTIDAD

Modo 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 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. Esto le da una cierta desventaja pero a cambio consume menos recursos de nuestros dispositivos lógicos programables.

Modo buffer: Es usado para una realimentación interna, es decir, para usar este puerto como un driver dentro de la entidad. 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.

Modo 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 para todos los puertos.

ARCHITECTURA

Una architecture especifica el comportamiento, interconexiones y componentes de un diseño antes de ser compilado. La arquitectura define la función de la entity.

Por ejemplo, un diseñador puede especificar varias arquitecturas de un sumador (carry-look o ripple carry) y seleccionar una u otra en función de las necesidades.

ENUNCIADO

Implementar en el CPLD XC9572 un Contador BCD con permiso de reloj y borrado asíncrono. Su salida será decodificada a 7 segmentos sobre una DISPLAY de cátodo común de 7 segmentos.

Comienzo de ejercicio

ABRIR PROJECT NAVIGATOR

En el escritorio encontramos el icono del ‘Project Navigator’, hacemos doble clic y se abre el entorno con el último proyecto con el que hemos trabajado.

CREAR NUEVO PROYECTO

Desde ‘File->New Project’ configuramos los primeros parámetros del proyecto tal como el nombre ‘CONTABCD’ y el tipo ‘Schematic’. Hacemos clic en ‘Siguiente’.

Configuramos Familia, Dispositivo, Encapsulado, Velocidad, Sintetizador, Simulador y Lenguaje de simulación

AÑADIRNUEVAFUENTE

Vamos a añadir una fuente a nuestro proyecto, con el nombre de ‘CONTABCD’, utilizando un lenguaje formal de presentación gráfico.

ADIENDO COMPONENTES

Los primeros componentes que vamos a colocar son, un contador BCD llamado ‘CD4CE’, un buffer global de reloj llamado ‘BUFG’ y un buffer global de set/reset llamado BUFGSR.

En los diseños donde necesitemos realizar un SET, un RESET, un PRESET o un CLEAR a más de un dispositivo, deberíamos de utilizar siempre la net interna global SET/RESET con bajo skew. Para ello, deberemos de añadir, a la línea a tratar, el buffer global BUFGSR’ o poner el atributo con el nombre BUFG’ y valor ‘SR.


CREANDO UN SÍMBOLO DE UN MÓDULO HDL

Antes de terminar el diseño tenemos que diseñar el decodificador BCD-7seg’, en código VHDL, y convertirlo en un símbolo que posteriormente podrá ser usado en el esquema general.

En el Project Navigator’ añadimos un nuevo fichero fuente, de tipo módulo VHDL, al cual le llamaremos

‘bcd7seg’.


Se nos abre un Wizard que nos ayudará a generar el código VHDL del decodificador. En la nueva ventana el

Wizard ha nombrado la entidad como bcd7seg’ y utiliza una arquitectura del tipo Behavorial.

Este paso lo finalizamos poniendo los puertos de la entidad, es decir un bus llamado HEX’ de 4 entradas y otro bus de 7 salidas llamado LED.

Estos nombres no los hemos puesto al azar, sino que son los nombres que utiliza la plantilla ‘hex2led’ del ISE’, que posteriormente será agregada a la arquitectura para la descripción del funcionamiento del decodificador.


El contenido de este fichero es una plantilla en la que se ha definido la entidad y falta por definir la arquitectura que describi el funcionamiento funcional de la entidad.

El fichero que se nos abre tendremos que modificarlo puesto que el decodificador que viene por defecto esta hecho para una display de ánodo común y puesto que nuestro display es de cátodo común tendremos que dejarlo tal y como se muestra en la figura de abajo.

Guardamos el diseño y desde Project Navigator’, generamos el símbolo del decodificador para utilizarlo en el esquema general.

 

El símbolo del decodificador ha sido añadido a la categoría de símbolos, desde donde puede ser llamado.

AÑADIENDO NOMBRES Y MARCAS A LA RED DE NEAS

En las salidas hemos colocado, manualmente, los OBUF’s para poder nombrar los port’s igual que el nombre del segmento del display y facilitar el estudio de la simulación.

Hecho esto, se nos lanza una ventana desde la que podemos configurar los parámetros temporales de la simulación. Esta ventana de configuración la dejamos por defecto, observando que el tiempo del reloj en estado alto es de

100ns, lo mismo que en el estado bajo. Por otra parte el setup time’ y el ‘hold time’ es de 15 ns. Aquí, también se define la entrada de reloj (elegimos el pin CLK).

El tiempo de test lo ponemos en 2500ns para `poder analizar un ciclo completo de conteo.

HDL Bencher’ se nos abre dentro del entorno ISE’ mostrándonos las formas de onda.

 

En la ventana gráfica, podremos introducir los estímulos



SIMULACIÓN FUNCIONAL CON MODELSIM

Antes de arrancar la utilidad de simulación ‘ModelSim, añadimos el fichero test bench al proyecto haciendo clic en

Add Test Bench to Project’. Esto genera un nuevo fichero en formato HDL, en nuestro caso VHDL, denominado

‘tb_contabcd_tb.vhd’, que será utilizado por ‘ModelSim para realizar la simulación.

Teniendo seleccionada la fuente ‘tb_contabcd-testbench_arch [tb_contabcd_tb.vhd], pulsamos dos veces seguidas sobre el proceso Simulate Behavioral VHDL Model.

NTESIS DEL CONTADOR BINARIO DE 4 BIT’s

Hacemos doble clic en el proceso Synthesize-XST’ situado en la ventana de procesos y se nos efectúa la síntesis del sumador.


CREANDO RESTRICCIONES (*.UCF)

 

Crearemos un fichero de restricciones para la localización de pines.

Para descargar el ejercicio hagan clik en el siguiente enlace: http://www.megaupload.com/?d=8QPMK515

 

DISEÑAR ESQUEMA DEL CONTADOR

4.1 ADIENDO COMPONENTES

 

 

Los primeros componentes que vamos a colocar son, un contador BCD llamado ‘CD4CE, un buffer global de reloj

llamado ‘BUFG’ y un buffer global de set/reset llamado BUFGSR.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: