Buscar

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 
CAPÍTULO 13 
DISPOSITIVOS LÓGICOS PROGRAMÁVEIS 
Dispositivos Lógicos Programáveis – DLP (Programmable Logic Devices – PLD) 
são circuitos integrados que podem ser configurados para implementar circuitos digitais, 
capazes de abranger desde funções lógicas básicas até sistemas complexos como 
processadores e controladores, e recentemente até processadores de múltiplos núcleos. 
O uso de DLP permite a implementação de sistemas digitais em um único circuito 
integrado. Ao se implementar sistemas em um chip, asseguram-se várias vantagens: 
 Elevação de confiabilidade: menor número de soldas e roteamento em placas de 
circuito impresso, portanto menos susceptibilidade à falhas. 
 Redução de área: menor número de componentes implica em menor área, o que por 
sua vez permite a obtenção de produtos finais menores. 
 Proteção de propriedade intelectual: dificuldade maior em engenharia reversa. 
 Menor consumo de energia: menor número de componentes e utilização de 
componente mais avançado propricia menor consumo de energia. 
 Redução de custo: combinação dos fatores acima implica em menor custo final. 
Além dos Dispositivos Lógicos Programáveis poderem ser utilizados no produto 
final, também podem ser utilizados durante o desenvolvimento. Havendo erro detectado em 
alguma fase do projeto, basta uma nova programação. 
A desvantagem dos Dispositivos Lógicos Programáveis reside no seu custo, ainda 
não otimizado para produção em larga escala. Nesse caso, o uso de circuitos integrados 
dedicados se torna a melhor solução econômica. Ainda assim, o DLP pode ser usado 
durante o desenvolvimento do produto. 
 
 
 
 
Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 
13.1 ARRANJOS LÓGICOS PROGRAMÁVEIS 
Funções lógicas podem ser implementadas com portas lógicas básicas, com 
multiplexadores e também com memórias ROM. Considere novamente a memória ROM da 
Figura 14.9, reapresentada agora como Figura 13.1. 
A saída 00 do decodificador pode ser vista como termo 
01 AA . Da mesma forma, a 
saída 01 corresponde ao termo 
01AA , a saída 10 equivale ao termo 01 AA e finalmente a saída 
11 corresponde ao termo 
01AA . Em outras palavras, cada saída do decodificador corresponde 
à um mintermo. Desta forma, a saída D3 é dada por 0101013 AAAAAAD  , que pode ser 
simplificado em 013 AAD  . 
Isto é possível, pois se 
01 AA ou 01AA ou 01 AA forem 1, a saída será 1. Observa-se 
então que os diodos perfazem uma função OU. 
Seguindo o mesmo raciocínio, tem-se 001012 AAAAAD  , 0101011 AAAAAAD  
e 010101010 AAAAAAAAD  . 
 
Figura 13.1 – Implementação de funções usando memória ROM 4x4. 
Desta forma, para implementar uma função com 8 variáveis, necessita-se de um 
decodificador de 8 entradas. O número de saídas da memória corresponde ao número de 
funções que podem ser implementadas. 
 
 
 
Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 
13.1.1 Arranjo Lógico Programável – PLA 
A implementação de função por meio de memória ROM não é otimizada pois cada 
linha de saída do decodificador corresponde à um mintermo. Isso pode se tornar complexo 
para memórias maiores. Como exemplo, uma memória com 10 linhas de endereço apresenta 
210 = 1024 mintermos. 
Uma solução mais adequada seria combinar esses mintermos, de acordo com a 
função a ser implementada. A Figura 13.2 apresenta essa solução, implementando as 
mesmas funções da Figura 13.1. Essa estrutura recebe o nome de Arranjo Lógico 
Programável – PLA (Programmable Logic Array). 
 
