CPLD – Complex Programmable Logic Device

Square

Introdução

Antes do desenvolvimento da lógica programável como é conhecida atualmente, as funcionalidades dos circuitos integrados eram pré definidas pelo desenvolvedor. Para se criar uma lógica complexa, era necessário conectar dezenas de chips em uma placa, o que gerava uma performance reduzida e uma orgAntes do desenvolvimento da lógica programável como é conhecida atualmente, as funcionalidades dos circuitos integrados eram pré definidas pelo desenvolvedor. Para se criar uma lógica complexa, era necessário conectar dezenas de chips em uma placa, o que gerava uma performance reduzida e uma organização complexa da mesma. A partir disso, surgem os primeiros dispositivos programáveis, de forma a facilitar o processo de construção de lógicas complexas, os PROM (Programmable Read-Only Memory). Os PROM podiam ser programados apenas uma vez, pois os caminhos não utilizados tinham seus fusíveis queimados. Com a evolução da tecnologia, surgiram os EPROM (Erasable Programmable Read-Only Memory) e os EEPROM (Electrically Erasable Programmable Read-Only Memory), que permitiam que a programação fosse apagada quantas vezes necessário, o passo inicial para o surgimento dos PLA (Programmable Logic Array) , PAL (Programmable Array Logic) e, por fim, o CPLD (Complex Programmable Logic Device), geralmente baseados em tecnologia EEPROM.

Um Dispositivo Lógico Complexo Programável (CPLD) é a combinação de uma matriz de portas lógicas “AND” e “OR” totalmente programáveis e vários blocos lógicos. Cada bloco contém macrocélulas, que são blocos funcionais capazes de executar lógica combinatória ou sequencial. Todas as macrocélulas, dependendo da utilização, podem ou não ser conectadas umas com as outras. (XILINX, 2017).a bloco contém macrocélulas, que são blocos funcionais capazes de executar lógica combinatória ou sequencial. Todas as macrocélulas, dependendo da utilização, podem ou não ser conectadas umas com as outras. (XILINX, 2017).

O CPLD é composto por vários blocos funcionais, PLDs (Programmable Logic Device), cada um contém macrocélulas e, ou PLA ou PAL, aos quais “inputs” e “outputs” estão conectados por uma matriz de interconexão global. Um CPLD tem dois níveis de programação, cada bloco individual do dispositivo pode ser programado, e as interconexões entre eles também podem ser programadas. Em alto nível, tanto CPLDs e FPGAs (Field Programmable Gate Arrays) têm a mesma atuação: lógica reconfigurável.

Arquitetura

Um CPLD, Figura 1, é composto de uma série de blocos funcionais (FB) programáveis, interligados por uma matriz de interconexão global. A matriz é reconfigurável, portanto é possível mudar as conexões entre tais blocos funcionais para executar uma determinada lógica. Existem os blocos de I/O (Entrada e Saída), que permitem que o CPLD seja conectado ao mundo externo. Veja a representação abaixo:

Figura 1. Arquitetura CPLD
Fonte: fpgacentral.com, 2008

Os blocos funcionais dos CPLDs também conhecidos como LAB (Logic Array Block), com estrutura parecida ao dos SPLDs (Simple Programmable Logic Block), têm uma matriz de portas lógicas “AND” programáveis e “OR” estáveis (seguindo o modelo dos PALs), representada na figura 2, o que deixa o dispositivo mais simples de ser fabricado, aumenta a performance e diminui o tamanho do mesmo.

Figura 2. Exemplo de um PAL com “ AND logic array ” programável
Fonte: Zhang Xi, 2008.

A menor granularidade do CPLD, juntamente com sua estrutura de interconexão contínua (Figura 3), facilita sua programação, possibilita melhor desempenho do sistema (Propagation Delay fixo) e permite melhor utilização das células lógicas para certas aplicações. A estrutura contínua permite ainda que pequenas modificações na lógica sejam feitas sem degradação no desempenho.

Figura 3. Estrutura de interconexão do CPLD e FPGA
Fonte: Departamento de Engenharia Elétrica e de Computação, 2014

