Funcionamiento Funcionamiento de un CPLD Un CPLD (del acrónimo inglés Complex Programmable Logic Device) es un dispositivo electrónico que extiende el concepto de un PLD (del acrónimo inglés Programmable Logic Device) a un mayor nivel de integración ya que permite implementar sistemas más eicaces! porque utili"an menos espacio! me#oran la iabilidad del dise$o! y reducen costos% Un CPLD se orma con m<iples bloques lógicos! cada uno similar a un PLD% Los bloques lógicos se comunican entre s' utili"ando una matri" programable de interconexiones! lo cual ace más eiciente el uso del silicio! conduciendo a una me#or eiciencia a menor costo% Matriz de Interconexiones Programables Programables
La matri" de interconexiones programables (P*) permiten unir los pines de entrada+salida a las entradas del bloque lógico! o las salidas del bloque lógico a las entradas de otro bloque lógico o inclusive a las entradas del mismo% La mayor'a de los CPLDs usan una de dos coniguraciones para esta matri", interconexión mediante bloques o interconexión mediante multiplexores% -l prim primer ero o se basa basa en una una matr matri" i" de ila ilass y colu column mnas as con con una una celd celda a programable de conexión en cada intersección% .l igual que en las /.L esta celda puede ser activada para conectar+desconectar la correspondiente ila y columna% -sta coniguración permite una total interconexión entre las entradas y salida salidass del del dispos dispositiv itivo o o bloqu bloques es lógico lógicos% s% 0in embarg embargo! o! estas estas venta#a venta#ass provocan que disminuya el rendimiento del dispositivo! además de aumentar el consumo de energ'a y el tama$o del componente% -n la interconexión mediante multiplexores! existe un multiplexor por cada entr entrad ada a al bloq bloque ue lógi lógico co%% Las Las v'as v'as de inte interc rcon onex exió ión n prog progra rama mabl bles es son son conectadas a las entradas de un n&mero de multiplexores por cada bloque lógico% Las l'neas de selección de estos multiplexores son programadas para permitir que sea seleccionada &nicamente una v'a de la matri" de interconexión por cada multiplexor la cual se propagara a acia el bloque lógico% Cabe mencionar que no todas las v'as son conectadas a las entradas de cada multip multiplex lexor or%% La rutab rutabilid ilidad ad se increm increment enta a usando usando multip multiplex lexore oress de mayor mayor tama$o! permitiendo que cualquier combinación de se$ales de la matri" de interconexión pueda ser enla"ada acia cualquier bloque lógico% 0in embargo! el uso de grandes multiplexores incrementa el tama$o de dispositivo y reduce su eiciencia% Bloques Lógicos
Un bloque lógico es similar a un PLD! cada uno pose un bloque de compuertas .1D y 23 en orma de suma de productos! una coniguración para la distribución de estas sumas de productos! y macroceldas% -l tama$o del bloque lógico es una medida de la capacidad del CPLD! ya que de esto depende el
tama$o de la unción booleana que pueda ser implementada dentro del bloque% Los bloques lógicos usualmente tienen de 4 a 56 macroceldas% Macroceldas
-stas también están provistas con registros! control de polaridad! y buers para salidas en alta impedancia% Por lo general un CPLD tiene macroceldas de entrada+salida! macroceldas de entrada y macroceldas internas u ocultas (buried macrocells)! en tanto que un 55v76 tiene solamente macroceldas de entrada+salida% Una macrocelda interna es similar a una macrocelda de entrada+salida! sólo que esta no puede ser conectada directamente a un pin de salida% La salida de una macrocelda interna va directamente a la matri" de interconexión programable% Celda de Entrada / Salida
La unción de una celda de entrada+salida es permitir el paso de una se$al acia dentro o acia el exterior del dispositivo% Dependiendo del abricante y de la arquitectura del CPLD estas celdas pueden o no ser consideradas parte del bloque lógico%
Estructura de un CPLD Los CPLD son dispositivo lógicos programables con una comple#idad entre los dispositivos PL. y 8P/.% La caracter'stica principal comun entre los CPLD y P.L! es la coniguración de memoria no9volatil! y con respecto a los dispositivo 8P/.! la caracter'stica com&n de éste <imo es que posee un desarrollo de compuertas de grande densidades! con la dierencia que los 8P/.! tienen mayor densidad que los CPLD% . modo general un CPLD es como si se tuviera varios PLD! tipo P.L! dentro de un sólo cip% 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 lengua#es de descripción de ard:are ! por e#emplo! ;
Matriz de Suma de Puntos
0e 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 ba#a densidad! =P.L=! interconectados entre s'! en un solo cip%
Figura # 1: Diagrama de Bloque de un CPLD (por ALTERA)
Figura # 2: Diagrama de Bloque de un CPLD (por XL!X)
La estructura principal son los bloques de matri" lógicos (L.>) o bloques de 8unción (8untion >loc?)! que se comunican en un bus interno con la matri" de nterconexión Programable (P.) o también llamado 8ast C211-C@ 0:itc *atrix% Cada bloque es un grupo de 7A macroceldasB tienen entradas y salidas similares a los PLD de ba#a densidad! con capacidad de programarse% -l n&mero de pines de entrada y+o salida dependerá del dispositivo! para el caso de la igura 7! corresponde al modelo *.6660! basados en celdas --P32*! del abricante .L@-3.! de A a 7A pines de entrada y salida! estas <imas se encuentran en el bloque de control de entrada y salida! la cual también posee conexión con el P.! y en la igura 5! el bloque de salida y entrada +2! poseen un buer para los dispositivos de entrada y salida%
Cada bloque de unción! para el caso de L1 modelo de e#emplo =CEF66=! esta compuesto de 7G macroceldas independientes% Los bloques uncionales también reciben una se$al (relo#) de sincronismo global! una se$al para abilitar la salida y una se$al para abilitar el reset+set% -l bloque uncional genera 7G salidas que mane#a el 8.0@ C211-C@% estas 7G salidas y su correspondiente se$ales de abilitación son gobernadas por el bloque +2% la lógica dentro de los bloques uncionales es implementada utili"ando la representación de suma de producto %
Figura # ": Bloque de Funi$n
Las macroceldas pueden ser coniguradas individualmente por una unción de registro% F matri" de compuertas .1D! directos al =product terms =(termino de producto)! son utili"ados como entrada de datos primario (para las compuertas 23 y 23) para implementar unciones combinacionales! o como entradas de control incluyendo el relo#! se$ales set+reset! y se$al de abilitación de salida% Los registros de las macroceldas pueden ser conigurados como 8LP98L2P tipo D o 8LP98L2P tipo @% 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 iniciali"ados al estado predeinido por el usuario%
Figura # %: &aroelda on Bloque de Funi$n
Las se$ales de contro global son desarrolladas individualmente en cada macrocelda! incluyendo se$al de relo#! se$al de set+reset! y la se$ales de abilitación% la macrocelda registra se$ales de relo# de cada uno de los tres relo#es globales o del termino producto% La se$al /03! es una se$al de 3eset+set! de entrada que permite que sea deinido por el usuario%
Figura # ': Relo de &aroelda
-l termino producto! controla que la matri" de las F .1D sean asignadas a cada macrocelda! un e#emplo pudiera ser que todas las .1D sean mane#adas por una 23% -l inconveniente de esto es que se evidencia el retardo de un termino producto a otro como se observa en la siguiente igura%
Figura # : L$gia de &aroelda u*ili+ando *ermino produ*o
Figura # ,: L$gia de un *ermino produ*o
-l 8.0@ C211-C@ 0:itc *atri" conecta las se$ales a la entrada del bloque de unciónB tanto las salidas del bloque +2 como las salidas del bloque de unción las mane#as el 8ast Connect 0:itc *atrix! cualquiera de estas pueden ser seleccionadas! a través de la programación del usuario! para poder mane#ar cada bloque con un retardo uniorme%
Figura # -: Fa.* Conne* /0i* &a*ri
-l >loque +2 es la intera" entre la lógica interna y los pines de entrada y salida del dispositivo CPLD% Cada bloque de +2 incluye un buer de entrada y un mane#ador de salidaB un multiplexor que selecciona la salida abilitada! y también incluye una se$al de control de tierra para la programación del usuario% -l buer de entrada es compatible con tensión de F ; C*20! F ; @@L! y se$ales de volta#e de H%H ;% -l buer de entrada usa internamente un suministro de potencia de F ; ( ;ccint)! para asegurarse que el umbral de entrada permane"ca constante y no varie con el volta#e ;ccio% la se$al de salida se abilita de la siguiente ormas, una se$al puede ser generada por el termino producto de la macrocelda! cualquiera de las se$ales globales de 2-! o por una se$al de tercer estado /@0%
Figura # 3: Bloque 45
Cada salida tiene un control independiente de =0le: 3ate= (*áxima variación del volta#e de salida con respecto al tiempo)B este control permite reducir o controlar el ruido en el sistema! con sólo modiicar el @sle:%
Figura # 16: /le0 Ra*e
-stos CPLD poseen circuito con memoria --P32*B que permiten reescribirse mucas veces! dependiendo del abricante puede ser asta 76%666 veces! como es el caso del abricante L1! los modelos de la serie CEF66%
abla de Datos !Loo" u# able$
-sta arquitectura se basa en la implementación lógico de bus de interconexión de ilas y columnas! estas interconexiones también proveen conexión al bloque de matri" lógicos (L.>)% -l L.> consiste de varios elementos lógicos (L-)B seg&n el modelo pueden ser 76 L-! por cada L.>% Los L- es una peque$a unidad lógica que proveen una eiciente implementación de unciones lógicas del usuario% -l *ultitrac? nterconnect provee una rápida conexión entre los L.>%
Figura # 11: Diagrama de 7loque de la arqui*e*ura de *a7la de da*o.
Loo?9Up @able (LU@)! -s un circuito que implementa una unció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 usadosB para resumir una unción lógica! almacenando cada unción como una tabla de la verdad! esto se ilustra en la igura 75%
Figura # 12: Loo89p Ta7le
@omando como e#emplo la tabla de la verdad de la igura 75! como comparador .7.6I>7>5 ! ace que la salida lógica .-J> I 7 lógico% Una matri" de 7A lip9 lops (J6 asta J7F)! contiene data de todas las posibles combinaciones .7.6>7>6! por cada combinación se necesita un lip9lop% La entrada de cada LU@ son decodiicada por un decodiicador de direcciones! cada salida del decodiicador activa una buer de tres estados! que pasa por un bloque de salida de lip9lop% Cuando se activa un buer para pasar el contenido del lip9 lop! el resto de los buer permanecen en estado de alta impedancia! de esta manera se bloquea la data de los otros lip9lops% -l contenido de los lip9lop son cargados cuando el LU@ es programado! con las unciones requeridas% Continuando con el e#emplo de la igura 75! los 7A elementos almacenados en dica tabla! combinados ! para seleccionar una salida combinacional y para interconectar con otras partes del cip! es llamado -lemento Lógico (L-)% La unció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 igura 7H%
Figura # 1": Elemen*o L$gio
-l circuito =Cascade Cain=! permite al usuario programar la unción boleana! este circuito puede ser de compuertas .1D o 23%
Figura # 1%: 5perai$n en Ca.ada
>loque de *atri" Lógico (L.>)! consiste en un n&mero de elementos lógicos e interconectados localmenteB el bloque L.>! esta conectado con el resto del dispositivo por medio de una serie de columnas y ilas interconectadas! lo cual para este caso el abricante .L@-3. a llamado 8ast@rac? nterconnect! también se le conoce como *ultitrac? nterconnect%
Figura # 1': Bloque de &a*ri+ L$gio.
-mbedded .rray >loc? (-.>)! este bloque es una matri" de 564G elemento de almacena#e que pueden ser usado eicientemente en la implementación de unciones lógicas comple#as%
-l 8L-76K es un dispositivo del abricante .L@-3.! tiene una matri" de A ilas por 54 columnas de bloque de matri" lógico (L.>)! es decir que tendrá 744
L.>! que a su ves son G x 744L.>I 77F5 elementos lógicos! estos elementos también tienen A -.>B A564G I 755GG bits de almacena#e de -.>! note que un -.> tiene mas capacidad de almacena#e que un L.> combinado%
.lgunos los dispositivos basados en LU@! son de tecnolog'a de memoria de acceso aleatorio estática (03.*)! la venta#a de esta coniguración es que este puede ser abricado en densidades muy altas de celdas de almacena#es y programar rápidamente! comparado con un dispositivo! (suma de producto! 02P)! basado en --P32*% La desventa#a es que las celdas 03.*! son volátilesB es decir que deben reconigurarse cada ve" que se reinicia el sistema%
Figura # 1: Diagrama en 7loque de un di.po.i*i;o de e.*ru*ura de da*o. omo e. el a.o del FLEX16< del =a7rian*e ALTERA
-l mismo abricante .L@-3.! posee el modelo *.! =tabla de datos LU@=! tal modelo contiene un bloque de memoria =als=! dentro del dispositivo% La mayor'a de estos almacena#es de memorias las! son particionadas como un bloque de programación o coniguración de memoria las (C8*)B este provee un almacena#e no volátilB la C8* descarga y conigura la lógica% Una porción peque$a de la memoria las es utili"ado para la data de usuario! este peque$o bloque de memoria U8*! provee una almacena#e 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%
Figura # 1,: Diagrama de 7loque del modelo &AX
Figura # 1-: Diagrama del 7loque de memoria F&
-l bloque U8*! puede ser utili"ado como el --P32* serial! para almacenar inormación no volátil! este bloque se conecta al bloque de arreglo lógico a través del bus *ultitrac? interconectado! de esta manera se permite la interace con el bloque de elemento lógico%
Construcción de un CPLD
Las v'as están compuesta de 766 porciento metal de aluminio diluido! aqu' se identiicará como *etal 5! los contactos son 766 porciento metal de aluminio diluido! identiicado como *etal 7% Como caracter'sticas especiales posee tecnolog'a =8L.0< 8.0@=% Las compuertas en el canal 1 son del orden de 6%4F micra! y el canal P son del orden de 6%F micra% -l dispositivo esta ormado por una capa de nitruro de silicio sobre otra capa de dióxido de silicio% Posee dos capas de polisilicio% -l PL2 7 ue utili"ada exclusivamente en compuertas lotantes! y P2L 5 (polisilicio y silicio de tusteno) ue utili"ado para todas las compuertas estándar! en la matrix de lineas de programas y de palabra% La matrix de celdas programables son --P32* (tecnolog'a 8.0@ 8L.0<)! el *etal 5! será utili"ado para las l'neas de programa y de la palabra de dato% -l *etal 7 distribuye la tierra /1D y una l'nea de un bit% -l dielétrico se encuentra entre las capas P2L es de 212 =óxido9nitruro9óxido=% el color anaran#ado es 1itruro de 0ilicio! el color a"ul es *etal 7 y 5! el color amarillo es Mxido! el color verde es polisilicio! color ro#o diusión del canal P y 1! y el color gris es el substrato P% ;er igura 7E% 0i el dispositivo es borrable eléctricamente --P32*! sus conexiones es a base de transistores *20 de puerta lotante! 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 lotante% los transistores *20! inicialmente no tienen carga en la puerta lotante! de orma que act&an como transistores normales, en cada linea vertical se reali"a la operación lógica B es necesario que todas las l'neas ori"ontales estén ba#as (aIbIcIdIL) para que las l'neas verticales sean altas (xIyI"I<)! y basta que una de las entradas sea ba#a (aIL! por e#emplo) 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 acen L% -n otras palabras! los transistores acen el punto de conexión entre las l'neas verticales y ori"ontales% Para desconectar un punto de conexion (un transistor)! en la ase de programación se aplica una tensión relativamente elevada (7F a 56); en la puerta del transistor a desconectarB esta tensión ace que! por un proceso 'sico conocido como eecto t&nel! atraviesen electrones desde el substrato por la ina capa de aislante y queden almacenados en la puerta lotante% -n deinitiva la introducción de electrones en la puerta lotante desconecta el transistor del circuito! ya que siempre estará cortado (estado o)%
Figura # 13: Con.*rui$n de un CPLD
Figura # 26: L>nea de Produ*o.
Dise%o de un CPLD -s 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 dispositivoB 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 traba#ando con altas velocidades de procesamiento% ay sistemas que traba#an con dierentes niveles de tensión por lo que es importante conocerlos tomarlo en cuenta en el dispositivo CPLD% estos niveles de tensió pueden oscilar entre 7%F ; a F ;%
-n la metodolog'a modernas de dise$os digitales! para sistemas de relativa comple#idad! en lugar de utili"ar descripciones del comportamiento del sistema en orma de tablas (tablas de la verdad! de transición de estado! etc) se utili"an lengua#es espec'icos! los lengua#es de descripción de ard:are o
Dise$o de un decodiicador binario de 5 a 4 1? /e reali+a la de.ripi$n del .i.*ema@ de =orma que el en*orno de de.arrollo pueda generar una repre.en*ai$n in*erna del mi.mo? .e puede op*ar en*re una de.ripi$n e.*ru*ural@ on auda de un edi*or gr=ia de ap*ura de e.quema.@ o una de.ripi$n del ompor*amien*o on un lenguae DL? 2? /e reali+a una ompilai$n =unional@ on la que .e ;eri=ian po.i7le. errore. en el di.eo (.alida. or*oirui*ada.@ en*rada. =lo*an*e.???) adem. .e genera una repre.en*ai$n in*erna del .i.*ema@ on la que puede e=e*uar.e una .imulai$n =unional del mi.mo? en e.*a =a.e la .imulai$n e. .$lo =unional e. independien*e de la *enolog>a de implemen*ai$n@ que e. la que depende de lo. re*ardo que .e produ+an? "? En el .o=*0are (ompilador) .e e.pei=ia la *enolog>a de implemen*ai$n? /e proe*a el di.eo al *ipo de elda. l$gia.@ elda. de en*rada. .alida@ reur.. de onei$n del CPLD .eleionado? *ra. la ompilai$n .e o7*iene una repre.en*ai$n in*erna del .i.*ema implemen*ado .e genera un =iero in=orma*i;o donde .e de*alla el poren*ae de oupai$n del di.po.i*i;o@ la. a.ignaione. de elda. pine. de en*rada .alida@ o*ro.? %? /e ae una .imulai$n anli.i. *emporal? on la in=ormai$n de*allada de la. ara*er>.*ia. *nia. de ada uno de .u. omponen*e. de la 7i7lio*ea de elemen*o. .e puede reali+ar una nue;a .imulai$n ma. real .e puede e.*a7leer lo. *iempo. de re*ardo.?
'? na ;e+ ompilado .imulado el irui*o .e de7e on=igurar =>.iamen*e el CPLD@ lo que puede reali+ar.e =>.iamen*e on un programador de PLD o en el propio .i.*ema (/P)? E. pre=eri7le u*ili+ar e.*e Gl*imo para reduir lo. p.i7le. dao. menio. en lo. pine. del di.po.i*i;o@ por lo *an*o .uelen on=igurar.e lo. CPLD en la propia *are*a del .i.*ema =inal@ on una programai$n /P (n9 /.*em Programming)@ e.*a opi$n .e u*ili+a en irui*o. 7orra7le. el*riamen*e EEPR5& o on=igura7le. on elda. /RA&? ComGnmen*e .e u*ili+a el pro*oolo HTAI (oin* Te.* A*ion Iroup)? que u*ili+a ua*ro linea. para *ran.=erir 7i* a 7i* en*re el ompu*ador la *are*a del .i.*ema la in=ormai$n de on=igurai$n?
Figura # 21: De.ripi$n del deodi=iador: a) e.*ru*ural 7) =unional
Figura # 22: E.quema de onei$n u*ili+ando el programador CPLD
Figura # 2": E.quema de onei$n u*ili+ando un a7le de de.arga
Fabricantes de un CPLD •
.L@-3.
! matrix de interconexión programable P.! esta serie ueron desarrollados en tecnolog'a -P32* y --P32*! la desventa#a de esta serie es que se debe programar uera del circuito de desarrolloB desde 7EEA .ltera! desarrollo el modelo *.6660! capa" de programarse en l'nea! es decir en el mismo circuito% .ltera 8lasLogic CPLDs! anteriormente conocido como ntelNs 8l-logic! caracteri"ado por programarse dentro del sistema y provee bloques 03.* en el dispositivo% La coniguración de compuertas .1D9 23! son por celdas 03.*! respaldadas por celdas -P32* o --P32*% .l reali"ar un suministro de potencia las celdas 03.* son cargadas con un copia de la memoria --P32* o -P32*! pero es la celda 03.* la que controla la coniguración del dispositivo%
•
.@*-L
2rece el modelo .@87F66.! alto desempe$o y alta densidad de compuertas! construido con tecnolog'a 8L.0
•
.*D
2rece una amilia de CPLD con F sub9amilias llamadas *ac 7 a *ac F% Cada dispositivo *act! contiene bloques con m<iplos P.LB *atc 7 5 consiste en el modelo 55;7AP.Ls! *atc H y 4 consiste en el modelo H4;7AP.Ls y el *atc F orece modelos parecidos a los anteriores pero con mayor desempe$o en velocidad% @odos los *atc están basados en tecnolog'a --P32*% -l rango de capacidad lógicas están cercas de 5666 a F666 compuertas%
•
CP3-00 0-*C21DUC@23
0on similares a los dispositivos .*D y Lattice en mucas manerasB el Cypress CPLD! llamado 8L.0
•
L.@@C- 0-*C21DUC@23
Lattice orece un completo rango de CPLDB con dos l'neas de productos principales, Lattice pL0 que consiste en tres amilias de --P32* de CPLDB y el ispL0 que son los mimos dispositivos pL0! con la dierencia de los ispL0 son programables en el sistema% Los rangos de capacidades lógicas están cercas de 7566 a 4666 compuertas y el retardo de pin a pin es de 76 ns% -l Lattice de la serie H666 representa su desarrollo mas grande con F666 compuertas y un retardo de 76 a 7F ns%
•
L1
2recen el modelo C666 y el CEF66B ay dos amilias principales en el C666, la serie 566 y H66! el 566 es un dispositivo moderadamente peque$o con A66 a 7F66 compuertasB y con un retardo de pin a pin de 5F ns% -l H66 orece H666 compuertas y lo otro que dierencia al 566 es que el H66 incluye dos compuertas 23 en cada macroceldas% 8inalmente el CEF66 orece la programación dentro del circuito! con una capacidad de A566 compuertas y un retardo de F ns%