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