A memória do CPLD é não-volátil, ou seja, os dados não se apagam ao ser desligado, o que gera vantagem em relação à outros dispositivos de lógica programáveis baseados em RAM, que necessitam ser reconfigurados a cada inicialização.

Aplicações e Famílias

CPLDs são mais rápidos em tempo de entrada para saída que os FPGAs porque um bloco lógico consegue armazenar uma equação maior, sendo então melhores para decodificação de microprocessadores que os FPGAs por exemplo.

Dispositivos Lógicos Complexos Programáveis são muito utilizados quando se deseja gastar menos, operar à bateria, economizar no tamanho e utilizar de uma grande quantidade de portas lógicas “AND” e “OR”, pois os CPLDs não necessitam de muitos registradores, são pequenos e exigem pouca eletricidade.

CPLDs podem realizar lógicas complexas, como as de um controlador de gráficos, controlador LAN e controle de cache. Também podem ser utilizados para designs digitais que executam as funções de carregamento de inicialização e para aplicações básicas como decodificação de endereço.

CPLDs estão disponíveis em vários tipos de pacotes e famílias. Eles também se diferem em termos de voltagem, corrente operante, corrente de espera e poder de dissipação. Ademais, eles são obtidos com diferentes tipos de memória e vários tipos de suporte de memória, que consistem em ROM, RAM e dualport RAM. Também se incluem o CAM (Content Addressable Memory) assim como a memória FIFO (first in, first out) e LIFO (last in, last out).

Algumas famílias do CPLD:
● Altera MAX 7000 e MAX 9000
● Atmel ATF e ATV
● Xilinx XC9500 e Coolrunner II (representados nas figuras 4 e 5)
● Lattice ispLSI
● Lattice (Vantis) MACH

Altera e Xilinx são os maiores e mais conhecidos fabricantes de CPLDs.

Figura 4. CoolRunner-II CPLD Starter Board
Fonte: Xilinx, 2017.

Para a programação dos CPLDs, geralmente são utilizadas as linguagens Verilog ou VHDL, que são específicas para a programação deste tipo de hardware, pois servem para descrever o funcionamento dos mesmos de forma fácil, e o sintetizador (software) se encarrega de fazer as transformações e interconexões necessárias para a implementação da lógica no dispositivo. Outro fator importante é que a maioria dos comandos são executados em paralelo, ao contrário de códigos comuns de computador, que são executados de forma procedural.

Especificações

CPLDs são dispositivos de baixo custo, baixo consumo para suas aplicações. Abaixo segue um gráfico de comparação de consumo de alguns modelos de CPLD presentes no mercado:

Figura 6. Consumo de energia CPLD Altera, ispMACH e Xilinx
Fonte: Altera, 2017

Estes dispositivos são desenvolvidos com foco em alta performance e baixo custo, com preços unitários por chip que podem variar de US$0,90 a US$50,00 (PCB não incluso), dependendo da complexidade da lógica de implementação no hardware, podendo ser maior, de acordo com a necessidade. CPLDs possuem clocks entre 150Mhz e 300Mhz e podem variar de 32 até mais de 2000 macrocélulas.

Diferenças entre FPGA e CPLD

CPLDs têm um tempo de resposta melhor, por ser composto de alguns poucos grande blocos lógicos, o que lhe dá menos flexibilidade. O “ delay ” de entrada e saída do CPLD é previsível, enquanto nos FPGAs é difícil de prever tais valores, dependendo da rota utilizada dentro do hardware.

CPLDs contém menor quantidade de blocos lógicos, até algumas centenas, porém maiores, enquanto os FPGAs podem possuir até 1.000.000 blocos lógicos menores, o que permite que os FPGAs construam lógicas mais complexas, que não sejam críticas em relação à tempo.

FPGAs são baseados em RAM, então precisam ser configurados a cada vez que são iniciados, enquanto os CPLDs são baseados em tecnologia EEPROM, ou seja, possuem memória não-volátil, o que torna os CPLDs mais rápidos. Outro fator importante é a segurança nos CPLDs, visto que as configurações não necessitam de um “ download ” inicial, os CPLDs possuem maior segurança. Em muitos casos CPLDs são utilizados para fazer a inicialização de dispositivos FPGA, por terem suas memórias não-voláteis, garantindo mais segurança e agilidade no processo de configuração das FPGAs.