Figura 13.2 – Implementação de funções usando arranjos E e OU. 
Assim, a função 010101013 AAAAAAAAF  requer 0A e 1A , onde 0A é dado pela 
primeira linha horizontal do circuito e 
1A é dada pela segunda linha horizontal do circuito. 
Sendo 00 A , então 10 A , a primeira linha horizontal do circuito permanece em nível alto 
através do resistor ligado em Vcc. Se ocorresse 10 A , então 00 A , e a linha horizontal 
tornaria 0, pois o diodo laranja ligado a ela conduziria. 
Seguindo o mesmo princípio, obtém-se 
1A , 0A , e 1A na segunda, terceira e quarta 
linhas horizontais, respectivamente. 
Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 
A quinta linha horizontal é dada por 
01AA , obtida pelos diodos ligados em 1A e 0A . 
Isso implica que somente 01 A ( 11 A ) e 10 A mantém a linha em nível alto. Isso implica 
que houve uma operação E entre 
1A e 0A . Da mesma forma há uma operação E entre 0A e 
1A na última linha horizontal. Houve dessa forma o estabelecimento de um arranjo E. 
Assim, dispondo de entre 
0A , 0A , 1A , 1A , 01AA e 01 AA , podem-se implementar 
013 AAF  , 02 AF  , 01011 AAAAF  e 010 AAF  através do arranjo OU. 
Com o conceito de arranjos E e OU, o circuito equivalente é dado pela Figura 13.3. 
A1 A0
F3 F2 F1 F0
A0
A1
A0
A1
A1A0
A1A0
Arranjo
OU
Arranjo
E
 
Figura 13.3 – Equivalência de arranjos E e OU em uma PLA. 
As Figura 13.1 e Figura 13.2 utilizam diodos para implementar as conexões. 
Entretanto, como visto no capítulo anterior, esses diodos podem ser substituídos por 
conexões com transistores bipolares ou transistores MOS. As estruturas podem ser 
igualmente implementadas por PROM e EPROM. 
A Figura 13.4 apresenta a representação simplificada da estrutura da Figura 13.2, em 
que os pontos representam as conexões. Isto facilita a visualização das funções 
implementadas. 
Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 
 
Figura 13.4 – Representação simplificada da estrutura da Figura 13.2. 
13.1.2 Arranjo Programável Lógico – PAL 
Na estrutura da PLA existem dois arranjos que podem ser programados: E e OU. 
Essa flexibilidade na verdade acaba sendo inconveniente por não ser prática. Em 1978 a 
empresa Monolithic Memories lançou o Arranjo Programável Lógico – PAL 
(Programmable Array Logic). Na PAL, o arranjo OU é fixo e os fusíveis são empregados no 
arranjo E, como na Figura 13.5. 
 
Figura 13.5 – Estrutura básica de uma PAL. 
Desta forma o usuário faz a programação somente do arranjo E. Como exemplo, a 
função BABABAY  pode ser implementada mantendo-se intactos os fusíveis F1F2 
(para gerar BA ) e F7F8 (para gerar BA ), e queimam-se os fusíveis F3F4F5F6. 
Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 
A Figura 13.6 apresenta uma representação simplificada da PAL da Figura 13.5, com 
a implementação da função BABABAY  . Os X vermelhos representam os fusíveis 
que são mantidos intactos. Assim, na porta E superior são feitas as conexões gerar BA , e na 
porta E inferior é gerado BA . 
 
Figura 13.6 – Representação simplificada de uma PAL. 
As PAL naturalmente têm uma quantidade maior de entradas e saídas, como 
exemplificado pela Figura 13.7 que pode implementar 4 funções de entradas. Observe que 
há uma saída realimentada, para implementação de funções mais complexas. 
 
