Inicio > CPLD's > Crear un simbolo mediante codigo VHDL con Xilix

Crear un simbolo mediante codigo VHDL con Xilix

13 noviembre, 2010

La finalidad  de este ejercicio es aprender a crear un símbolo a partir de un módulo basado en un lenguaje descriptivo HDL.

Xilinx’ 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, ‘Xilinx’ 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.

Antes que nada, es bueno tener en cuenta algunos conceptos y una descripcion muy breve para entrar de lleno al lenguaje VHDL.

CONCEPTOS BÁSICOS
Un diseño en VHDL consiste en un conjunto de unidades separadas, las cuales son compiladas y almacenadas en una librería. Las cuatro unidades compilables son:

  • Package
  • Entity
  • Architecture
  • Configuration

De las cuales debemos darle mucha importancia a dos de ellas Entity(entidad) y Architecture(arquitectura). Existen dos librerías básicas WORK y STD, además de las que pueda crear el propio usuario. Cuando se compila un diseño, por defecto es almacenado en WORK.

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
  • Etc…

Ejemplo de entidad:

Ejemplo de entidad

Ejemplo de entidad

Arquitectura
Una arquitectura 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.

Las architectures son generalmente clasificadas en tres estilos:

  • Comportamiento (Behavorial)
  • Asignación de señales (Data flow)
  • Estructural (Structural)

Ejemplo de arquitectura:

Ejemplo de arquitectura

Ejemplo de arquitectura

Dicho esto, vamos a 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.

Bosquejo del diseño

Bosquejo del diseño

Creamos un nuevo proyecto con el nombre “contabcd” de tipo esquematico, configuramos nuestro proyecto y ahora podemos empezar a trabajar.

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.

Seleccion y colocacion de simbolos

Seleccion y colocacion de simbolos

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. Para ello añadimos un nuevo fichero fuente, pero esta vez de tipo modulo VHDL el cual llamaremos “BCD7seg”

Añadir nueva fuente de tipo VHDL module

Añadir nueva fuente de tipo VHDL module

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(0,1,2,3) entradas y otro bus de 7(0,1,2,3..6) 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.

Wizard de modulo VHDL

Wizard de modulo VHDL

Una vez añadida la fuente, se nos abrira una ventana con el contenido del fichero que hemos creado, que es una plantilla en la que esta definida la entidad y nos faltaria por definir la estructura que describira el funcionamiento de la entidad.

Contenido del fichero fuente

Contenido del fichero fuente

La descripción de la arquitectura la podríamos personalizar, en el caso de ser un diseñador experimentado de VHDL, pero como no es nuestro caso, podemos utilizar una de las muchas plantillas VHDL que el ‘ISE’ nos ofrece.
Concretamente en ‘ISE’ hay una plantilla que define exactamente nuestro decodificador BCD-7seg y se llama ‘7-Segment Display’.
La plantilla la buscamos en ‘Edit->Language Templates’

Plantillas VHDL

Plantillas VHDL

Lo unico que se deberia de cambiar en mi caso, es las combinaciones del display ya que la tarjeta “TADXC9572” trabaja con display de catodo comun, pero seria un cambio totalmente sencillo.

Descripcion de la arquitectura de un display catodo comun

Descripcion de la arquitectura de un display catodo comun

Lo siguiente es crear un simbolo apartir de nuestro codigo VHDL y con los conocimientos del ejercicio anterior lo podemos hacer. Una vez creado el simbolo, nos quedaria asi:

Diagrama con el simbolo añadido

Diagrama con el simbolo añadido

Y el diagrama completo seria el siguiente:

Diagrama completo

Diagrama completo

Una vez terminado el diseño y comprobamos que no tiene errores debemos generar el ‘Test Bench Waveform’ para poder simularlo en Modelsim. Pero antes, generamos las entradas esperadas  para poder pasar a simularlo:

Generar entradas esperadas

Generar entradas esperadas

Hecho esto,  ahora si podemos simularlo y continuar con los demas ficheros de implementacion.

Simulacion en Modelsim

Simulacion en Modelsim

descargar memoria aqui

 

 

 

 

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.

Anuncios
Categorías:CPLD's
A %d blogueros les gusta esto: