Usuario anónimo ¿Quieres tener tu propio blog?
Crear blog gratis en OboLog

CPLD

por edgart
viernes, 09 de mayo del 2008 a las 03:59
guardado en

Estructura y funcionamiento de los CPLD.

             Los CPLD son dispositivo lógicos programables con una complejidad entre los dispositivos PLA y FPGA.  La característica principal comun entre los CPLD y PAL, es la configuración de memoria no-volatil, y con respecto a los dispositivo FPGA,  la característica común de éste último es que posee un desarrollo de compuertas de grande densidades, con la diferencia que los FPGA, tienen mayor densidad que los CPLD. A modo general un CPLD es como si se tuviera varios PLD, tipo PAL, dentro de un sólo chip. el tamaño mas grande los CPLD permite implementar  ecuaciones lógicas o diseños mas complicados.  la programación de estos dispositivos es generalmente en lenguajes de descripción de hardware , por ejemplo, VHDL o Verilog.

Dispositivos Lógicos Programables Complejos (CPLD)

                Existen dos tipos de arquitectura de los CPLD: 1) Arquitectura de Matriz de suma de productos y 2) Arquitectura, Look-up Table (LUT), tabla de datos.

Matriz de Suma de Productos

Se relacionan con un mayor número de interconexión de secciones de compuertas programables, tales secciones pueden ser otros PLD, es decir el CPLD puede contener similares PLD de baja densidad, "PAL", interconectados entre sí, en un solo chip.

44606-40891.jpg

Fig. 1 Diagrama de bloque de un CPLD (Por ALTERA)

44606-40926.jpg

Fig. 2 Diagrama de bloque de un CPLD del fabricante XILINX

                La estructura principal son los bloques de matriz lógicos (LAB) o bloques de Función (Funtion Block), que se comunican en un bus interno con la matriz de Interconexión Programable (PIA) o también llamado Fast CONNECT Switch Matrix. Cada bloque es un grupo de 16 macroceldas; tienen entradas y salidas similares a los PLD de baja densidad, con capacidad de programarse. El número de pines de entrada y/o salida dependerá del dispositivo, para el caso de la figura 1, corresponde al modelo MAX7000S, basados en celdas EEPROM, del fabricante ALTERA, de 6 a 16 pines de entrada y salida, estas últimas se encuentran en el bloque de control de entrada y salida, la cual también posee conexión con el PIA, y en la figura 2, el bloque de salida y entrada I/O, poseen un bufer para los dispositivos de entrada y salida.

                Cada bloque de función, para el caso de XILINX modelo de ejemplo "XC9500", esta compuesto de 18 macroceldas independientes. Los bloques funcionales también reciben una señal (reloj) de sincronismo global, una señal para habilitar la salida y una señal para habilitar el reset/set. El bloque funcional genera 18 salidas que maneja el FAST CONNECT. estas 18 salidas y su correspondiente señales de habilitación son gobernadas por el bloque I/O. la lógica dentro de los bloques funcionales es implementada utilizando la representación de  suma de producto

44606-40925.jpg

Fig 3  Bloque de Función

         Las macroceldas pueden ser configuradas individualmente por una función de registro. 5 matriz de compuertas  AND, directos al "product terms "(termino de producto), son utilizados como entrada de datos primario (para las compuertas OR y XOR) para implementar funciones combinacionales, o como entradas de control incluyendo el reloj, señales set/reset, y señal de habilitación de salida. Los registros de las macroceldas pueden ser configurados como FLIP-FLOP tipo D o FLIP-FLOP tipo T. o este puede ser omitido por una operación combinacinoal. Cada registro soporta operaciones set y reset asincronos. durante el encendido del dispositivo, todos los registro son inicializados al estado predefinido por el usuario.

 44606-40918.jpg

Fig. 4 Macrocelda con bloque de función

           Las señales de contro global son desarrolladas individualmente en cada macrocelda, incluyendo señal de reloj, señal de set/reset, y la señales de habilitación. la macrocelda registra señales de reloj de cada uno de los tres relojes globales o del termino producto. La señal GSR, es una señal de Reset/set, de entrada que permite que sea definido por el usuario.

44606-40919.jpg

 Fig. 5 Reloj de Macrocelda

      El termino producto, controla que la matriz de las 5 AND sean asignadas a cada macrocelda, un ejemplo pudiera ser que todas las AND sean manejadas por una OR.  El inconveniente de esto es que se evidencia el retardo de un termino producto a otro como se observa en la siguiente figura.

44606-40920.jpg

Fig. 6 Lógica de la Macrocelda utilizando termino producto 

        44606-40921.jpg

Fig. 7 Lógica de un termino producto 

        El FAST CONNECT Switch Matriz conecta las señales a la entrada del bloque de función; tanto las salidas del bloque I/O como las salidas del bloque de función las manejas el Fast Connect Switch Matrix, cualquiera de estas pueden ser seleccionadas, a través de la programación del usuario, para poder manejar cada bloque con un retardo uniforme.

44606-40922.jpg

Fig. 8 Fast Connect Switch Matrix

         El Bloque I/O es la interfaz entre la lógica interna y los pines de entrada y salida del dispositivo CPLD. Cada bloque de I/O incluye un bufer de entrada y un manejador de salida; un multiplexor que selecciona la salida habilitada, y también incluye una señal de control de tierra para la programación del usuario. El bufer de entrada es compatible con tensión de 5 V CMOS, 5 V TTL, y señales  de voltaje de 3.3 V. El bufer de entrada usa internamente un suministro de potencia de 5 V ( Vccint), para asegurarse que el umbral de entrada permanezca constante y no varie con el voltaje Vccio. la señal de salida se habilita de la siguiente formas: una señal puede ser generada por el termino producto de la macrocelda, cualquiera de las señales globales de OE, o por una señal de tercer estado GTS.

44606-40923.jpg

Fig. 9 Bloque I/O

             Cada salida tiene un control independiente de "Slew Rate" (Máxima variación del voltaje de salida con respecto al tiempo); este control permite reducir o controlar el ruido en el sistema, con sólo modificar el Tslew.

44606-40924.jpg

Fig. 10   Slew Rate

                Estos  CPLD poseen circuito con memoria EEPROM; que permiten reescribirse muchas veces, dependiendo del fabricante puede ser hasta 10.000 veces, como es el caso del fabricante XILINX, los modelos de la serie XC9500.

Tabla de datos (Look-Up Table)

                Esta arquitectura se basa en la implementación lógico de bus de interconexión de filas y columnas, estas interconexiones también proveen conexión al bloque de matriz lógicos (LAB). El LAB consiste de varios elementos lógicos (LE); según el modelo pueden ser 10 LE, por cada LAB. Los LE es una pequeña unidad lógica que proveen una eficiente implementación de funciones lógicas del usuario. El Multitrack Interconnect provee una rápida conexión entre los LAB.

 44606-40896.jpg

                               Fig. 11 Diagrama de bloque de la arquitectura de tabla de datos

                Look-Up Table (LUT), Es un circuito que implementa una función de lógica combinacional  para almacenar una lista de valores de salida que correspondan a todas las posibles combinaciones de entradas, es decir un número de elementos almacenados son usados; para resumir una función lógica, almacenando cada función como una tabla de la verdad, esto se ilustra en la figura 12.

 

 

 44606-40897.jpg

Fig. 12 Look-Up Table

                Tomando como ejemplo la tabla de la verdad de la figura 12,  como comparador A1A0=B1B2 , hace que la salida lógica AEQB = 1 lógico. Una matriz de 16 flip-flops (Q0 hasta Q15), contiene data de todas las posibles combinaciones A1A0B1B0, por cada combinación se necesita un flip-flop. La entrada de cada LUT son decodificada por un decodificador de direcciones, cada salida del decodificador activa una buffer de tres estados, que pasa por un bloque de salida de flip-flop. Cuando se activa un buffer para pasar el contenido del flip-flop, el resto de los buffer permanecen en estado de alta impedancia, de esta manera se bloquea la data de los otros flip-flops. El contenido de los flip-flop son cargados cuando el LUT es programado, con las funciones requeridas. Continuando con el ejemplo de la figura 12, los 16 elementos almacenados en dicha tabla, combinados , para  seleccionar una salida combinacional y para interconectar con otras partes del chip, es llamado Elemento Lógico (LE). La función del desempeño del elemento lógico es similar a la de macroceldas en los PLD de suma de producto. La estructura de un elemento lógico se muestra en la figura 13.

 44606-40898.jpg

Fig. 13 Elemento Lógico

El circuito "Cascade Chain",  permite al usuario programar la función boleana, este circuito puede ser de compuertas AND o OR.

 44606-40899.jpg

Fig. 14 Operación en Cascada

Bloque de Matriz Lógico (LAB), consiste en un número de elementos lógicos e interconectados localmente; el bloque LAB, esta conectado con el resto del dispositivo por medio de una serie de columnas y filas interconectadas, lo cual para este caso el fabricante ALTERA ha llamado FastTrack Interconnect, también se le conoce como Multitrack Interconnect.

 44606-40901.jpg

Fig. 15 Bloque de Matriz Lógicos

                Embedded Array Block (EAB), este bloque es una matriz de 2048 elemento de almacenaje que pueden ser usado eficientemente en la implementación de funciones lógicas complejas.

El FLEX10K es un dispositivo del fabricante ALTERA, tiene una matriz de 6 filas por 24 columnas de  bloque de matriz lógico (LAB), es decir que tendrá 144 LAB, que a su ves son 8 x 144LAB= 1152 elementos lógicos, estos elementos también tienen 6 EAB; 6X2048 = 12288 bits de almacenaje de EAB, note que un EAB tiene mas capacidad de almacenaje que un LAB combinado.

                Algunos los dispositivos basados en LUT, son de tecnología de memoria de acceso aleatorio estática (SRAM), la ventaja de esta configuración es que este puede ser fabricado en densidades muy altas de celdas de almacenajes y programar rápidamente, comparado con un dispositivo, (suma de producto, SOP), basado en EEPROM. La desventaja es que las celdas SRAM, son volátiles; es decir que deben reconfigurarse cada vez que se reinicia el sistema.

 44606-40902.jpg

Fig. 16 Diagrama en bloque de un dispositivo de estructura de datos como es el caso del FLEX10K del fabricante ALTERA.

El mismo  fabricante ALTERA, posee el modelo MAXII, "tabla de datos LUT", tal modelo contiene un bloque de memoria "falsh", dentro del dispositivo. La mayoría de estos almacenajes de memorias flash, son particionadas como un bloque de programación o configuración de memoria flash (CFM);  este provee un almacenaje no volátil; la CFM descarga y configura la lógica.  Una porción pequeña de la memoria flash es utilizado para  la  data de usuario, este pequeño bloque de memoria UFM, provee una almacenaje para el usuario de propósito general, en este bloque se provee la conexión del puerto programable para el arreglo lógico de lectura y escritura.

 44606-40892.jpg

Fig. 17 Diagrama de bloque del modelo MAXII

 44606-40893.jpg

Fig. 18 Diagrama del bloque de memoria UFM

                El bloque UFM, puede ser utilizado como el EEPROM serial, para almacenar información no volátil, este bloque se conecta al bloque de arreglo lógico a través del bus Multitrack interconectado, de esta manera se permite la interface con el bloque de elemento lógico.

FABRICANTES DE CPLD

  • 1- Altera

