Вы находитесь на странице: 1из 7

Diseño VLSI

Departamento de Eléctrica y Electrónica


Alex Lamiño
NRC: 2848

INFORME PRÁCTICA DE LABORATORIO 2.2

INTRODUCCIÓN
El desarrollo de dispositivos programables de alta capacidad de ocupación junto con las
herramientas de diseño y programación asociados a estos dispositivos ha dado lugar a
que, hoy en dı́a, sea relativamente fácil implementar sistemas digitales incluso de alta
complejidad sobre ellos. En concreto, los dispositivos programables conocidos como FPGA
(Field Programmable Gate Array) alcanzan capacidades equivalentes a varios millones de
puertas lógicas por chip y pueden incluir cores de alta complejidad como, por ejemplo,
de microprocesadores, memorias tipo RAM o ROM, etc.

Estos dispositivos han contribuido a cambiar el proceso de diseño de sistemas digitales.


Partiendo de la descripción verbal del problema y del diseño de la solución, el siguiente
paso consiste en realizar la descripción en un lenguaje de hardware (o por medio de
esquemáticos) de la solución planteada y realizar una simulación para comprobar la
funcionalidad y las especificaciones del sistema. Para realizar estos pasos es necesario
conocer y manejar las herramientas de diseño disponibles, como Altera y Xilinx, los
cuales siendo entornos gratuitos, incluye todas las etapas de un proceso de diseño digital
complejo, y adicionalmente también incluyen las herramientas de traslación del diseño
a una FPGA (Field Programmable Gate Array). El proceso de diseño finaliza con la
sı́ntesis y programación del dispositivo seleccionado para la verificación funcional de la
aplicación.

De acuerdo con esto, esta práctica consiste en introducir al estudiante al diseño y


simulación de circuitos digitales básicos en el entorno integrado de descripción y simulación
de Xilinx, ası́ como al sistema de desarrollo EXilinx SPARTAN que usaremos durante el
curso.
OBJETIVOS
• Aplicar a un sistema electrónico digital el estilo de descripción funcional en lenguaje
VHDL, para describir su comportamiento, identificar sus componentes fundamen-
tales al interior de cada unidad básica de diseño y deducir sus ventajas y desventajas.

• Conocer las herramientas de verificación del diseño desarrollado.

• Desarrollar el proceso completo de diseño, verificación, implementación y testado


de un ejemplo de circuito digital sobre una FPGA.

COMPONENTES Y EQUIPOS
• Computador

• ISE WebPack 10.1 versión libre de Xilinx

MARCO TEÓRICO

Figure 1: Visualizador 7 segmentos

Un visualizador de siete segmentos se compone de siete diodos emisores de luz (LEDs)


dispuestos en un patrón como se muestra en la figura 1, y algunos incluyen un octavo
LED para el punto decimal. Existen dos tipos de visualizadores de acuerdo a su conexión
eléctrica: ánodo común y cátodo común. Desde el punto de vista de programación (o del
diseño de sistemas digitales), es necesario saber el tipo de visualizador para las condiciones
de activación:

- En ánodo común, un 0 se utiliza para encendido y un 1 para apagado (lógica


negativa).

- Caso contrario, cátodo común utiliza un uno para encender los LEDs y un cero
para apagarlos (lógica positiva).
Al tener 7 LEDs se pueden generar un total de 128 combinaciones, aunque no todas ellas
conforman caracteres. En esta entrada se hace uso de la tabla de sı́mbolos y se codifican
los siguientes caracteres: 10 digitos (del 0 al 9), 26 letras (A a la Z) y caracteres especiales.
Para representar estos 37 sı́mbolos se necesitan 6 bits (cinco bits pueden representar
hasta 32 valores solamente). A este proceso de asignar un número a cada carácter se le
conoce como codificación. Finalmente, para mostrar el digito en un visualizador de siete
segmentos es necesario decodificar el valor numérico según el patrón de LEDs indicado.
Esta decodificación se realiza asumiendo que el visualizador es de ánodo común (cero
activa, uno apaga).

En resumen, inicialmente se tiene un carácter al cual se le asigna un valor numérico


(codificación) para tratar con el digitalmente, posteriormente se transforma al patrón de
LEDs correspondiente (decodificación).

La descripción de hardware se encarga de determinar cuales LEDs estarán encendidos


en base al valor de entrada de seis bits para cada uno de los 37 sı́mbolos distintos o para
cubrir cualquier otro valor posible, en este caso los valores o sı́mbolos a generar son los
mostrados en la siguiente figura:

Figure 2: Sı́mbolos BCD 7 segmentos


PROCEDIMIENTO
Ejercicio: Diseñar en VHDL un controlador decodificador BCD a 7 segmentos.

Ahora vamos a crear el sı́mbolo de nuestro decodificador BCD 7 segmentos. Para ello,
antes crearemos un módulo VHDL.Para ello, creamos una nueva fuente y seleccionamos
el módulo correspondiente.

Un vez realizado este proceso saldrá la ventana mostrada en la figura 3. Aunque nos
parezca en la cual podemos elegir, si el módulo VHDL que vamos a crear tiene bus o
no y si lo tiene deberemos marcar el número de entradas y de salidas de este bus, en
nuestro caso, queremos crear el sı́mbolo de nuestro decodificador BCD 7 segmentos, el
cual consta de un bus de 3 entradas y de 6 salidas, entonces en esta ventana marcaremos
que el nombre del puerto entradas ”A” y salidas ”S”.

Figure 3: Variables de I/O.

Entonces, se nos generará una fuente con código VHDL, la cual contiene el módulo
VHDL que tendrá un bus de 3 entradas y 6 salidas. Ahora, habrá que añadir a este
código, un código VHDL adicional para que haga la función deseada que es en nuestro
caso, la del decodificador BCD 7 segmentos.
Figure 4: Código fuente Module.

A continuación, vamos a hacer la simulación funcional (sin retardos reales de tiempo).Para


ello, creamos una nueva fuente y seleccionamos la opción Test Bench.

Figure 5: Código fuente Test Bench.


A continuación, configuramos el estado de las entradas para la simulación sin retardos
o simulación funcional. Después de haber hecho eso, vamos a simular pero antes hay que
configurar la simulación para 2500 ns.

Figure 6: Test Bench.

A continuación se presenta el código original en VHDL.

Figure 7: Código principal BCD 7 segmentos.


CONCLUSIONES
• El estilo de descripción funcional es el más básico de los tres estilos de programación
en VHDL, ya que se sigue una estructura parecida a los lenguajes de programación
convencionales. Sin embargo, al encontrarse lejos de lo que es realmente un circuito,
se pueden plantear algunos problemas al momento de implementarlo a partir de la
descripción de su comportamiento.

• El estilo de descripción de flujo de datos posee la caracterı́stica de describir circuitos


y además permite la paralización de instrucciones, esta se encuentra más cercana a
una descripción estructural del mismo, siendo todavı́a una descripción funcional.

• El estilo de descripción estructural es el más complejo de los tres, sin embargo


con él se puede entender el funcionamiento del circuito desde una perspectiva más
básica, sirve para la realización de diseños jerárquicos que involucren la conexión
de varios componentes. Sin embargo este estilo de programación no resulta muy
aconsejable para circuitos medianamente complejos ya que el tiempo de edición es
mayor al de los otros estilos.

REFERENCIAS
• Cai Yan, EE Times. ’Xilinx testing out China training program’. Mar 27, 2007.
Retrieved Dec 19, 2012.

• Ken Cheung, EDA Geek.’Xilinx Rolls Out Embedded Development Kit 9.li’. March
26, 2007. Retrieved June 10, 2010.