Figura 13.7 – PAL genérica de 4 entradas e 4 funções. 
Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 
13.2 DISPOSITIVOS PROGRAMÁVEIS SEQUENCIAIS 
13.2.1 Arranjo Lógico Genérico – GAL 
Uma variação da PAL, chamada Arranjo Lógico Genérico – GAL (Generic Array 
Logic) foi criada pela Lattice Semiconductor e é diferente da PLA por usar EPROM no 
lugar de PROM, o que lhe permite a capacidade de reprogramação. 
A GAL também incorpora célula de saída programável, chamada de Macrocélula 
Lógica de Saída – OLMC (Output Logic Macro Cell) que permite a implementação de 
várias configurações de saída, como mostrado pelo quadro vermelho da Figura 13.8. 
 
Figura 13.8 – Macrocélula lógica de saída de uma GAL. 
Essa macrocélula incorpora um flip-flop, permitindo assim a obtenção de registro. 
Adicionalmente o pino E/S pode funcionar como entrada ou saída. Através das linhas de 
programação S1 e S0 assim como através da funções implementadas podem-se obter várias 
funções e vários modos de operação para a célula. 
13.2.2 Dispositivos Lógicos ProgramáveisComplexos - CPLD 
Dispositivos Lógicos Programáveis Complexos – CPLD (Complex Programmable 
Logic Devices) são implementados a partir de estruturas similares a GAL em um único 
circuito integrado, juntamente com uma matriz de interconexões programáveis, e blocos de 
controle de entrada e saída. Cada GAL passa a se chamar Bloco Lógico ou Bloco Funcional. 
A Figura 13.9 apresenta a estrutura típica de um CPLD. Como se pode observar pela 
figura, a matriz de conexões programável é capaz de interconectar a entrada ou saída de 
qualquer Bloco Lógico na entrada de qualquer outro Bloco Lógico. 
Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 
Bloco
Lógico
Bloco
Lógico
Bloco
Lógico
Bloco
Lógico
Matriz de
Interconexões
Programáveis
Bloco
Lógico
Bloco
Lógico
Bloco
Lógico
Bloco
Lógico
Entrada/
Saída
Entrada/
Saída
 
Figura 13.9 – Arquitetura típica de um CPLD. 
Um exemplo de CPLD é a família Altera MAX 7000, com 2500 portas lógicas e 
com a programação feita através de E2PROM. Outros exemplos são famílias CoolRunner-II 
e XC9500XL da Xilinx. Cada fabricante, ou modelo, tem suas características próprias, mas 
a estrutura é basicamente a mesma. As variações predominantes ocorrem nos tipos de flip-
flops (JK, T, D e RS) e nos arranjos lógicos para a implementação das funções. 
A Figura 13.10 apresenta a estrutura de uma macrocélula ou bloco lógico de uma 
CPLD. Pode-se observar que apesar de mais complexa que a estrutura de uma GAL, ainda 
preserva o mesmo princípio. Com base no roteamento dos multiplexadores, podem-se 
implementar várias funções e mesmo interconectar mais de um bloco lógico para perfazer 
uma função. 
 
Figura 13.10 – Estrutura de um Bloco Lógico de um CPLD. 
Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 
Ainda com relação a Figura 13.10, pode-se observar que é possível a utilização de 
um set/reset global ou gerado a partir das entradas lógicas. O mesmo vale para o sinal de 
clock. 
13.2.3 Arranjo de Portas Programável em Campo – FPGA 
O Arranjo de Portas Programável em Campo – FPGA (Field Programmable Gate 
Array) foi lançado em 1985 pela empresa Xilinxm com a família XC2000. Logo em seguida 
surgiram as famílias XC3000 e XC4000, que deram caminho para as famílias Spartan e 
Virtex. Outros fabricantes também lançaram seus produtos, mas o conceito é basicamente o 
mesmo entre todos. 
A Figura 13.11 apresenta a estrutura típica de uma FPGA. As conexões com os 
Blocos de Entrada/Saída foram omitidos por simplicidade. Podem-se observar os Blocos 
Lógicos e os Blocos de Entrada/Saída, que são programáveis, similares a um CPLD. 
Entretanto, a grande diferença está na presença da Matriz de Chaveamento, inexistente no 
CPLD, e que também é programável. 
Bloco
Lógico
Bloco
Lógico
Matrix de 
Chaveamento
Matrix de 
Chaveamento
Bloco
Lógico
Bloco
Lógico
Matrix de 
Chaveamento
Matrix de 
Chaveamento
Matrix de 
Chaveamento
Matrix de 
Chaveamento
Matrix de 
Chaveamento
Matrix de 
Chaveamento
Matrix de 
Chaveamento
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
Bloco
E/S
 
Figura 13.11 – Estrutura típica de uma FPGA. 
Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 
A Figura 13.12 ilustra o posicionamento da Matriz de Chaveamento na estrutura da 
FPGA. Esse bloco oferece a grande vantagem e flexibilidade da FPGA, pois permite o 
roteamento dos sinais em qualquer direção, como representado pela Figura 13.13. As chaves 
são implementadas por meio de transistores. Além dos sinais que transitam pela Matriz de 
Chaveamento há também as linhas verticais e horizontais de sinais diretos. Essas linhas 
servem para conduzir sinais rápidos, sinais globais ou sinais que não precisam ser roteados. 
Bloco
Lógico
Bloco
Lógico
Bloco
Lógico
Bloco
Lógico
Matrix de 
Chaveamento
 
Figura 13.12 – Posicionamento da Matriz de Chaveamento. 
 
Figura 13.13 – Chaves da Matriz de Chaveamento. 
A possibilidade de programar o roteamento dos sinais dentro da Matriz de 
Chaveamento permite a condução de sinais dentro da FPGA de forma mais eficiente e bem 
mais versátil do que a Matriz de Interconexões Programáveis do CPLD (Figura 13.9). 
A Figura 13.14 ilustra a estrutura interna de um Bloco Lógico da família Xilinx 
XC4000. Como se pode observar, há 16 multiplexadores e três tabelas de valores. 
As tabelas de valores permitem a implementação de qualquer função lógica, sendo 
duas tabelas de 4 entradas e uma tabela de 3 entradas. A função lógica é obtida através de do 
armazenamento da tabela verdade em uma memória. Os multiplexadores executam o 
roteamento interno dos dados e assim configuram o Bloco Lógico. 
Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 
G1 FF
D/T S
R
Q
M
U
X
Tabela 
de 
Valores
Tabela 
de 
Valores
Tabela 
de 
Valores
M
U
X
M
U
X
M
U
X
M
U
X
M
U
X
M
U
X
M
U
X
Controle
SR
M
U
X
Controle
SR
M
U
X
MUXMUX MUXMUX
EC
FF
D/T S
R
Q
M
U
X
EC
M
U
X
1
1
G2
G3
G4
F1
F2
F3
F4
K
X
XQ
Y
YQ
C1
C2
C3
C4
 
Figura 13.14 – Bloco Lógico de uma FPGA da família Xilinx XC4000. 
Os multiplexadores e as tabelas de valores, através de suas programações, 
determinam as operações e as funções de cada bloco lógico. A matriz de chaveamento por 
sua vez faz as interconexões destes blocos. As configurações da matriz de chaveamento, dos 
multiplexadores e das tabelas de valores ficam armazenadas em uma memória. Tipicamente 
uma memória RAM. Assim, toda vez que a FPGA for energizada, sua memória deve ser 
carregada. 
A solução típica é carregar a memória da FPGA através de uma memória E2PROM 
ou Flash, ou de um periférico, toda vez que o sistema for energizado. O fato da FPGA 
perder sua programação pode ser visto como vantagem, pois isso deixa a FPGA pronta para 
ser reprogramada. Por outro lado também é visto como uma desvantagem, pois precisa ser 
recarregada. 
Adicionalmente, os dados armazenados na memória externa podem ser facilmente 
copiados por terceiros. Uma possível solução é o uso de criptografia (Altera e Xilinx 
oferecem a possibilidade de criptografia AES de 256 bits). Outra possibilidade é armazenar 
a programação da FPGA em uma memória Flash interna (Microsemi ProAsic 3 e Lattice 
XP2). Alguns fabricantes (MicroSemi and Actel) oferecem também a possibilidade de 
utilizar uma memória PROM interna. Finalmente, existem também as opções de FPGA com 
memória Flash no lugar da memória RAM. 
Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 
Algumas FPGA já incorporam a capacidade de serem reprogramadas “ao vivo”, isto 
é, sem a perda de energia. Isto permite o desenvolvimento de computação reconfigurável ou 
sistemas reconfiguráveis, em que se adequam às atividades a serem executadas 
momentaneamente. 
Em 2010 a Xilinx introduziu o conceito de Sistema Programável em um Chip 
(Programmable System on a Chip) através da família Zynq 7000. Há um microprocessador 
ARM dual-core de 32 bits, memória e interface de entrada/saída. Ao incorporar um 
processador, além do processamento em hardware, passa-se também a ter o processamento 
por software, aumentando assim as aplicações de FPGA. Essa integração de componentes 
permite implementar todo o sistema em um único chip, permitindo assim redução na 
dissipação de potência, redução de volume, elevação da confiabilidade e consequente 
redução de custos. 
A família Altera Arria V também tem um processador dual-core ARM Cortex-A9 e a 
família Actel SmartFusion incorpora um processador ARM Cortex-M3, além de periféricos 
analógicos como conversores AD e DA. 
Uma forma alternativa de se utilizar um processador em FPGA é através da sua 
implementação através da estrutura da FPGA, como Nios II, MicroBlaze e Mico32. Nesse 
caso o processador é feito utilizando a estrutura da FPGA. 
Da mesma forma, há FPGA com memória RAM, porém em outros, a memóriaé 
obtida pela utilização dos registradores dos blocos lógicos. 
Além de conversores AD e DA, alguns fabricantes já oferecem blocos analógicos 
programáveis, e mesmo sistemas analógicos completos. 
Em função do elevado número de programações em uma FPGA, torna-se essencial o 
uso de ferramentas de software para fazer a seleção das conexões da matriz de chaveamento, 
dos multiplexadores e dos blocos de entrada e saída. Essas ferramentas cuidam da 
determinação de quais conexões serão efetivadas para se implementar as funções/operações 
determinadas pelo projetista. Assim, o projetista se preocupa com seu projeto e não como 
ele é implementado no FPGA. 
Ocasionalmente, o projetista pode usar diretivas da ferramenta de programação para 
otimizar determinados parâmetros do projeto, ou para atingir condições limitantes do 
circuito, como por exemplo, velocidade de operação. 
Notas de Aula – ELTD01 Prof. Tales C Pimenta, PhD 
13.3 DISPOSITIVOS LÓGICOS PROGRAMÁVEIS EM VERILOG 
Memórias utilizando Verilog. 
 
13.4 EXERCÍCIOS 
1. Utilizando uma ROM, como na Figura 13.1, implemente as seguinte funções: 
a. 01010 AAAAD  
b. 01011 AAAAD  
c. 012 AAD  
d. 013 AAD  
2. Implemente as mesmas funções do exercício anterior, porém usando uma PLA, 
como na Figura 13.2 ou Figura 13.4. 
3. Implemente as funções do primeiro exercício, porém usando uma PAL, como na 
Figura 13.7. 
4. Utilizando a PAL da Figura 13.7, implemente as seguintes funções: 
a. BABAX  
b. ABBAY  
c. ABCDCBDCAZ  
d. CBAABDCBAW  
5. Utilizando a PAL da Figura 13.7, implemente a função CDBCBAABDCBAF  . 
6. Utilizando a GAL da Figura 13.8, implemente BABAX  . 
7. Utilizando a GAL da Figura 13.8, implemente um flip-flop T.

Continue navegando