Ha desarrollado tres familias de la categoría CPLD. MAX5000, MAX7000 y MAX9000. El MAX5000 representa la tecnología mas antigua que ofrecen soluciones de costo efectivo; el MAX7000 ofrece altas capacidades lógicas y mayor desempeño en velocidad; el MAX9000 es similar al MAX7000, excepto que el MAX9000 ofrece una mayor capacidad lógica. El MAX7000 contiene bloques de matrix lógicos LAB, matrix de interconexión programable PIA, esta serie fueron desarrollados en tecnología EPROM y EEPROM, la desventaja de esta serie es que se debe programar fuera del circuito de desarrollo; desde 1996 Altera, desarrollo el modelo MAX7000S, capaz de programarse en línea, es decir en el mismo circuito. Altera FlashLogic CPLDs, anteriormente conocido como Intel`s FlEXlogic, caracterizado por programarse dentro del sistema y provee bloques SRAM en el dispositivo. La configuración de compuertas AND-OR, son por celdas SRAM, respaldadas por celdas EPROM o EEPROM. Al realizar un suministro de potencia las celdas SRAM son cargadas con un copia de la memoria EEPROM o EPROM, pero es la celda SRAM la que controla la configuración del dispositivo

  • 2- Atmel

Ofrece el modelo ATF1500A, alto desempeño y alta densidad de compuertas, construido con tecnología FLASH, con un retardo de 7.5 ns de pin a pin.

  • 3- AMD

Ofrece una familia de CPLD con 5 sub-familias llamadas Mach 1 a Mach 5. Cada dispositivo Macth, contiene bloques con múltiplos PAL; Match 1 Y 2 consiste en el modelo 22V16PALs, Match 3 y 4 consiste en el modelo 34V16PALs y el Match 5 ofrece modelos parecidos a los anteriores pero con mayor desempeño en velocidad. Todos los Match están basados en tecnología EEPROM. El rango de capacidad lógicas están cercas de 2000 a 5000 compuertas.

  • 4- Cypress Semiconductor

Son similares a los dispositivos AMD y Lattice en muchas maneras; el Cypress CPLD, llamado FLASH370, esta basado en tecnología FLASH EEPROM, y ofrece un desempeño en el retardo de velocidad de 8.5 a 15 ns de pin a pin, la desventaja es que no es programable en el sistema.

  • 5- Lattice Semiconductor

Lattice ofrece un completo rango de CPLD; con dos líneas de productos principales: Lattice pLSI que consiste en tres familias de EEPROM de CPLD; y el ispLSI que son los mimos dispositivos pLSI, con la diferencia de los ispLSI son programables en el sistema. Los rangos de capacidades lógicas están cercas de 1200 a 4000 compuertas y el retardo de pin a pin es de 10 ns. El Lattice de la serie 3000 representa su desarrollo mas grande con 5000 compuertas  y un retardo de 10 a 15 ns.

  • 6- Xilinx

Ofrecen el modelo XC7000 y el XC9500; hay dos familias principales en el XC7000: la serie 7200 y 7300, el 7200 es un dispositivo moderadamente pequeño con 600 a 1500 compuertas; y con un retardo de pin a pin de 25 ns. El 7300 ofrece 3000 compuertas y lo otro que diferencia al 7200 es que el 7300 incluye dos compuertas OR en cada macroceldas. Finalmente el XC9500 ofrece la programación dentro del  circuito, con una capacidad de 6200 compuertas y un retardo de 5 ns.

Construcción y Diseño

                Las vías están compuesta de 100 porciento metal de aluminio diluido, aquí se identificará como Metal 2, los contactos son 100 porciento metal de aluminio diluido, identificado como Metal 1. Como características especiales posee tecnología "FLASH FAST". Las compuertas en el canal N son del orden de 0.45 micra, y el canal P son del orden de 0.5 micra. El dispositivo esta formado por una capa de nitruro de silicio sobre otra capa de  dióxido de silicio. Posee dos capas de polisilicio. El PLOY 1 fue utilizada exclusivamente en compuertas flotantes, y POLY 2 (polisilicio y silicio de tusteno) fue utilizado para todas las compuertas estándar, en la matrix de lineas de programas y de palabra. La matrix de celdas programables son EEPROM (tecnología FAST FLASH), el Metal 2, será utilizado para las líneas de programa y de la palabra de dato. El Metal 1 distribuye la tierra GND y una línea de un bit. El dielétrico se encuentra entre las capas POLY es de ONO "óxido-nitruro-óxido".  el color anaranjado es Nitruro de Silicio, el color azul es Metal 1 y 2, el color amarillo es Óxido, el color verde es polisilicio, color rojo difusión del canal P y N, y el color gris es el substrato P. Ver figura 12.

               Si el dispositivo es borrable eléctricamente EEPROM, sus conexiones es a base de transistores  MOS de puerta flotante, que contiene una puerta adicional embebida en el aislante entre la puerta normal (accesible desde el exterior) y el substrato. esta puerta extra, sin conexión al exterior y completamente rodeada de material aislante, es la puerta flotante. los transistores MOS, inicialmente no tienen carga en la puerta flotante, de forma que actúan como transistores normales: en cada linea vertical se realiza la operación lógica Y; es necesario que todas las líneas horizontales estén bajas (a=b=c=d=L) para que las líneas verticales sean altas (x=y=z=H), y basta que una de las entradas sea baja (a=L, por ejemplo) para que su línea correspondiente sea alta, y por tanto los transistores cuyas puertas están conectadas a esa línea de entada pasan a conducción, y entonces las líneas verticales se hacen L. En otras palabras, los transistores hacen el punto de conexión entre las líneas verticales y horizontales. Para desconectar un punto de conexion (un transistor), en la fase de programación se aplica una tensión relativamente elevada (15 a 20)V en la puerta del transistor a desconectar; esta tensión hace que, por un proceso físico conocido como efecto túnel, atraviesen electrones desde el substrato por la fina capa de aislante y queden almacenados en la puerta flotante. En definitiva la introducción de electrones en la puerta flotante desconecta el transistor del circuito, ya que siempre estará cortado (estado off).

 44606-40894.jpg

Fig. 12 Construcción de un CPLD

         44606-41048.jpg

Fig. 13 línea de productos 

CRITERIOS DE SELECCIÓN

           Es importante tomar en cuenta la densidad de compuertas que se requiere, y para ello es necesario determinar el número de macroceldas que debe poseer el dispositivo; también es importante determinar el número de entradas y de salida, según la ecuación lógica obtenida. los retardos de propagación  entre la señal de entrada y de salida se debe de tomar en cuenta cuando se esta trabajando con altas velocidades de procesamiento. hay sistemas que trabajan con diferentes niveles de tensión por lo que es importante conocerlos tomarlo en cuenta en el dispositivo CPLD. estos niveles de tensió pueden oscilar entre 1.5 V a   5 V.

            En la metodología modernas de diseños digitales, para sistemas de relativa complejidad, en lugar de utilizar descripciones del comportamiento del sistema en forma de tablas (tablas de la verdad, de transición de estado, etc) se utilizan lenguajes específicos, los lenguajes de descripción de hardware o HDL (Hardware Description Language), que pueden describir tanto el comportamiento como la estructura de un sistema.

            Diseño de un decodificador binario de 2 a 4.

            Paso 1: Se realiza la descripción del sistema, de forma que el entorno de desarrollo pueda generar una representación interna del mismo. se puede optar entre una descripción estructural, con ayuda de un editor gráfica de captura de esquemas, o una descripción del comportamiento con un lenguaje HDL.

44606-41047.jpg

Fig. 14  Descripción del decodificador: a) estructural; b) funcional.

             Paso 2: Se realiza una compilación funcional, con la que se verifican posibles errores en el diseño (salidas cortocircuitadas, entradas flotantes...) y además se genera una representación interna del sistema, con la que puede efectuarse una simulación funcional del mismo. en esta fase la simulación es sólo funcional y es independiente de la tecnología de implementación, que es la que depende de los retardo que se produzcan.

            Paso 3: En el software (compilador) se especifica la tecnología de implementación. Se proyecta el diseño al tipo de celdas lógicas, celdas de entradas y salida, y recurss de conexión del CPLD seleccionado. tras la compilación se obtiene una representación interna del sistema implementado y se genera un fichero informativo donde se detalla el porcentaje de ocupación del dispositivo, las asignaciones de celdas y pines de entrada y salida, y otros..)

             Paso 4: Se hace una simulación y análisis temporal. con la información detallada de las características técnicas de cada uno de sus componentes de la biblioteca de elementos se puede realizar una nueva simulación mas real y se puede establecer los tiempos de retardos.

             Paso 5: Una vez compilado y simulado el circuito; se debe configurar físicamente el CPLD, lo que puede realizarse físicamente con un programador de PLD o en el propio sistema (ISP). Es preferible utilizar este último para reducir los psibles daños mecánicos en los pines del dispositivo, por lo tanto suelen configurarse los CPLD en la propia tarjeta del sistema final, con una programación ISP (In-System Programming), esta opción se utiliza en circuitos borrables eléctricamente EEPROM o configurables con celdas SRAM. Comúnmente se utiliza el protocolo JTAG (joint Test Action Group). que utiliza cuatro lineas para transferir bit a bit entre el computador y la tarjeta del sistema la información de configuración.

44606-41041.jpg

Fig. 15 Esquema de conexión utilizando el programador CPLD

 

44606-41042.jpg

Fig 16 Esquema de conexión utilizando un cable de descarga

Referencias

[1] Antonio Lloris Ruiz, Alberto Prieto Espinosa, Luis Parrilla Roure: Sistemas Digitales;  Mc Graw Hill, pag. 501-535;  2003

[2] http://www.xilinx.com/

[3] http://www.altera.com/

[4] Digital Design with CPLD applications and VHDL

[5]  Altera Device Package Information Data Sheet

[6]  XC9500 In-System Programmable CPLD Family (XILINX)

Deja tu comentario

Deja tu comentario
Necesitas tener javascript activado para poder dejar comentarios

Identifícate en OboLog, o crea tu blog gratis si aún no estás registrado.

De esta forma, además, podrás mostrar tu imagen en los comentarios y no tendrás que rellenar tus datos cada vez.

Sobre esta anotación

edgart

edgart escribió esta anotación hace 3 meses. En ella habla sobre Dispositivos.

Aún no hay ningún comentario.

Tu podrías dejar el primero.

Temas relacionados

Login

Suscripción

Suscríbete al Feed RSS XML

También puedes suscribirte directamente con alguno de los siguientes enlaces:

  • Suscríbete en Bloglines
  • Suscríbete en Google