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 <amiguel@pucp.edu.pe> 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. brown@eecg.toronto.edu. 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.