Você está na página 1de 21

Faculdade de Engenharia de Ilha Solteira - Departamento de Engenharia Elétrica

Circuitos Digitais II - Profa. Suely C. A. Mantovani - 1o.sem/2012

Dispositivos Logicos Programáveis-(PLDs-Programmable Logic


Devices)

1-Introdução

Existe uma grande variedade de CIs (por ex. família TTL 74XX) com diversas
funções lógicas e arranjos de circuitos lógicos em chips de diversos fabricantes. Porém,
há algumas desvantagens em empregar estes CIs em determinados circuitos:

 Necessidade de empregar centenas ou milhares de CIs no circuito ou sistema


 Demanda por maior espaço nas placas de circuitos impressos
 Maior tempo para montar, interligar e testar os CIs
 Estoque de CIs diferentes e de fabricantes diversos
 Maior consumo de potência
 Menor confiabilidade
 Dificuldade na Manutenção
 Placa maiores, ocupa mais espaço e equipamentos maiores.

Para reduzir o número de CIs a ser usado em um projeto, é preciso alocar mais
funções lógicas dentro do chip. Isto é feito com aplicações das tecnologias LSI (Large
Scale Integration) e VLSI(Very Large Scale Integration) para funções padrões da
microeletrônica. Porém, há situações de projeto que não existem CIs LSI e VLSI que
atendam os requisitos de projeto. A solução apresentada pelas indústrias de dispositivos
foram os PLDs.

Um PLD- Programmable Logic Device -Dispositivo Lógico Programável, é um


circuito integrado com um grande número de portas lógicas, flip-flops, e registradores
que são interconectados no chip.

Várias conexões de um PLD são elos fusíveis, semelhantes aos encontrados em


PROMs, que podem ser queimados. Mostra-se na figura 1 a estrutura básica usada
pelos PLDs: um arranjo de portas AND e um arranjo de portas OR, cujas entradas
podem ser interconectadas para produzir funções nas saídas, das variáveis de entrada.
O arranjo de portas AND de entrada seria o decodificador e o arranjo de portas
OR de saída, o codificador. Os arranjos AND de entrada podem ser conectados às
variáveis de entrada para formar os termos produtos necessários. As funções de saída do
circuito são obtidas interligando os termos produtos de saída do arranjo AND às
entradas das portas do arranjo OR.
Fig.1-Estrutura básica para um PLD

Para melhorar a representação dos dispositivos PLDs, adota-se uma simbologia


simplificada onde as várias entradas de uma porta são representadas por uma única linha
e as conexões das variáveis de entrada às portas são indicadas por um ponto ou um X:

 um X indica um fusível intacto;


 um ponto representa uma conexão fixa (não pode ser programada).
A falta de quaisquer desses sinais no cruzamento de duas linhas indica que
não há conexão, conforme figura 2
Fig.2-Simbologia simplificada

Fig.3-

Os PLDs são chamados programáveis porque a função do CI para uma


aplicação é estabelecida pela queima seletiva de alguns fusíveis, enquanto outros se
mantêm intactos (fig.3). A este processo chama-se programação porque produz o
padrão desejado de interconexões entre portas, ffs, registradores, contadores, etc.,
conforme as instruções do usuário. O processo de queima dos fusíveis pode ser feito
pelo fabricante ou pelo usuário, empregando um programador de EPROMs.

Exemplos de PLDs programados com algumas funções lógicas são mostrados na


figura 4 e 5.
Fig. 4- PLD programado

Fig.5 (a) Exemplo de funções programadas

Na figura 5 (a), um X representa um fusível intacto conectando uma linha


produto para uma entrada da porta OR. A ausência de um X (ou um ponto) para
qualquer interseção representa um fusível queimado.

Para as entradas das portas OR, fusíveis queimados (entradas desconectadas )


assume-se nível baixo e para as entradas das portas ANDs, fusíveis queimados
assume-se nível alto.

No exemplo da fig.5 : O1= AB  AB , O2 = AB , O3=0, O4=1


2-Arquiteturas dos PLDs

O conceito de PLDs tem gerado vários projetos para CIs PLDs. Nesta seção
mostra-se algumas das diferenças básicas na arquitetura.

