Download Una Metodología Integral de Diseño Digital con CPLDs, VHDL y C

Document related concepts
no text concepts found
Transcript
Una Metodología Integral de
Diseño Digital con CPLDs, VHDL y C
Arturo Miguel-de-Priego <[email protected]>
Pontificia Universidad Católica del Perú
Av. Universitaria Cdra. 18 Lima 32 – PERU
Teléfono: (+511 ) 460 2870 Fax: (+511) 261 8861
Se presenta una metodología de diseño digital que emplea CPLDs, VHDL y el lenguaje de
programación C para la enseñanza, aprendizaje y diseño de circuitos digitales utilizando las metodologías
convencionales de diseño con hardware en combinación con técnicas de software, aprovechando los elementos
típicamente disponibles en una PC.
Se utiliza el VHDL para presentar en alto nivel el funcionamiento de un circuito particular, en especial
las máquinas de estados; se emplean descripciones esquemáticas para implementar los circuitos con un editor de
símbolos, especialmente los datapaths. Adicionalmente, se utiliza C para crear pequeños programas que
complementan y amplían la visión del estudiante con respecto a las herramientas CAD.
Asimismo, se presentan algunos proyectos de diseño y prácticas de laboratorio para diseño digital.
Introducción
Este trabajo se desarrolla con la el objetivo de mejorar la enseñanza del diseño digital en la Sección Electricidad
y Electrónica (SEE) de la Pontificia Universidad Católica del Perú (PUCP), incorporando las nuevas y modernas
metodologías y herramientas CAD para el diseño lógico.
Tradicionalmente, el diseño digital en la SEE comienza con el planteo de las tablas de verdad y diagramas de
transición; continua con la minimización de las funciones lógicas usando técnicas de Mapas de Karnaugh,
Queen-McKluskey, etc.; seguidamente las funciones se mapean en función de los circuitos integrados (CI) SSI y
MSI disponibles, usando los teoremas de De Morgan. A continuación se colocan los CIs sobre una tarjeta de
pruebas (protoboard) y se realizan las conexiones usando cables que se cortan e insertan sobre la tarjeta.
Finalmente, se verifica el funcionamiento del circuito. Si todo está bien, el circuito se desarma para dar espacio
a otros circuitos, o bien, se construye una tarjeta de circuitos impresos si fuera necesario. El problema principal
de esta metodología se presenta al momento de localizar las fallas del circuito cuando éstas ocurren. Todo un
proceso de depuración debe iniciarse en ese caso para hallar la parte mala del circuito (¿Funciones lógicas,
reducción, mapeo? ¿Interconexiones? ¿Chips? ¿Tablas de verdad? ¿Una combinación de fallas?).
Desde hace tres semestres se viene aplicando una nueva metodología en la SEE para el Laboratorio de Circuitos
Digitales, que mejora algunos pero no todos los aspectos del diseño. Se incorporó el uso de herramientas CAD
para analizar y diseñar circuitos digitales (MAX+plus II de Altera Corp.) . La diferencia con el método anterior
radica en la incorporación de descripciones esquemáticas usando símbolos de puertas SSI y MSI y en la
simulación funcional de los diseños antes de ser construidos sobre el protoboard. Es decir, el mapeo se describe
en forma esquemática, luego el compilador se encarga de sintetizar el circuito para simulación. El problema con
esta metodología es que aun se pierde considerable tiempo en armar los CIs sobre el protoboard, cuando estas
tareas pueden ser automatizadas.
Una nueva metodología que se aplicará a partir del próximo semestre en la SEE, incorpora el uso de Tarjetas de
Desarrollo y Experimentación, con el fin de ahorrar tiempo en el cableado manual de los circuitos. Las tarjetas
contienen chips de lógica programable y CIs 74LS244, además de componentes típicos como visualizadores e
interruptores. El uso de estas tarjetas se recomienda sin dejar de lado las actividades manuales, por lo que en las
sesiones de laboratorio el alumno seguirá armando circuitos, pero más tiempo dedicará a desarrollar sus
habilidades de diseño, puesto que podrá resolver más problemas interesantes y útiles dado que cuenta con el
apoyo de circuitos preconstruidos, que sin embargo, no funcionan si no se les indica que hacer. Desde el punto
de vista práctico, ya desde hace años se observa que la lógica programable ofrece ventajas muy superiores al
diseño con CI MSI SSI estándares. Quizás, por lo notado hasta ahora, el uso de estos chips está limitado a servir
como circuitos decodificadores y circuitos de interfases de I/O (para potenciar las señales, mas no para crear
lógica). Además se introducirá el VHDL como lenguaje de descripción de hardware para complementar las
descripciones esquemáticas y resolver más fácilmente las máquinas de estado y codificadores principalmente.
Una metodología que para muchos en la SEE es muy audaz o difícil de aplicar utiliza el lenguaje de
programación C para apoyar las actividades de enseñanza y aprendizaje del diseño digital en el aula y en el
laboratorio. Por ejemplo, el C se puede usar para crear los contenidos de una memoria, reducir una ecuación
siguiendo un algoritmo típico como Queen-McKluskey, enviar datos a un chip por el puerto paralelo o serial,
temporizar eventos para un circuito digital, etc. La ventaja de este método es que el alumno aprenderá a
reconocer tempranamente las diferencias entre el software y el hardware y podrá aprender a complementar
ambos para obtener un sistema eficiente, optimo y a bajo costo de tiempo y esfuerzo, introduciéndolo desde los
primeros cursos de diseño digital a una metodología de codiseño de hardware y software. El uso de programas
en C también brindará algunas ideas al alumno de cómo construir una herramienta CAD, para síntesis,
simulación, verificación, modelamiento, depuración, etc.
Con esta nueva metodología se podrá mostrar fácilmente el funcionamiento de varios circuitos digitales típicos
utilizando una tarjeta a medida y una tarjeta de pruebas basada en un dispositivo de lógica programable, con el
fin de reducir el tiempo de aprendizaje en las prácticas de laboratorio de Circuitos Digitales y permitir la
experimentación de diseños lógicos sobre una plataforma de hardware real. En resumen, las tarjetas servirán
para:
1.
2.
3.
4.
Desarrollar diseños con circuitos integrados de alta tecnología.
Comprobar rápidamente el funcionamiento de los circuitos.
Experimentar con múltiples alternativas de diseño.
Eliminar el cableado manual durante el desarrollo del prototipo.
Bajo este sistema el estudiante diseñará más, variados y mejores circuitos que los realizados antes en la misma
cantidad de tiempo.
Metodología de Diseño Digital
La metodología está basada en el uso de tarjetas de desarrollo para comprobar el diseño realizado por el
alumno en el laboratorio, y para demostrar el funcionamiento de los circuitos en las clases de aula.
Adicionalmente se entregarán los programas en C listos para usar, para reforzar y despertar la curiosidad del
estudiante. En general, el alumno analiza un circuito mediante simulación en la computadora y verificación en la
tarjeta; y diseña circuitos del mismo modo. Cuando sea pertinente se usarán programas en C, por ejemplo, para
un diseño que requiera comunicación serial o paralela entre la PC y el CPLD.
Tarjetas de Pruebas
El Grupo de Microelectrónica ha desarrollado un sistema basado en tarjetas para el diseño digital con
lógica programable. El primer prototipo, esquematizado en la figura 1, por el momento se ha denominado
DGM-F10K10. El sistema está compuesto por tres elementos principales:
1.
2.
3.
ByteBlaster: circuito de configuración de Altera Corp. Sirve, entre otros, para configurar el
EPF10K10LC84-4 montado sobre la tarjeta GM-F10K10.
GM-F10K10: Es una tarjeta de desarrollo de propósito general. Contiene dos relojes de cristal,
opcionalmente se pueden conectar otros relojes cambiando la posición de unos jumpers. Cuenta con
expansores para conectar fácilmente los 59 pines de usuario disponibles en el EPF10K10LC84-4.
GM-T16V7F: Es una tarjeta específica, orientada al diseño de lógica secuencial. Soporta un panel de
cuatro visualizadores y un teclado matricial de 16 teclas.
Este sistema ha servido para diseñar un gran número de circuitos en tiempos muy cortos, como sucedió en el
caso del Frecuencímetro Digital con Autorango, para el cual primero se desarrolló una versión lógica con el
EPF10K10LC84-4 y luego se sintetizó el diseño para un EPM7128SLC84-15, de menor costo que el chip
anterior.
Figura 1. Sistema de
Diseño DGM-F10K10
Una tarjeta mejorada se está desarrollando actualmente, la cual agrega a la tarjeta GM-T16V7 interruptores y
más indicadores visuales, tal como se muestra en la figura siguiente.
Figura 2. Tarjeta Proyectada para el Sistema de Diseño
Esta tarjeta será dedicada para manejar un teclado de 16 teclas y un panel de 4 visualizadores de 7 segmentos.
Además habrá 16 indicadores visuales (leds), 16 interruptores (dipswitch), 4 botones pulsadores, y 2
visualizadores de 7 segmentos con habilitación permanente, compartiendo el bus de datos de los leds.
Asimismo, se está desarrollando una nueva versión de la tarjeta GM-F10K10, reemplazando un cristal por un
circuito astable/monostable basado en un CI 555 y dejando solamente los circuitos para la configuración
individual vía JTAG a través del ByteBlaster. Ambas tarjetas, se estima, estarán completamente listas y
funcionales para las fechas del próximo Workshop de Iberchip, donde sería posible hacer unas demostraciones
prácticas.
Metodología de Diseño
En la figura 3 se muestra el diagrama de bloques de un diseño típico usando el sistema DGM-F10K10. El
procesador normalmente es una máquina de estados, que se puede describir en VHDL. El bloque conformado
por puertas lógicas, contadores, registros, memorias, etc. forma el camino de datos (datapath), el cual puede
hacerse en el MegaWizard del MAX+plusII o usando los símbolos de las funciones SSI, MSI.
Figura 3. Diagrama de Bloques de un Diseño Típico basado
en el Sistema de Diseño DGM-F10K10
El Controlador de Teclado
El teclado matricial contiene un arreglo de cuatro filas y cuatro
columnas. La figura 4 muestra un diagrama esquemático de las
interconexiones físicas. Para conocer que tecla ha sido presionada se
emplea un contador de módulo 16. Cada fila se activa por cuatro
ciclos, unas tras otra consecutivamente. En lo que dura la activación
de una fila, se lee secuencialmente el estado de cada columna. Si una
columna aparece con el mismo valor de la fila entonces se sabe que
tecla fue presionada leyendo el estado del contador. Las conexiones Figura 4. Esquema de un
eléctricas presentes determinan que las filas se activan en el nivel bajo, teclado de 16 posiciones
dado que las columnas están conectadas a VCC mediante resistencias
de 1K. La figura 5 ilustra el diagrama de bloques para el Controlador
de Teclado.
Figura 5. Diagrama de Bloques del Controlador de Teclado
Controlador de Visualización
Figura 6. Panel de Visualización
Contiene cuatro visualizadores de siete segmentos. Se controla con un bus
de datos de 7 bits. La versión actual en GM-T16V7, no conecta los puntos
decimales, mas ellos estarán disponibles en la nueva versión. Cada
visualizador debe encenderse uno después de otro con una frecuencia alta
(recomendable 1KHz).
Figura 7. Diagrama de Bloques del Controlador de Visualización
Prácticas y Proyectos de Laboratorio
Con el sistema actual, el DGM-F10K10, es posible realizar prácticas de laboratorio que comprendan tanto diseño
combinacional como diseño secuencial, simplemente empleando el segundo expansor de la tarjeta GM-F10K10
y haciendo las conexiones sobre un protoboard. Con las nuevas versiones de tarjetas estas tareas se verán
facilitadas.
Para lógica combinacional, será sencillo comprobar el funcionamiento de:
Puertas Básicas: NOT, NAND, NOR, AND, OR, XOR, XNOR
Módulos Básicos: Multiplexores, Demultiplexores, Decodificadores, Codificadores
Módulos Aritméticos: Sumadores, Comparadores
En lógica secuencial, será sencillo comprobar el funcionamiento de:
Latches: SR, SR con reloj, D.
Flipflops: D, JK, T, con señales de configuración síncronas y asíncronas
Memorias: RAM, ROM
Máquinas de estados: por ejemplo de tipo Mealy y Moore
Contadores y registros de desplazamiento.
En lógica secuencial, se podrán hacer circuitos más interesantes, como por ejemplo:
Contador BCD: Contador automático desde 0 a 9999 en BCD, con reloj de entrada de frecuencia
superior a 1MHz (8 MHz por ejemplo)
Cronómetro: Contador automático de segundos, minutos y horas.
Lectora de Teclado: Circuito detector de la tecla presionada. Muestra la tecla en un visualizador de
siete segmentos.
Controlador de Semáforos: Control automático y manual de los semáforos de una intersección de
avenidas.
Registro de Desplazamiento: Un registro de 4 x 4 flip flops para desplazar dígitos de 4 bits en serie.
Cerradura Electrónica: Controla la apertura de una puerta mediante una clave de acceso.
Reloj-Alarma: Permite el establecimiento de la hora actual y de la hora de alarma. Cuando se activa, la
alarma produce un sonido durante un minuto.
También pueden realizarse proyectos de diseño de mayor complejidad, dado que los expansores pueden ser
intercambiados por otros circuitos permitiendo incorporar nuevas tarjetas de aplicación. Algunos ejemplos de
proyectos:
1.
2.
3.
4.
5.
6.
7.
8.
Frecuencímetro
Marcador de Tenis
Marcador de Béisbol
Marcador de Baloncesto
Microprocesador RISC básico
Juego de 4 dígitos
Juego de Póker
Generador de Tonos Telefónicos
Por ejemplo, las especificaciones para un proyecto
de un Calendario-Reloj-Alarma podrían ser: El
calendario se indica mediante leds para los días y
meses.
El año se indica en un panel de
visualizadores de 7 segmentos. Los meses se
indican como: 1= Enero, 12 = Diciembre. Los
años pueden estar entre 2000 y 2100, por ejemplo.
Los días entre 1 y 31; se puede ver el día de la
semana en los leds, y el día del mes en el
9.
10.
11.
12.
13.
Controlador de un Terminal de
Trenes
Reloj-Alarma-Calendario
El Juego de Tetris
Pasamensajes
Comunicación serial entre la PC y
un CPLD
visualizador, después de pulsar una tecla predefinida. La alarma puede fijarse, por decir, para 4 diferentes horas.
Cada hora el reloj toca una melodía diferente (opcional). Se pueden establecer los minutos y horas del día.
Para el juego de cuatro dígitos, donde el usuario debe adivinar el número generado
pseudo-aleatoriamente por el circuito mediante aproximaciones sucesivas de acuerdo
a la información de dígitos acertados y en su lugar, se podría usar un esquema como
el mostrado en la figura.
Un marcador de baloncesto puede ser prototipado en este sistema, descartando el
conector que alimenta a los interruptores y usando más visualizadores de siete
segmentos, que implica usar más habilitadores si se sigue compartiendo el bus de
datos.
Conclusiones
Se ha mostrado un sistema práctico para el diseño digital, que en parte ha sido validado en una variedad de
diseños importantes y que será probado el próximo semestre en la Sección Electricidad y Electrónica
(PUCP) dentro del Laboratorio de Circuitos Digitales.
Se mostraron varias posibilidades de diseño digitales con el sistema actual, el DGM-F10K10, y con el nuevo
sistema proyectado.
Se mencionó al lenguaje C como una herramienta de soporte al diseño lógico, no para desarrollar programas
sino para ilustrar el uso de C en la creación de herramientas que automaticen y optimicen el diseño lógico.
Referencias
1.
2.
3.
4.
5.
6.
7.
8.
9.
ALTERA. 1998. Data Book. Altera Corp.
BROWN, S.; ROSE, J. 1997. Architecture of FPGAs and CPLDs: A Tutorial. [email protected].
JAQUENOD, G.A. Computer Architecture & Logical Design Teaching: a Programmable Logic based
approach. Copyright Intectra Inc. 1998.
JENKINS, J. H. 1982. Designing with FPGAs and CPLDs. Prentice Hall. New Jersey.
NELSON, V.P.; TROY, H.; CARROLL B.D.; IRWIN J.D. 1996. Análisis y Diseño de Circuitos Lógicos
Digitales. Prentice Hall.
SALCIC, Z. 1998. Digital Systems Design and Prototyping Using Field Programmable Logic. Kluwer
Academic Publishers.
SMITH, D. J. HDL basic training: top-down chip design using Verilog and VHDL. 1996 EDN Magazine.
http://209.67.241.58/reg/1996/102496/Df_04.htm
VAN DEN BOUT, D. 1998. The Practical XilinxÒ Designer LAB Book, Prentice Hall Inc. New York.
WESTE, N.; ESHRAGHIAN, K. 1994. Principles of CMOS VLSI Design, A Systems Perspective. 2da
Edición, Addison-Wesley Publishing Company.