CPLDs SPLDs
2.3 Dispositivos Lógicos Programáveis Elementares
Os dispositivos lógicos programáveis elementares (Simple Programmable Logic
Devices – SPLD) podem ser decompostos em quatro subcategorias: PROMs, PLAs,
PALs e GALs. Estes dispositivos possuem geralmente uma pequena capacidade lógica, baixo custo e reduzidos tempos de propagação entre pinos. A sua estrutura interna é composta por duas matrizes de portas lógicas ou elementos programáveis (Figura 2.8). Os factores que distinguem as diferentes subcategorias são o número de matrizes
programáveis, o tipo de elementos utilizados na construção de cada matriz e a sua reprogramabilidade.
Para além da sua funcionalidade básica os SPLDs podem possuir outras características, tais como saídas com registo, tri-state ou realimentadas para as entradas. No primeiro caso, pode também ser possível programar o tipo de registo (latch S-R/D ou flip-flop D/T/JK). Adicionalmente, alguns dispositivos permitem programar os pinos como entradas, saídas ou bidireccionais. Na Figura 2.8 está ilustrada a estrutura geral de um SPLD. Matriz 1 Matriz 2 ... ... ... Entradas Saídas Saídas Entradas ... ... ... Entradas Saídas SPLD
Figura 2.8 – Estrutura geral de um SPLD.
2.3.1 PROMs
O primeiro circuito integrado programável utilizado na implementação de circuitos digitais foi a memória só de leitura programável (Programmable Read Only
Memory - PROM). Apesar de serem memórias, as PROMs são também FPLDs no
sentido clássico, porque podem ser programadas pelo utilizador e usadas como tabelas de verdade de funções lógicas. No entanto, a sua programação pode ser realizada apenas uma vez. As linhas de endereço são utilizadas como entradas do circuito e as linhas de dados como saídas. A arquitectura interna de uma PROM é semelhante a um descodificador que alimenta um plano OR programável (Figura 2.9), podendo também ser vistas como uma matriz AND predefinida, seguida de uma matriz OR programável. As PROMs são particularmente úteis para implementar funções com um grande número de produtos. No entanto, como as suas entradas são completamente descodificadas e a maior parte das funções lógicas numa das suas formas mais usuais, a soma de produtos, raramente possui muitos termos, as PROMs não são eficientes para implementar circuitos lógicos sendo portanto pouco utilizadas para este fim.
Descodificador ... ... F0 F1 F2 FN 0 1 2 3 4 5 L ... I0 I1 I2 I3 I4 IM Matriz OR
Figura 2.9 – Estrutura interna de uma PROM.
2.3.2 PLAs
O primeiro dispositivo desenvolvido especificamente para implementar circuitos lógicos foi a matriz lógica programável (Programmable Logic Array – PLA), introduzida pela Philips no início dos anos 70. Uma PLA consiste em dois níveis de portas lógicas, um plano AND seguido de um plano OR, ambos programáveis (Figura 2.10). Cada saída da matriz AND pode ser utilizada para calcular o produto entre quaisquer entradas ou os seus complementos. De forma análoga, cada saída da matriz OR pode ser utilizada para calcular o soma entre quaisquer saídas da matriz AND. Esta estrutura faz com que as PLAs sejam apropriadas para implementar funções lógicas na forma de soma de produtos, sendo também bastante versáteis uma vez que tanto os termos AND como OR podem possuir muitas entradas. Numa PLA, o número de funções AND é independente do número de entradas e o número de funções OR é independente do número de entradas e do número de funções AND.
... ... 1 2 3 r xn-1 x1 x0 2 1 k ... zk-1... z1 z0 MatrizOR Matriz AND Ligação efectuada Ligação programável
Tal como referido acima, nada obriga a que uma matriz AND seja seguida de uma matriz OR. Alguns dispositivos possuem duas matrizes NAND/NOR ou uma combinação dos dois tipos.
2.3.3 PALs
As PLAs quando surgiram, tinham alguns problemas, nomeadamente o seu elevado custo de fabricação e baixo desempenho. Ambos são devidos aos dois níveis de lógica programável que eram difíceis de fabricar e introduziam atrasos de propagação significativos. Além disso, muitas aplicações não necessitam que ambas as matrizes AND e OR sejam programáveis. Para ultrapassar estes problemas, a Monolithic
Memories desenvolveu e propôs as PALs (Programmable Array Logic). Tal como ilustrado
na Figura 2.11, uma PAL possui apenas um nível de lógica programável, sendo constituída por uma matriz AND programável seguida de uma matriz OR fixa. Para compensar a perda de generalidade imposta pela matriz OR fixa, as PALs estão disponíveis em diversos formatos com um número variável de entradas e saídas e portas OR de vários tamanhos. As PLAs são mais flexíveis do que as PALs, mas as últimas são mais rápidas porque as ligações fixas possuem um menor tempo de comutação do que as programáveis. Sendo mais rápidas e baratas, as PALs são o tipo mais frequente de SPLDs. Para implementar circuitos sequenciais, as PALs possuem normalmente flip-flops ligados às saídas da matriz OR. O aparecimento das PALs afectou profundamente o projecto de sistemas digitais, tendo também servido de base a algumas das arquitecturas recentes mais sofisticadas.
... ... 1 2 3 xn-1 x1 x0 zk-1 z1 z0 Matriz AND Ligação efectuada Ligação programável 1 2 k ... ... r
Figura 2.11 – Estrutura interna de uma PAL.
2.3.4 GALs
Os dispositivos GAL são versões sofisticadas de dispositivos lógicos programáveis e electricamente apagáveis (EEPLD – Electrically Erasable Programmable
Logic Device) com uma estrutura semelhante às PALs mas com algumas características
adicionais. Os dispositivos reprogramáveis possuem algumas vantagens sobre os baseados em fusíveis e antifusíveis, tais como a possibilidade de realização de testes mais rigorosos após a sua fabricação, através de um ou mais ciclos de programação
bem como a correcção de erros ou alterações do projecto através da reprogramação do dispositivo.
Existem também dispositivos que podem ser programados sem que seja necessária a remoção do circuito em que se encontram inseridos. Isto torna-se possível devido à utilização de memória de configuração do tipo SRAM ou FLASH.