PROMs

Mostra-se na figura 5 (b) uma arquitetura simples de uma PROM, considerada


como um tipo de PLD. Neste exemplo o arranjo (array) AND é pré-definido em fábrica
e o arranjo OR é programável. PROMs são utilizadas quando as equações precisam de
um grande número de termos produtos.

Fig.5 (b)-Arquitetura de uma PROM.

Na figura 6 mostra-se uma PROM de quatro entradas que são decodificadas pelo
arranjo AND, onde cada porta gera um dos dezesseis minternos das variáveis de
entrada. As conexões das variáveis de entrada ao arranjo AND são fixas, ou seja, não-
programáveis, enquanto que as conexões das linhas de saída dos mintermos às portas
OR são todas programáveis.
Fig.6 Arquitetura de uma PROM. -Fusíveis são queimados para programar as funções de saída.
Tabela 1 Para programar a PROM a fim de gerar a
função O3 indicada, o primeiro passo é
escrever a função como um soma padrão
de produtos, conforme mostra a tabela
verdade - tabela1.

Observe que a programação consiste em


manter intactos os fusíveis dos mintermos
cujas linhas tem 1 na tabela verdade e
queimar os fusíveis nas linhas que são 0.

PROGRAMMABLE LOGIC ARRAYS – PLAS ( ARRANJOS LÓGICOS


PROGRAMÁVEIS

Os CIs PLAs têm os arranjos AND e OR programáveis (fig.7). A possibilidade


de programar os arranjos AND e OR conferem grande flexibilidade às PLAs. Os
modelos de PLAs oferecidos pelos fabricantes podem ser programados pelo usuário,
chamados FPLA-Field Programmable Logic Array, ou seja Arranjo Lógico
Programável em Campo.

Fig.7- Arquitetura de um dispositivo PLA


O número de termos produtos disponível para cada saída da PLA é programável
pelo usuário. Portanto, os mintermos podem ser compartilhados pelas saídas do PLA.
Os dispositivos PLAs em geral, são mais lentos que os PALs ( Programmable Arrays
Logics e PROMs.

PLAs são especificados pelo número máximo de entradas (I), o número máximo de
termos produtos (P) e o número máximo de sinais de saída (O). Contudo, a
complexidade desses dispositivos reduziram o interesse na aplicação em circuitos
digitais.

PROGRAMMABLE ARRAYS LOGICS- PALS

Os dispositivos PALs têm somente os arranjos AND programáveis enquanto os


arranjos OR são fixados em fábrica. Todas as portas AND podem ser programadas para
gerar o termo produto das variáveis de entrada e seus complementos. Na figura 8a
mostra-se uma configuração típica para uma PAL com quatro entradas e quatro saídas,
onde cada porta OR tem suas entradas ligadas a quatro linhas de termos produtos,
limitando a geração de funções a no máximo quatro mintermos.
A Figura 8b mostra uma configuração típica para uma PAL programada. As
funções da saída são limitadas ao número de mintermos ligados nas entradas das portas
OR. Caso seja necessário mais mintermos para gerar uma função, não será possível
programar. Embora, sejam menos flexíveis que PLAs, as PALs são mais rápidas porque
as conexões pré-configuradas levam menos tempo para chavear que as conexões
programadas. São mais fácil de fabricar e de maior densidade lógica.
(a) (b)
Fig 8- (a) Arquitetura típica de um dispositivo PAL; (b) A mesma PAL programada.

Um exemplo de um CI PAL é o circuito integrado TIBPAL16L8-5C, da Texas


Instruments, Inc., que tem 10 entradas lógicas e 8 funções de saída. Cada porta OR tem
7 entradas fixas que são saídas de 7 portas AND, desta forma, pode gerar funções com
até 7 termos produtos.

Os PLDS em geral, apresentam duas grandes limitações que são a


impossibilidade de realizar funções multiníveis e de compartilhar produtos em
diferentes funções. Em ambos os casos, isto é devido às características fixas das
interconexões, onde é possível programar funções, mas não as interconexões entre
funções. Tentando superar estas limitações foram projetados os dispositivos
denominados CPLDs e FPGAs.
DISPOSITIVOS CPLDS -COMPLEX PLDS

Nos CPLDS uma célula programável realiza funções lógicas universais de n


variáveis, tais como multiplex, memória, conjunto AND-OR, etc. Uma rede de
interconexões seleciona as entradas das células programáveis sob o controle de
variáveis externas e as próprias saídas das células programáveis. Embora apresentem
diferenças conforme o fabricante, as características básicas são:

 Função lógica no LAB (Logic Array Block) são programáveis;


 Um LAB é composto de 16 células e 32 expansores portas ANDs;
 Células constituídas de flip-flops tendo como entrada a soma de três produtos ;
 A saída de uma célula pode ser enviada para o pino de saída ou roteadas pela
PIA (Programmable Interconect Array) para outra célula.

Os dispositivos programáveis do fabricante Altera apresentam diversas famílias


com arquitetura CPLD, por exemplo a família MAX (Multiple Array Matrix) fig.9.

Nos dispositivos CPLDs a programabilidade das interconexões é limitada. Na


verdade algumas interconexões são roteadas durante a fabricação. Contudo, esta
limitação apresenta-se como uma vantagem, pois a temporização é completamente
previsível. Por outro lado, a limitação da programabilidade é um dos aspectos de
restrição no seu uso.
Fig. 9 - Diagrama bloco para a família de dispositivos CPLD MAX7000S [Altera
Corporation]
CPLD EPM7128S da Altera- este dispositivo é encontrado na placa educacional de
desenvolvimento da Altera-placa UP2, e pertence a família MAX7000S cujo o diagrama
de blocos é mostrado na figura 9 .
Esta família possui os LABs e a PIA. Um LAB contém um conjunto de 16
macrocélulas. Cada macrocélula consiste de um circuito programável AND/OR e um
registrador programável (flip-flop). São mostradas na tabela 2 a seguir, algumas
características dos dispositivos da família MAX7000S:
Tabela2-Características para dois dispositivos da família MAX700S
Características EPM 7128S EPM7064S
Portas disponíveis 2500 1250
Macrocélulas 128 64
LABs 8 4
Número máximo de pinos 68 100
de I/O disponíveis
Total de pinos no chip 84 ...
Figura 10- Pinagem para o EPM 7128SLC84

Figura 11-Macrocélula da família MAX7000S-Altera


FIELD PROGRAMMABLE GATE ARRAY –FPGAS ( ARRANJO DE PORTAS
PROGRAMÁVEIS EM CAMPO)

Field Programmable Gate Arrays - FPGAs, é uma tecnologia introduzida pelo


fabricante Xilinx em 1984, que permite aos projetistas implementar circuitos e
arquiteturas mais complexas. São dispositivos VLSI com uma alta capacidade lógica.

Este dispositivos são os mais importantes dispositivos lógicos programáveis,


atualmente. Os dispositivos FPGAs, um pouco mais sofisticados do que os PLDs
simples, foram projetados para programação em campo, ou pelo usuário. Permitem a
implementação de portas lógicas básicas e a interconexão entre essas portas para
circuitos multiníveis. O aprimoramento desta tecnologia disponibilizou uma grande
quantidade de dispositivos que são reprogramáveis pelo usuário.

Os FPGA’s apresentam internamente circuitos multiníveis, possibilitando


projetar circuitos complexos em um único dispositivo e ao contrário dos simples PLDs,
dificultando a previsão de atrasos no processamento. São circuitos programáveis
compostos por um conjunto de células lógicas alocadas em forma de uma matriz.
Algumas arquiteturas apresentam flip-flops e/ou registradores para gerar trabalhos em
lógica seqüencial. Em geral, a funcionalidade dos blocos assim como seu roteamento é
configurável via software. Os FPGAs além de proporcionarem um ambiente de trabalho
simplificado e de baixo custo, tornam possíveis operar com um número ilimitado de
circuitos através da configuração do próprio dispositivo.
Como são reprogramáveis são aplicáveis em projeto de protótipos, economizando
tempo e custo, isto devido à agilidade e fácil processo de desenvolvimento, simulação,
teste, depuração e alteração do projeto.
Existe um conjunto de blocos de entrada/saída que pode ser configurado como
entrada, saída e bidirecional. As saídas são tri-states e os registradores podem armazenar
dados de entrada ou de saída.

Todos os blocos lógicos podem ser conectados para implementar qualquer


função lógica desejada. Cada bloco lógico está conectado a um número determinado de
matrizes de conexões programáveis, que por sua vez, estão ligadas a um número de
matrizes de chaveamento programáveis.

Programando as conexões apropriadas, cada bloco pode fornecer uma variedade


de funções lógicas combinacionais e/ou seqüenciais. As matrizes de conexões
programáveis são usadas para estabelecer ligações entre entradas e saídas dos blocos
lógicos, enquanto as matrizes de chaveamento programáveis são empregadas para
rotear os sinais entre as várias matrizes de conexões (figura 12).

Devido à variedade de arquiteturas, os dispositivos FPGAs precisam de


ferramentas de programação específicas do fabricante para a sua programação.

Resumindo: O s FPGAs possuem alta capacidade lógica, utilizam


SRAM ou Anti-fuse como chave, requerem ferramentas de software para projetos e tem
como principais fabricantes, Xilinx, Altera, Actel,QuickLogic.

Fig.12-Arquitetura interna de um FPGA

A estrutura básica de um FPGA (fig.13) pode variar conforme o fabricante, a


família ou até na mesma família pode existir variações, mas três elementos
fundamentais são mantidos:

1. CLB (Configurable Logic Block)l;


2. IOB (IN/OUT Block): Bloco de entrada/saída, localizado na periferia dos
FPGAs e responsáveis pela interface com o ambiente; conectam os blocos
lógicos para os pinos do dispositivo (fazem a conexão externa);
3. SB (Switch Box) : Caixa de conexão, responsável pela interconexão entre os
CLBs através dos canais de roteamento ou linhas de interconexão que conectam
os blocos lógicos e as células de I/O.

Observe nas figuras 14a e 14b os esquemas de blocos lógicos de um FPGA do


fabricante Xilinx. Cada célula lógica consiste de uma função universal (multiplexers,
demultiplexers ), que pode ser usada para rotear os sinais; SRAM ou look-up table,
usada para programar a tabela verdade de um circuito combinacional; portas lógicas e
dois flip-flops de saída. As interconexões são controladas pelo conteúdo da RAM e
portanto, podem ser reprogramadas. Portanto, cada célula lógica pode implementar uma
variedade de funções lógicas combinacionais e sequenciais.
Fig. 13 - Representação dos elementos básicos de um FPGA

Fig. 14- Bloco Lógico Configurável (CLB) de um FPGA do fabricante Xilinx, com 3
LUTS (tabela de busca - look-up table) que é um tipo de memória que é programada e
usada para gerar funções lógicas combinacionais de soma de produtos.
Fig. 14b- Outro Bloco Lógico Configurável (CLB) de um FPGA do fabricante Xilinx
com uma LUT.

3-Características dos PLDs

Vários dispositivos PLDs têm saídas com buffers tri-states (fig.15) comandados
por uma única linha de habilitação, requerendo apenas um pino de entrada no
dispositivo para isso.

Fig.15- PLDs com saídas tri-states

Uma característica que vários PLDs apresentam é saída com polaridade


programável que possibilita a inversão dos níveis lógicos de saída do dispositivo
(fig.16).
Fig.16- Porta EX_OR possibilita programar a polaridade através de um fusível.

Alguns dispositivos PLDs são construídos de modo que as saídas tri-states são
realimentadas para as entradas do arranjo AND, conforme observa-se na figura 17.
Neste exemplo, o PLA tem três entradas a, b e c e três saídas w, x e y, porém foi
programado como quatro entradas e somente duas saídas. Observe que o buffer da
saída y foi desconectado do sinal de controle de habilitação e ligado ao nível lógico
alto, permanecendo sempre habilitado (como entrada). A saída y está agora configurada
como a quarta entrada do PLA. Como as saídas w e x continuam a funcionar como
funções de saída, então os elos fusíveis de realimentação são queimados para assegurar
que não terão efeito nas entradas.
Fig.17- Saídas realimentadas em PLAs

Certos tipos de PLDs são equipados com registradores nas saídas e outros com
latches. Dependendo do dispositivo, os registradores (ou latches) podem ser fornecidos
em todas as saídas ou em grupo de saídas. Em geral, é possível não utilizar os
registradores de saídas através do uso de multiplexadores construídos no PLD. Este tipo
de PLD é denominado sequenciador lógico programável (fig.18).
Fig.18- PLDs equipados com registradores e MUX

4- Tecnologia de Programação

A tecnologia de programação caracteriza os PLDs em termos de


programabilidade e volatibilidade. A programabilidade de um PLD se refere à
capacidade de alteração do conteúdo funcional do dispositivo após sua primeira
programação. É medida de acordo com a tecnologia utilizada para implementar o
conjunto de chaves usadas na configuração do PLD. De acordo com esta tecnologia de
chaves, os dispositivos podem ser reprogramáveis ou não. Adicionalmente, um circuito
pode permanecer configurado ou não, conforme a propriedade de volatibilidade das
chaves. Na tabela 3 apresentam-se as tecnologias usadas para implementar as chaves.
Tabela 3- Principais tipos de chaves e tecnologia de fabricação.
Tipo de chave Reprogramáveis Voláteis Dispositivo Tecnologia
Fusível Não Não PLAs Bipolar
EPROM Sim Não FPGAs UVCMOS
EEPROM Sim Não FPGAs EECMOS
SRAM Sim Sim FPGAs CMOS
Anti-fusível Não Não FPGAs (Actel) CMOS+

Fusível –exige alta corrente elétrica na programação; pouco utilizada nos dias atuais.
Anti –Fuse- Derretimento de um material separando dois condutores .Processos
irreversíveis.
Os FPGAs podem ser encontrados em três diferentes estruturas de configuração
ou chaves programáveis:
 células RAM estáticas, SRAM;
 transistores EPROM;
 transistores EEPROM;
 antifusíveis (antifuses), chamados também PLICE (Programmable Low
Impedance Circuit Element).

A interconexão antifusível é como um metal puro interconectado, diferente da


interconexão SRAM que tem chave baseada em transistores. A estrutura do antifusível
é extremamente pequena comparada com as chaves da estrutura da SRAM,
possibilitando a redução em silício e consumo de potência. São chamados desta forma
porque quando “queimados” criam uma conexão, enquanto não são “queimados”
nenhuma corrente pode fluir entre seus terminais, assim é chamado anti- fusível, pois o
comportamento é oposto ao fusível padrão. Por ser permanente, a configuração dos
FPGAs com antifusíveis são ditos programáveis uma única vez ( não reconfiguráveis).

Os FPGAs baseados em SRAM são reprogramáveis através do uso de uma ROM


incluída no circuito que retém o arquivo de configuração através de um circuito interno
de controle, que carrega a configuração de dado automaticamente sempre que é retirada
a alimentação. Os FPGA’s mais modernos usam Flash/EEPROM/EPROM ao invés de
SRAM, evitando a necessidade de reprogramação do dispositivo, enquanto sua
configuração pode ser mudada eletricamente.
Nos últimos anos, a quantidade de portas lógicas disponíveis num FPGA tem
crescido num ritmo acelerado, possibilitando a implementação de arquiteturas cada vez
mais complexas, com isso vêm dominando o mercado de componentes. Devido a
complexidade dos blocos lógicos, ferramentas de software são necessárias para
programar estes dispositivos.

5-Programação de PLDs

Os PLDs são programados e testados utilizando equipamentos que programam


através de programas específicos desenvolvidos para esta finalidade. Usando um
microcomputador, o usuário informa ao programador, as equações lógicas que deseja
programar no PLD. O programa gera o mapa de queima dos fusíveis e os dados de
testes e envia ao programador que realiza a programação. Mostra-se na figura 19, o
fluxograma típico de programação e teste de um PLD.
Fig.19- Fluxograma típico de programação e teste de um PLD.

Bibliografia
[1] TOCCI, R.J., Sistemas Digitais, Princípios e Aplicações.10ª edição, Editora Pearson Prentice
Hall, 2007, 940p.

Você também pode gostar