CPLDs possuem menos memória que os FPGAs, o que limita a usabilidade dos CPLDs à aplicações pequenas, que são críticas em tempo, porém não necessitam de muita memória para armazenar informações. FPGAs comerciais podem conter até 5 megabytes de memória, enquanto os CPLDs possuem, em sua maioria, um valor fixo de 8 kilobytes.

CPLDs são baseados em lógica simples combinacional de soma de produtos, com portas “AND” e “OR”, enquanto FPGAs são baseados em “lookuptables”.

Referências

Xilinx. What is a CPLD?. Disponível em < https://www.xilinx.com/cpld/ >. Acesso em 03/06/2017.
FPGACentral. Programmable Logic History . Disponível em < http://www.fpgacentral.com/docs/fpga-tutorial/history-programmable-logic >. Acesso em 03/06/2017.
FPGACentral. CPLD – Complex Programmable Logic Devices . Disponível em < http://www.fpgacentral.com/pld-types/cpld-complex-programmable-logic-devices>. Acesso em 03/06/2017.
Tyson, Jeff. How ROM Works. Disponível em < http://computer.howstuffworks.com/rom4.htm >. Acesso em 03/06/2017.
XTronics. How EPROMS Work. Disponível em < https://xtronics.com/wiki/How_EPROMS_Work.html >. Acesso em 03/06/2017.
Latebit. How an EEPROM is Programmed. Disponível em < http://lateblt.tripod.com/eeprom.htm >. Acesso em 03/06/2017.
Brown, Stephen; Rose, Jonathan. Architecture of FPGAs and CPLDs: A Tutorial. Disponível em < http://malun1.mala.bc.ca:8080/~pwalsh/teaching/355/Toronto_tutorial.pdf >. Acesso em 03/06/2017.
Zhang, Xi. Introduction to Digital Systems Design. Disponível em < http://www.ece.tamu.edu/~xizhang/ECEN248/slides_Chapter3_6.pdf >. Acesso em 03/06/2017.
Dr. Murphy, Narasimha. CPLD & FPGA Architectures and Applications. Disponível em < https://www.slideshare.net/yayavaram/cpld-fpga-cpld-fpga-architectures-applications > . Acesso em 03/06/2017.
Atmel. Atmel CPLD Family. Disponível em < http://www.atmel.com/products/programmable-logic/spld-cpld/default.aspx?tab=overview >. Acesso em 03/06/2017.
Altera. Altera CPLD Family. Disponível em < https://www.altera.com/products/cpld/max-series.html >. Acesso em 03/06/2017.
Xilinx. XC9500 In-System Programmable CPLD Family. Disponível em < https://www.yumpu.com/en/document/view/31220406/xilinx-xc9500-in-system-programmable-cpld-family-datasheet-v50 >. Acesso em 03/06/2017.
Xilinx. CoolRunner-II CPLD. Disponível em< https://www.xilinx.com/support/documentation/data_sheets/ds090.pdf >. Acessoem 03/06/2017.
IDCOnline. Differences Between FPGA and CPLD. Disponível em< http://www.idc-online.com/technical_references/pdfs/electronic_engineering/Difference_between_FPGA_and_CPLD.pdf >. Acesso em 03/06/2017.
Digi-Key eletronics. Altera 5M40ZE64C5N Pricing. Disponível em< https://www.digikey.com/product-detail/en/altera/5M40ZE64C5N/544-2717-ND/2499440 > Acesso em 03/06/2017.
BuyAltera. Altera CPLD Chips Pricing. Disponível em< https://www.buyaltera.com/Search?site=ALTERA&lang=EN&keywords=EPM1270G > Acesso em 03/06/2017.
Avnet. CPLD – Avnet. Disponível em< https://www.buyaltera.com/Search?site=ALTERA&lang=EN&keywords=EPM1270G > Acesso em 03/06/2017.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *