El modulo EXm9572XL, es el sistema de desarrollo más pequeño que existe para la CPLD XC9572XL-10VQ44 de la empresa Xilinx®.
¿Por que usar CPLDs?
LA FORMA EN LA QUE ENSEÑAMOS ELECTRÓNICA DIGITAL BÁSICA DEBE CAMBIAR. El procedimiento común en muchas universidades, es el de enseñar todos los fundamentos de como funcionan y como se diseñan circuitos lógicos combinacionales y/o secuenciales usando circuitos integrados 74xx o CD40xx.
Este proceso sin tener ningún tipo de error a la hora de enseñar los conceptos, si cuenta con una gran limitación en el momento de la implementación de los diseños realizados a nivel teórico. El problema es exigir al estudiante aplicaciones en las que demuestre todo lo aprendido en el curso. Hablo de la puesta en marcha en un protoboard o circuito impreso.
Al finalizar semestre, y pedimos a nuestros estudiantes diseñar una maquina de estados en la que se pueda comprobar todo lo enseñado, lo mas común es que encontremos montajes en protoboard como el de la siguiente foto:
Con solo ver la foto se puede concluir:•
¿El estudiante es desordenado? No siempre el resultado sera así por ser desordenado, en ocasiones simplemente es imposible mantener el orden, pues dar mas longitud a los cables para que los cruces sean totalmente en angulo puede generar problemas de retardo en señal y algunas veces simplemente se pierde continuidad al doblar el alambre varias veces por el mismo punto.
•
¿Es muy probable que no funcione?Lo mas probable es que funcione si durante el proceso de cableado se hizo con dedicación y paciencia, de no ser así, simplemente los protoboard no tendrían justificación para su existencia. Pero con solo ver el resultado a simple vista, no es mucho lo que se pueda esperar del trabajo.
•
Se puede reconocer el tiempo invertidoEs imposible negar que para terminar un montaje en protoboard de un circuito digital que necesite como mínimo 8 circuitos integrados se debe invertir tiempo y paciencia. Pero ese tiempo fue dedicado a cortar y doblar cables, a organizar los componentes y a buscar en su desorden de componentes y cables..."por que razon no me funciona!!!!".
Debemos recordar que la clase es de Electrónica Digital, no de montajes en protobard, por eso lo que debemos esperar de los estudiantes es que ese tiempo que se invierte en el desarrollo del proyecto sea en diseño, simulación, pruebas y puesta en marcha.
Lo mas triste, es que sabemos que el proyecto no era tan complejo y que de exigir algo mas trabajado, les llevaría a los estudiantes todo el semestre montarlo, probarlo, y sin saber si se consigan todos los componentes que se necesiten en las tiendas de electrónica de la ciudad.
¿Que es una CPLD?
Para dar una explicación sobre la CPLD, se usara el diagrama de bloques interno de la referencia XC9272XL-10VQ fabricada por la empresa XILINX.
Diagrama de bloques CPLD XC9572XL-10VQ.El nombre CPLD proviene de "
Dispositivo
Lógico
Complejo
Programable".
Una CPLD es en general un grupo de compuertas lógicas configurables (1600 para la XC9572XL) que interconectandolas entre si, son capaces de implementar cualquier función lógica combinacional booleana usando suma de productos, el resultado de estas funciones combinacionales, pueden ser mezcladas con operaciones secuenciales usando Flip-Flops reconfigurables.
Un grupo de compuertas AND para realizar los productos de las señales de entradas, un sumador de productos OR y un Filp-Flop configurable, toma el nombre de macrocelda.
Un grupo de macroceldas toma el nombre de bloque funcional, ya que este cuenta con la tecnologia para implementar casi cualquier función lógica combinacional y/o secuencial.
Para interconectar las macroceldas, bloques funcionales y puertos de entrada salida, se usa una matriz de interconexiones de alta velocidad. Esta puede ser vista de cierta manera como los cables que usábamos en el protoboard para conectar los distintos circuitos integrados, llevar las señales de uno a otro y para luego conectar el resultado del proceso digital en diodos led o cualquier otro indicador y/o actuador.
Cuando se usan CPLDs en nuestros diseños digitales, ya no es necesario contar con distintas referencias de integrados que cumplen una función especifica, AND, OR, NOT, YES, NAND, NOR, XOR, XNOR, de 2, 3, 4, 5, 6 entradas, contadores ascendentes y descendentes, BCD y de décadas, multiplexores y demultiplexores, codificadores y decodificadores flip flops, etc, en general todos los módulos básicos y avanzados que existen, absolutamente todos pueden ser implementados en la CPLD y lo mejor es que internamente en la CPLD se pueden tener uno o mas de todos los nombrados y algunos no nombrados, interconectados entre si para crear un proyecto completo sin tener que usar un cable para ello. Todo se enlaza usando la matriz rápida de interconexión interna de la CPLD.
Los limites de los diseños que se pueden implementar están en la cantidad de compuertas lógicas y macroceldas que cuente el dispositivo lógico programable usado.
Para la CPLD del modulo EXm9572XL, tenemos los siguientes recursos:• 34 Puertos I/O. De estos 34 puertos hay unos con funciones especiales que son:
• 3 GCK que son rutas especiales para conectar señales de RELOJ a los Flip-Flop.
• 1 GSR que son rutas especiales para conectar señales de RESET a los Flip-Flop.
• 2 GTS que son rutas especiales para conectar señales de PRESET a los Flip-Flop.
• 4 Pines especiales para programación In-Circuit usando el estándar IEEE 1149.1 boundary-scan (JTAG).
• 4 Bloques Funcionales.
• 18 Macroceldas por cada Bloque Funcional lo que completa 72 Macroceldas.
• 54 Señales de entrada desde la matriz de interconexión hasta cada Bloque Funcional.
Bloque Funcional
Diagrama de bloques de un bloque funcional en la CPLD XC9572XL.Macrocelda
Diagrama de bloques de una macrocelda en la CPLD XC9572XL.
Los productos de los términos que provienen de las 54 señales de la matriz de interconexión son realizados por las compuertas programables. Cinco de esos productos términos llegan al "Product Term Allocator" quien selecciona cuales de esos cinco serán sumados para obtener la ecuación como Suma de Productos, cual será usados como señal de RELOJ, cual sera usado como señal de RESET, cual como PRESET, cual como CLOCK ENABLE, o cual sera conectada a la matriz de interconexión de forma directa para ser llevada hasta otras macroceldas.
Se puede ver en el diagrama de bloques de la macrocelda que al "Product Term Allocator", también llegan señales provenientes de otras macroceldas y serán tenidas en cuenta para darle la ruta adecuada según el diseño que se desea implementar.
En general se pueden usar cualquiera de los pines para las funciones de CLK, RESET y PRESET en los flip-flops, pero de ser así, la CPLD usara la matriz de interconexión para llevar la señal entre el pin donde esta conectado el generador de reloj y los Flip-Flops usados en el diseño que están en cada una de las macroceldas.
Es importante resaltar que sucede físicamente con los pines que tienen las funciones especiales GCK, GSR.
El nombre GCK proviene de "General Clock". Su función principal es la de ofrecer una ruta mas corta entre el pin de la CPLD donde esta conectada físicamente el generador de reloj y el pin CLOCK de todos los flip-flops en la CPLD. Esto es realmente importante para evitar el problema de "Clock Skew" que puede presentarse si no se controla de manera eficaz las distancias entre la fuente de RELOJ y el pin CLK del FLIP-FLOP.
GSR "General Set/Reset", son precisamente para ofrecer una ruta mas corta entre el pin de la CPLD donde esta conectado físicamente el circuito de control PRESET/RESET y todos los Flip-Flops. Esto para asegurar que los estados iniciales en los flips-flops después de un cambio externo sea en el mismo instante de tiempo.
Bloques I/O
Diagrama de bloques de un Bloque I/O en la CPLD XC9572XL.Los bloques I/O son la interfaz entre la lógica interna de la CPLD y los dispositivos externos conectados a ella. Cada Bloque I/O incluye un buffer de entrada, un buffer de salida con habilitador, este habilitador puede provenir de diferentes partes de la CPLD, conexión a GND programable, controlador de "Slew Rate" y "Bus-Hold".
Buffer de entradaEs compatible con lógica TTL de 5V, 3.3v y 2.5v CMOS. El Buffer de entrada usa el voltaje de la CPLD (VCCint) para garantizar la estabilidad del voltaje usado y no depender del voltaje conectado en VCCio.
Cada Buffer provee una entrada con histeresis de aproximadamente 50mv tipicamente, ayudando de esta manera a reducir el ruido que se pueda presentar en la señal de entrada conectada a la CPLD.
Buffer de salidaCada Buffer de salida es diseñado y fabricado para proveer una rápida conmutación pero que a su vez produzca el mínimo ruido en la fuente de voltaje. Este buffer puede trabajar a 2.5 o a 3.3V tecnología CMOS y el nivel es seleccionado aplicando el voltaje correspondiente en el pin de la CPLD llamado VCCio.
Para cada buffer de salida cuenta con un controlador de "Slew Rate" para asegurar la mínima cantidad de ruido en las señales generadas.
Cada Buffer cuenta con un habilitador que puede tomar de distintas fuente la señal de control. Estas señales pueden provenir de la matriz de interconexión como resultado de operaciones lógicas en las macroceldas o desde pines de la CPLD donde esta conectado un circuito externo para dicha tarea. Es importante resaltar que existen en la CPLD pines con la función especial GTS donde su principal característica radica en que ofrecen una ruta directa para llegar el OUTPUT ENABLE de los buffer de salida y el circuito de control externo conectado físicamente a la CPLD.
Efecto del controlador "Slew-Rate" sobre las señales generadas.Conexión a GND ProgramableCuando se tienen puerto I/O sin usar, siempre es recomendado conectarlos a GND para evitar el ingreso de señales no controladas a la CPLD que puedan afectar los procesos internos de esta. El bloque USER PROGRAMMBLE GND, permite conectar a GND estos pines sin usar, sin tener que realizar cableados adicionales fuera de la CPLD.
Bus HolderTambién llamado guardián (Keeper). Su función principal es la de ofrecer una pequeña memoria que mantiene el ultimo estado valido en el puerto de entrada.
Circuito "Bus-Holder" implementado en cada Bloque I/O de la CPLD.Cuando se conecta un circuito externo a la CPLD que entrega una señal con 3 estados posibles (Bajo, Alto y Alta impedancia), puede pasar lo siguiente; En estado alto o bajo, esta memoria almacenara ese estado, y a la CPLD internamente le llegara el estado que se encuentre en ese instante, pero cuando el circuito externo pase a estado alta impedancia donde no se puede determinar ninguno de los dos validos (1 ó 0), la memoria sera quien mantenga a la lógica interna de la CPLD el ultimo estado valido hasta que nuevamente llegue un estado permitido. Esto toma gran importancia cuando se tienen varios circuitos con salida Open-Collector conectados en paralelo a un solo pin de la CPLD.
La resistencia RBH del esquema es de 50K y vale la pena nombrar que las compuertas usadas en este circuito son alimentadas por VCCio, para que así puedan trabajar con circuitos CMOS de 2.5V.
Voltajes de operación de la CPLD XC9572XL
Voltajes de operación de la CPLD XC9572XL.En la CPLD, todas las señales internamente trabajan a 3.3Vdc, es por ello que hay un Pin especial en el dispositivo llamado VCCint. En este se debe aplicar estos 3.3VDC, con la restricción de ser lo mas estable posible ya que ello depende que los diseños implementados en la CPLD puedan trabajar bien.
También existe un Pin llamado VCCio. El voltaje aplicado en este, determina el voltaje máximo de salida por los puertos I/O. Máximo se puede aplicar 3.3VDC en el.
Sin importar si en VCCio, se aplican 2.5V o 3.3V, la CPLD puede soportar en sus pines hasta 5Vdc como señal de entrada.
.
.
.
.
(continuara)