MINISTÉRIO DA EDUCAÇÃO
ESCOLA SECUNDÁRIA DE BARCELOS – 403799
Sistemas Digitais e Arquitectura de Computadores
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
2º Ano do ciclo de formação 2008/2011 Ano lectivo 2009/2010
Módulo 5
Introdução à Lógica
Programável
MINISTÉRIO DA EDUCAÇÃO
2
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
Âmbito dos Conteúdos
Vantagens da utilização da lógica programável sobre a lógica tradicional.
Classificação e estrutura interna dos principais tipos de circuitos de lógica programável.
Diferentes tipos de programar um circuito deste tipo: Através de um editor de
esquemáticos ou através de linguagens de programação: ABEL, VHDL, CPUDL ou
PALASM.
Estrutura de um programa em CPUDL (ou PALASM).
Exemplos de programação de circuitos combinatoriais simples em CPUDL, utilizando
GALs.
Programação e teste de um circuito combinatorial utilizando uma GAL.
MINISTÉRIO DA EDUCAÇÃO
3
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
1 - Introdução
A tecnologia digital vem crescendo de forma exponencial. Equipamentos e sistemas são
especialmente projectados para trabalhar em Automação Industrial. O projecto e a manutenção
desses sistemas requerem uma grande demanda de mão-de-obra especializada. Neste contexto,
uma nova abordagem é necessária, no sentido de modernizar o ensino de Electrónica Digital
nos cursos técnicos e de engenharia.
Sempre que ocorre uma grande mudança na tecnologia, há um período no qual as
instituições de ensino precisam decidir como e quando mudar a maneira como ensinam os
assuntos relacionados às mudanças tecnológicas. Alguns se lembram da mudança das válvulas
electrónicas para os transístores e a maioria recorda a substituição dos circuitos transistorizados
pelos amplificadores operacionais.
Nos últimos 20 anos, a tecnologia de sistemas digitais moveu-se na direcção da Lógica
Programável. Das tecnologias de automação industrial recentes, poucas usam circuitos digitais
de pequena e média escalas de integração na implementação de qualquer função de controlo. A
maioria dos circuitos digitais modernos está em um único dispositivo programável, FPGA
(Field Programmable Gate Array) ou CPLD (Complex Programmable Logic Devices), ou seja,
em uma matriz de portas lógicas ou em circuitos integrados totalmente dedicados.
Por outro lado, na indústria de equipamentos de Automação Industrial, no momento de
iniciar o desenvolvimento de um sistema digital, fabricantes despendem muitas horas na
definição das características, buscando reunir as demandas de usuários, superar concorrentes e
agregar novas tecnologias emergentes, como a Lógica Programável.
A proposta é incrementar no ensino da Electrónica Digital este novo conceito com o
objectivo de possibilitar que o estudante e o profissional tomem conhecimento das mudanças
que ocorrem no mundo, ou seja, novas tecnologias de projectar e implementar circuitos digitais.
As ferramentas de software, como, por exemplo, o software Quartus II da empresa
Altera, ou o WinCupl da Atemel permitem que a maioria dessas etapas entediantes de projecto
de circuitos digitais seja realizada pelo computador. A utilização de elementos de lógica
programável aumenta a eficiência do projecto e reduz o tempo de desenvolvimento.
Actualmente, a maioria dos circuitos digitais é implementada com elementos de lógica
programável. Nos últimos dez anos, a tecnologia de sistemas digitais se moveu na direcção da
lógica programável. Poucas das novas tecnologias de sistemas digitais industriais usam
circuitos digitais discretos na implementação de qualquer função de controlo digital. A maioria
dos circuitos digitais modernos está em um único dispositivo de lógica programável FPGA
(Field Programmable Gate Array) ou CPLD (Complex Programmable Logic Devices).
Para aprender a criar esses "sistemas digitais em chip", é preciso ter algum conhecimento
dos elementos de electrónica digital tradicional.
MINISTÉRIO DA EDUCAÇÃO
4
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
2 - Ambiente de projecto com circuitos integrados tradicionais
Há alguns anos os engenheiros electrónicos podiam utilizar basicamente dois tipos para
implementar placas de circuito impresso, quando projectavam circuitos digitais: circuitos
integrados discretos, tais como a família TTL/CMOS (74/54) ou circuitos integrados ASICs
(Application Specific Integrated Circuits).
Os circuitos integrados discretos possuíam uma função específica pre-definida de fábrica,
como, por exemplo, as funções lógicas básicas AND, OR, NOT, ou blocos lógicos com funções
de somadores, multiplexadores, registradores de deslocamentos, flip-flops, contadores etc.
Esses tipos de circuito integrado foram os primeiros dispositivos electrónicos a possibilitarem a
produção de projectos de circuitos lógicos e sistemas digitais na história. Esses circuitos
caracterizavam-se por possuírem uma lógica interna fixa, predefinida de fábrica.
Os circuitos integrados de aplicações específicas (ASICs) eram subdivididos em quatro
diferentes famílias: PLD (Dispositivo Lógico Programável), matrizes de portas lógicas (Gate
Arrays), circuito integrado baseado em célula lógica (Cell Based) e circuito integrado
totalmente dedicado (Full-Custom IC). Eles tinham uma função lógica interna flexível,
determinada por software pelo próprio utilizador.
A figura 1 apresenta um diagrama com uma classificação geral das tecnologias de
circuitos integrados disponíveis.
Fig. 1 – Classificação dos circuitos integrados
MINISTÉRIO DA EDUCAÇÃO
5
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
Os dispositivos lógicos programáveis podem ser classificados em três categorias:
PAL/GAL: com funções simples, baixa capacidade e poucos pinos de interconexão.
FPGA: com funções complexas, alta densidade e muitos pinos de interconexão.
CPLD: com funções complexas, média densidade e muitos pinos de interconexão.
Os PLDs têm suas próprias arquitecturas e memórias internas com tecnologias diferentes.
Dependendo da aplicação, pode-se escolher a tecnologia mais adequada. Por exemplo, um
dispositivo PAL é um PLD simples, com 100 a 1.000 portas lógicas e 28 pinos de interconexão.
A sua arquitectura apresenta uma tecnologia bipolar antiga, que permite somente uma gravação
(escrita) de dados; não permite regravação de dados. A sua vantagem é a velocidade de
operação, porém a desvantagem é o consumo alto de energia eléctrica. Um dispositivo GAL é
um PLD simples, usa tecnologia CMOS, permite regravação dos dados e o consumo de energia
é baixo, contudo sua velocidade de operação é menor que um dispositivo PAL.
Os dispositivos FPGAs e CPLDs utilizam tecnologia CMOS. Geralmente, estão
disponíveis em cinco tecnologias de fabricação: EPROM, EEPROM, FLASH, SRAM e Anti-
Fuse. Os dispositivos FPGAs, quando comparados com CPLDs, utilizam menor número de
portas lógicas e são focados em células lógicas internas (registadores e flip-flops) e não em
portas lógicas.
As habilidades necessárias para usar os dispositivos de lógica programável em projecto
de circuitos digitais precisam ser desenvolvidas nas escolas. A aplicação desses dispositivos, na
parte prática (laboratório) dos cursos de elementos de electrónica digital, deve, em pouco
tempo, substituir a aplicação dos circuitos integrados discretos. A tecnologia digital cresce de
forma exponencial, novos equipamentos e sistemas são especialmente projectados para
trabalhar em automação industrial. O projecto e a manutenção desses sistemas requerem uma
grande demanda de mão-de-obra especializada. Dentro desse cenário, uma nova abordagem de
projecto de sistema digital faz-se necessária, no sentido de modernizar o ensino da electrónica
digital nos cursos técnicos e de engenharia.
MINISTÉRIO DA EDUCAÇÃO
6
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
3 - Dispositivos lógicos programáveis (PLDs)
O desenvolvimento de projectos de circuitos digitais tem evoluído rapidamente nas
últimas décadas. A utilização de software denominado EDA (Electronic Design Automation) e
o aperfeiçoamento dos dispositivos lógicos programáveis, PLDs (Programmable Logic
Devices), têm simplificado e acelerado todo o ciclo de projecto.
Os PLDs são circuitos integrados que podem ser configurados pelo próprio usuário, não
apresentam uma função lógica definida, até que sejam configurados. A principal característica é
a capacidade de programação das funções lógicas pelo utilizador, eliminando-a do processo de
fabricação do circuito integrado, facilitando assim as prováveis mudanças de projecto. Em
comparação com outras tecnologias de circuitos integrados digitais, os dispositivos de lógica
programável apresentam um ciclo de projecto menor e custos reduzidos.
Os dispositivos lógicos programáveis (PLDs) possibilitaram a implementação da lógica
programável. Os PLDs podem ser classificados em função do número de portas lógicas que
possuem, como descrito a seguir:
SPLDs (Simple Programmablc Logic Devices): são dispositivos simples de baixa
capacidade, tipicamente contêm menos de 600 portas lógicas, fabricados com tecnologia CMOS.
HCPLDs (High Complcx Programmable Logic Devices): são dispositivos de alta
capacidade, tipicamente contêm mais do que 600 portas lógicas. Os mais modernos
podem atingir cerca de 500.000 portas ou mais e ainda englobam os dispositivos CPLDs
(Complex Programmable Logic Devices) e FPGAs (Field Programmable Gate Arrays),
todos fabricados com tecnologia CMOS.
3.1 - SPLDs
Os PLAs (Programmables Logic Arrays) são considerados os primeiros dispositivos
lógicos programáveis simples (SPLDs) criados especificamente para a implementação de
circuitos lógicos. Introduzidos pela empresa Philips no início de 1970, esses dispositivos
consistem em dois níveis de portas lógicas: um plano de portas AND seguido por um plano de
portas OR, ambos programáveis.
Um PLA é estruturado de forma que cada saída do plano AND pode corresponder a
qualquer produto das entradas. Da mesma forma, cada saída do plano OR pode ser configurada
para produzir a soma dos produtos de quaisquer saídas do plano AND. A figura 2 mostra um
esquema simplificado de um PLA.
MINISTÉRIO DA EDUCAÇÃO
7
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
Em virtude da estrutura montada, os PLAs são adequados para as implementações de
funções lógicas na forma de soma de produtos, e eles se apresentam muito versáteis, pois tanto
os termos AND como os termos OR podem ter muitas entradas. Entretanto, essa tecnologia
também apresenta problemas como alto custo de fabricação e baixo desempenho em termos de
velocidade. Essas desvantagens existem devido aos dois níveis de lógica configurável. Os
planos lógicos programáveis são difíceis de serem fabricados e introduzem atrasos
significativos de propagação dos sinais eléctricos.
Fig.2 – Esquema simplificado de um dispositivo PLA
A tecnologia PAL (Programmable Array Logic) foi então desenvolvida para superar as
deficiências apresentadas pela tecnologia PLA. Os PALs apresentam um único plano AND
configurável, custo menor e melhor desempenho. A figura 3 apresenta um esquema
simplificado de um dispositivo PAL.
As arquitecturas PLA e PAL são baseadas em PROM (Programmable Read Only
Memory), ou seja, programáveis uma única vez. Essa limitação significa que o dispositivo não
pode ser reconfigurado. A tecnologia GAL (Generic Array Logic), embora similar à
arquitectura PAL, foi desenvolvida baseada em EEPROM (Electrically Erasable PROM) que
permite a reconfiguração.
MINISTÉRIO DA EDUCAÇÃO
8
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
Fig.3 – Esquema simplificado de um dispositivo PAL
3.2 - HCPLDS
Quanto maior o número de portas de um PLD, maior será sua complexidade. Os
dispositivos lógicos de alta complexidade (HCPLD) dividem-se, basicamente, em dois grupos:
CPLD e FPGA.
A diferença básica entre os dois dispositivos está na estrutura interna de suas células
lógicas e na metodologia de interligação dessas células. De uma forma geral, internamente, os
HCPLDs podem ser vistos como dispositivos que integram na sua estrutura centenas de macro
células programáveis, que são interligadas por conexões também programáveis.
3.2.1 - Tecnologia CPLD
Os dispositivos lógicos programáveis complexos (CPLDs) foram introduzidos no
mercado internacional pela empresa Altera Corp. em 1983, inicialmente como dispositivos
lógicos programáveis apagáveis (EPLDs) e posteriormente como CPLDs.
Os CPLDs são dispositivos programáveis e reprogramáveis pelo utilizador, com alto
desempenho, baixo custo por função e alta capacidade de integração. Um CPLD pode ser
aplicado como uma máquina de estado ou descodificador de sinais, substituindo centenas de
circuitos discretos que implementariam a mesma função. Um exemplo de aplicação de CPLD é
no controle de malha fechada de motores eléctricos.
MINISTÉRIO DA EDUCAÇÃO
9
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
Os CPLDs implementam capacidade lógica de até centenas de dispositivos lógicos
programáveis típicos. As suas principais vantagens em relação aos circuitos discretos
tradicionais são:
Programabilidade e reprogramabilidade: permite que funções lógicas possam ser alteradas, simplificando o desenvolvimento de protótipos.
Tecnologia CMOS: menor consumo de energia eléctrica.
Integração em larga escala: redução de tamanho da placa de circuito impresso, pois
possibilita a eliminação de diversos componentes discretos.
Simplificação e redução do tempo de desenvolvimento: simplifica e reduz o tempo de desenvolvimento da placa de circuito impresso, pois permite que o projectista defina os
sinais eléctricos conforme desejado: entradas ou saídas podem ocupar o mesmo
terminal do dispositivo.
Teste e depuração: as linguagens utilizadas na programação do dispositivo permitem a simulação, teste e depuração rápida do protótipo.
3.2.2 - Tecnologia FPGA
O FPGA é um HCPLD que suporta a implementação de circuitos lógicos relativamente
grandes. Possui um conceito de arquitectura interna diferente do CPLD. Consiste em um
grande arranjo de células lógicas ou blocos lógicos configuráveis contidos em um único
circuito integrado. Cada célula contém capacidade computacional para implementar funções
lógicas e realizar roteamento para comunicação entre elas. O primeiro FPGA disponível
comercialmente foi desenvolvido pela empresa Xilinx Inc., em 1983.
Os FPGAs não possuem planos OR ou AND, sendo um grande arranjo de células
configuráveis que podem ser utilizadas para a implementação de funções lógicas. A figura 4
ilustra a estrutura interna simplificada de um FPGA. Basicamente é constituída de blocos
lógicos, blocos de entrada e saída, e chaves de interconexão. Os blocos lógicos formam uma
matriz bidimensional, e as chaves de interconexão são organizadas como canais de roteamento
horizontal e vertical entre as linhas e colunas de blocos lógicos.
Fig.4 – Estrutura simplificada de um FPGA
MINISTÉRIO DA EDUCAÇÃO
10
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
4 – Linguagens de programação
As primeiras abordagens para o desenvolvimento de circuitos digitais com tecnologia de
lógica programável iniciavam o projecto a partir de um esquemático. A representação
esquemática do circuito era depois convertida manualmente para uma descrição textual
(ficheiro de texto) equivalente onde se indicava o estado de cada um dos elementos de
configuração de um dispositivo programável: um fusível ou um anti-fusível. O ficheiro era
depois carregado para o dispositivo programável usando um programador.
Para gerar manualmente o ficheiro de texto com a configuração do dispositivo, exigia-se
que o projectista conhecesse a estrutura interna do dispositivo e o formato usado pelo
programador, que dependia do fabricante. O processo de projecto tornava-se, desta forma,
bastante demorado e sujeito a erros que não eram fáceis de identificar.
Para melhorar o processo, a JEDEC (Joint Electron Device Engineer Council) propôs
um formato standard para os ficheiros de programação de dispositivos lógicos programáveis
(PLD – Programmable Logic Devices). Na mesma altura, o autor da primeira PAL desenvolveu
o PAL Assembler (PALASM) que consistia numa linguagem de descrição de hardware bastante
rudimentar e numa aplicação software de conversão desta linguagem no respectivo ficheiro de
programação. A introdução do PALASM foi um progresso considerável, mas apenas suportava
dispositivos PAL e não realizava qualquer minimização ou optimização lógica sobre a
descrição hardware inicial.
Com o objectivo de ultrapassar estas limitações, a Data I/O lançou o ambiente ABEL
(Advanced Boolean Expression Language) em 1983 e a Assisted Technology lançou o
ambiente CUPL (Common Universal tool for Programmable Logic). O ABEL e o CUPL
incluem as linguagens de descrição de hardware com o mesmo nome, linguagens ABEL e
CUPL, e as aplicações software que convertem a descrição hardware no ficheiro de
programação do PLD. Ao contrário do PALASM, os ambientes ABEL e CUPL incluem
algoritmos de minimização e de optimização e suportam múltiplos dispositivos PLD de
múltiplos fabricantes.
MINISTÉRIO DA EDUCAÇÃO
11
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
5 – O dispositivo PAL
A PAL® é um dispositivo programável cuja marca foi registada pela American Micro
Devices (AMD). Os primeiros dispositivos programáveis PAL® surgiram no final da década de
70 e o seu sucesso crescente levou a PAL® a ser actualmente um dos dispositivos lógicos
programáveis mais utilizado.
As PAL® baseiam-se no mesmo princípio de implementação da forma AND-OR. No
entanto, consideram que a flexibilidade de programação associada à matriz de saída não traz
grandes benefícios à capacidade de produção de funções lógicas.
Consequentemente, enquanto que na PLA as matrizes de entrada e de saída são ambas
programáveis, na PAL® apenas a matriz de entrada é programável. A matriz de saída tem uma
estrutura fixa não programável. Por este motivo, a PAL® é mais fácil de programar e tem um
custo mais baixo quando comparada com a PLA. No entanto, não é tão flexível em termos de
programação, pois a matriz de saída é fixa.
Para ilustrar a arquitectura típica de uma PAL®, consideremos uma configuração
exemplo com apenas quatro entradas e quatro saídas (ver figura 5).
Fig.5 – Exemplo de arquitectura de uma pequena PAL
MINISTÉRIO DA EDUCAÇÃO
12
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
O dispositivo da figura apresenta uma estrutura regular formada pela matriz de entrada
programável, por quatro entradas (In) complementadas e não complementadas e por quatro
saídas. Cada uma das saídas é gerada por uma estrutura AND-OR que, neste caso particular, é
idêntica para todas as saídas e formada por três portas AND com entradas programáveis.
Cada uma das portas AND tem dezasseis ligações de entrada programáveis cujos sinais
provêm das quatro entradas, complementadas e não complementadas, e das quatro saídas,
complementadas e não complementadas, que são reintroduzidas na matriz de entrada através de
um buffer. Ao conjunto de lógica associada a cada uma das saídas (no exemplo, a estrutura
AND-OR com três portas AND e o buffer de realimentação) designa-se célula ou macrocélula.
O número de entradas e de saídas, bem como a estrutura da macrocélula, são os principais
parâmetros lógicos diferenciadores do tipo de PAL®.
5.1 - Implementação de funções lógicas com PAL
A implementação de um conjunto de funções com uma determinada PAL® está
dependente do número de entradas e de saídas e do número de termos de produto.
Devido à limitação do número de termos de produto por célula, as funções devem ser
previamente simplificadas antes de serem implementadas na PAL®. Se, mesmo após
simplificação, o número de produtos for superior ao existente numa única célula, então é
necessário usar duas ou mais células para implementar a função recorrendo à realimentação das
saídas das células através dos buffers. Ao contrário da PLA, em que um termo de produto podia
ser directamente partilhado por duas ou mais portas OR, na PAL® isso não é possível. Como
tal, as funções podem ser simplificadas individualmente sem ter em conta a partilha de termos
de produto (simplificação multifunção). Por outro lado, uma vez que é possível realimentar o
valor da função de saída, pode ser útil identificar termos AND-OR comuns a duas ou mais
funções.
Consideremos, como exemplo, a utilização da PAL® da figura 5 para implementação de
quatro funções lógicas, F0, F1, F2, F3:
MINISTÉRIO DA EDUCAÇÃO
13
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
A PAL® tem entradas suficientes para implementar as funções de quatro variáveis cada.
Além disso, numa primeira aproximação, o número de saídas também é suficiente para
implementar as quatro funções. No entanto, o número de termos de produto da função F0 é
superior ao de uma única célula, que tem apenas três. Neste caso, é necessário usar mais do que
uma célula para implementar a função F0.
Consequentemente, à primeira vista, a PAL® proposta não seria solução, pois apenas
suportaria a implementação de apenas três das quatro funções. Contudo, ao analisarmos as
funções, verificamos que a expressão lógica da F1 (AD +BC) faz parte da expressão lógica de
F0 (AD +BC + ABD +BD). Assim, a função F0 pode ser escrita como:
F0 = F1 + ABD +BD
e desta vez já só tem três termos de produto, suportável por uma única célula da PAL®.
Caso o conjunto de funções fosse formado apenas por F3, F2 e F0, apenas teríamos de
criar uma nova função que realizaria parte de F0.
Por exemplo, F5 = BC+ ABD+ BD ou F5 = AD + BC.
Depois de simplificar as funções, basta programar a matriz da PAL® (ver figura 6).
Fig.6 – Implementação das quatro funções na PAL®
MINISTÉRIO DA EDUCAÇÃO
14
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
Na implementação ilustrada na figura, a representação das ligações é idêntica à usada nos
dispositivos anteriores, ou seja, uma cruz na intersecção indica que o sinal dessa coluna entra
na porta AND da linha respectiva.
Felizmente, como acontece com todos os outros dispositivos programáveis, o fabricante
disponibiliza ferramentas de CAD para geração do ficheiro de programação a partir da
descrição das funções lógicas e para programação da PAL®, tendo como entrada o ficheiro de
programação.
5.2 - PAL comerciais
As PAL® comerciais são consideravelmente maiores que a utilizada no exemplo anterior.
De entre as PAL® comerciais, existem as que apenas implementam lógica combinatória e as
que também implementam lógica sequencial, pois incluem elementos de memória nas
macrocélulas. Nesta secção, vamos descrever a estrutura de uma PAL® combinatória,
PAL16L8, e uma PAL® sequenciais PAL16R8
5.2.1 - Arquitectura da PAL® combinatória 16L8
A PAL16L8 suporta um máximo de 16 entradas e 8 saídas (daqui advêm os números
usados na designação 16L8) e tem uma matriz programável com 64 linhas e 32 colunas,
perfazendo um total de 2048 ligações programáveis (ver figura 16). As células de saída são
formadas por:
uma estrutura AND-OR com 7 portas AND de 32 entradas cada, correspondentes ao
conjunto das 16 entradas complementadas e não complementadas;
uma porta three-state inversora à saída da porta OR cuja entrada de enable é controlada
por uma oitava porta AND também com 32 entradas. As entradas não conectadas são
interpretadas pela porta AND como sendo o valor lógico 1. Assim, por exemplo, caso se
pretenda que a porta three-state esteja sempre activa, basta não ligar nenhum sinal à
porta AND de controlo;
um buffer de realimentação da saída respectiva para a matriz de entrada.
Embora a PAL® tenha 16 pinos de entrada e 8 pinos de saída, o encapsulamento do
integrado apenas tem 20 pinos, incluindo os dois pinos de alimentação. Para que tal seja
possível, 6 dos 20 pinos são bidireccionais, podendo ser usados como entrada, como saída ou
como entrada/saída.
MINISTÉRIO DA EDUCAÇÃO
15
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
Fig. 7 - Arquitectura da PAL® 16L8
MINISTÉRIO DA EDUCAÇÃO
16
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
Os pinos bidireccinais podem ser usados de várias formas, dependendo da função que se
atribui ao pino:
pode ser usado como entrada. Para tal, é necessário que a porta three-state de saída esteja
sempre inactiva;
pode ser usado como saída. Para tal, basta activar o three-state. Neste caso, o sinal à saída
pode ser realimentado para a matriz, através do buffer de realimentação, como se se
tratasse de uma entrada. Esta realimentação é usada sempre que o número de termos de
produto de uma célula não é suficiente para implementar uma função, como foi visto na
secção anterior;
pode ser usado como pino de entrada/saída. Nesta configuração, o estado do pino é
controlado pela porta three-state de saída. Quando se quer enviar dados para o exterior,
activa-se a porta three-state. No caso de se querer receber dados pelo pino, desactiva-se
a porta three-state e a entrada de dados é feita através do buffer de realimentação;
uma outra configuração interessante, é a de realimentação da função de saída para a
mesma célula que produziu a saída. Isto permite implementar circuitos lógicos com
realimentação.
Para ilustrar a utilização da PAL16L8 na implementação de funções lógicas combinatórias,
vamos implementar o multiplicador de dois bits, a partir das suas funções complementares que
se apresentam de seguida (não esquecer que a saída da célula inverte a função):
Estas funções são facilmente implementáveis na PAL® sem recorrer à realimentação,
uma vez que o número de termos de produto de qualquer uma das funções é inferior a 7 (ver
implementação na figura 8).
MINISTÉRIO DA EDUCAÇÃO
17
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
Fig. 8- Implementação do multiplicador de 2-bits na PAL® 16L8
No exemplo, todos os three-states associados às saídas das funções têm de estar activos.
Para tal, basta não ligar qualquer entrada às AND de controlo respectivas.
5.2.2 - Arquitectura de PAL® sequencial PAL16R8
A PAL® 16L8 apenas implementa funções combinatórias porque não tem elementos de
memória, como latches ou flip-flops. Com o objectivo de implementar circuitos sequencias em
PAL®, surgiu a primeira geração de PAL® sequenciais com a designação PAL16R8. Este
dispositivo programável tem 8 entradas e 8 oito saídas, uma entrada de relógio comum a todos
os flip-flops tipo D e uma entrada de controlo comum a todos as portas three-state de saída (ver
figura 9)
MINISTÉRIO DA EDUCAÇÃO
18
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
Fig. 9- Arquitectura da PAL® 16R8
As saídas complementares dos flip-flop tipo D são realimentadas para a malha,
facilitando a implementação de contadores, de registos de deslocamento, etc. Note-se que as
saídas dos flip-flops estão disponíveis sem passar pelas portas three-state. Assim, os flip-flops
podem mudar para um outro estado função do estado presente, independentemente do estado
das portas three-state, porque as saídas são realimentadas antes dos three-states.
Apesar da sua aplicabilidade, as PAL® 16L8 e 16R8 estão limitadas pelo facto de apenas
poderem ser usadas unicamente na implementação de circuitos combinatórios ou de circuitos
sequencias e nunca em simultâneo. Uma vez que muitas aplicações necessitam de saídas
combinatórias juntamente com saídas sequenciais, surgiram depois variantes destas PAL® em
que algumas das saídas eram combinatórias, a célula não tinha flip-flop, e outras eram
sequencias, a célula continha um flip-flop (e.g., PAL16R6).
Apesar da sua aplicabilidade, o facto de uma saída estar à partida definida como
combinatória ou sequencial restringia consideravelmente o tipo de PAL® ao projecto.
Para ultrapassar esta limitação, surgiram as famílias de PAL® em que cada macrocélula
podia ser configurada individualmente como combinatória ou como sequencial descrevem-se
duas destas PAL®, nomeadamente a ATF22V10 e a ATF750C.
MINISTÉRIO DA EDUCAÇÃO
19
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
6 - Programação de circuitos lógicos
Para programar um circuito temos que especificar quais as ligações que devem ser
activadas (para interligar os blocos no seu interior).
Essa especificação é realizada num ficheiro de texto com um formato específico que
obedece ao standard designado por JEDEC. Esse ficheiro (*.jed) é lido pelo programador de
circuitos que por sua vez gera os sinais eléctricos necessários à programação das ligações entre
blocos. Embora pudéssemos escrever à mão o ficheiro JEDEC é mais fácil (e mais fiável)
utilizar um programa designado por compilador lógico 1 que gera esse ficheiro a partir das
equações lógicas que queremos implementar. Esse programa chama-se WinCUPL e está
instalado nos computadores da nossa sala.
6.1 - Metodologia
A figura 10 ilustra o conjunto de passos necessários à implementação de um projecto
lógico num circuito programável.
1º passo: Realizar o projecto lógico (tabelas de verdade, mapas de Karnaugh, diagrama de
estados etc.) obtendo as equações lógicas (combinatórias e/ou sequenciais) necessárias. No
caso dos circuitos sequenciais devem ser utilizados flip-flops do tipo-D uma vez que são estes
que existem no circuito programável que temos disponível.
2º passo: Abrir o programa WinCUPL. Escrever um ficheiro de texto (*.pld) indicando os
pinos de entrada e saída e a descrição textual das equações lógicas a implementar. A sintaxe da
descrição está explicada no menu de ajuda da aplicação. Uma vez concluída pode utilizar o
simulador para garantir que a descrição textual está de acordo com a funcionalidade pretendida.
Compilar o ficheiro *.pld de modo a gerar a versão no formato JEDEC, isto é, *.jed.
3º passo: Solicitar ao docente que utilize o ficheiro *.jed para programar o circuito.
4º passo: Testar, como habitualmente, o circuito na base de montagem.
Fig. 10 - Implementação de um projecto lógico num circuito programável
MINISTÉRIO DA EDUCAÇÃO
20
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
6.2 – O software WINCUPL O WINCUPL é um ambiente integrado de desenvolvimento de circuitos digitais com base nas
ferramentas e no compilador CUPL.
Fig.11 – Ambiente WINCUPL
No ambiente WINCUPL (ver figura 11) é possível editar o ficheiro de descrição do
circuito, compilá-lo e simulá-lo. De entre vários ficheiros gerados pelo compilador, é gerado o
ficheiro de programação do dispositivo lógico programável alvo.
O ambiente tem uma zona de edição de texto, uma zona de apresentação de mensagens de
erro e avisos e uma zona com ligações para os ficheiros gerados pelo compilador e pelo
simulador.
A partir dos menus da zona superior da janela do ambiente é possível aceder a todas as
funcionalidades do ambiente. Os menus File, Edit, View, Utilities, Window e Help são
autoexplicativos, pelo que não serão detalhados neste documento. Nas secções seguintes,
descreve-se em pormenor as opções associadas aos menus Options e Run.
MINISTÉRIO DA EDUCAÇÃO
21
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
6.2.1 - Opções de Projecto
O menu Options é usado para lançar as janelas de opções do compilador, do simulador, dos
dispositivos e do ambiente WinCUPL. Consideremos cada um deles em particular. Options-
>Compiler O menu apresenta as opções relativas ao compilador (ver figura 12).
Fig.12 – Compiler Options
O tab Output Files é usado para escolher quais os ficheiros de saída a serem gerados
pelo compilador, nomeadamente:
JEDEC – gera um ficheiro ASCII com extensão .jed. O nome do ficheiro é obtido a partir
da secção name do cabeçalho da descrição CUPL. Se quiser forçar que o nome do
ficheiro seja criado com base no nome do ficheiro da descrição (.pld) deverá activar a
opção correspondente no Tab General;
HL – gera um ficheiro com extensão .hl, que é usado apenas para os dispositivos IFL da
Signetics. O nome do ficheiro também é dado pela secção name do cabeçalho da
descrição CUPL;
ASCII/Hex – gera um ficheiro ASCII com extensão .hex. O formato é apenas usado em
PROM. O nome usado segue a mesma convenção dos ficheiros anteriores;
Fuse Plot – gera um diagrama dos fusíveis de dispositivos PAL® no ficheiro com
extensão .doc;
MINISTÉRIO DA EDUCAÇÃO
22
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
Equations - gera as equações lógicas a serem programadas no dispositivo PAL® no
ficheiro com extensão .doc;
Absolute – gera um ficheiro com extensão .abs para ser usado com o simulador lógico
CSIM;
List – gera um ficheiro com a extensão .lst que contém a lista de erros resultantes da
compilação;
Expanded Macro – gera um ficheiro com extensão .mx que contém uma lista expandida
de todas as macros usadas na descrição hardware;
Gera um ficheiro com extensão .pla para ser usado nas ferramentas Berkeley PLA;
O tab Minimization é usado para escolher o método de minimização a ser usado pelo
compilador.
O tab Optimization é usado para escolher o método de optimização a ser usado pelo
compilador.
O tab General é usado para escolher opções genéricas do compilador, nomeadamente:
Secure Device – adiciona automaticamente ao ficheiro JEDEC código que permite ao
programador do dispositivo alterar o fusível de segurança durante a programação (nem
todos os programadores suportam esta opção);
Deactivate Unused OR Terms – em dispositivos IFL, as entradas não usadas do OR de
saída são mantidas ligadas, permitindo que novos termos sejam facilmente adicionados.
No entanto, esta configuração aumenta o tempo de propagação da entrada para a saída.
A opção força a que as entradas não usadas sejam desactivadas para reduzir este tempo
de propagação;
Simulate – cria um ficheiro com extensão .abs e executa automaticamente o simulador
lógico, CSIM;
One hot bit State Machine – gera as máquina de estados com uma codificação one-hot;
JEDEC name = PLD name – esta opção força a que o nome do ficheiro seja criado a
partir do ficheiro da descrição (.pld) em vez de ser obtido a partir da secção name do
cabeçalho da descrição CUPL.
MINISTÉRIO DA EDUCAÇÃO
23
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
Options->Devices
O menu apresenta uma janela onde se pode escolher o dispositivo alvo a partir de uma lista
de dispositivos (ver figura 13).
Fig.13 – Device selection
Options->Simulator
O menu apresenta uma janela com opções relativas ao simulador (ver figura 14),
nomeadamente
Fig.14 – Simulator Options
Listing File – cria um ficheiro de saída com os resultados da simulação;
Append Vectors – adiciona os vectores de teste gerados pela simulação ao ficheiro
JEDEC;
Display Results – apresenta os resultados da simulação num gráfico.
MINISTÉRIO DA EDUCAÇÃO
24
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
Options->WinCUPL
O menu apresenta uma janela com várias opções relativas ao ambiente WinCUPL (ver
figura 15). As opções são comuns a ferramentas baseadas em ambiente de janelas, pelo que
dispensa explicação detalhada.
Fig.15 – Simulator Options
6.2.2 - Opções de Execução
O menu Run é usado para invocar o compilador e o simulador. Qualquer uma destas
acções pode ser realizada de forma independente ou dependente do tipo de dispositivo lógico
alvo, nomeadamente:
Device Dependent Compile – compila a descrição tendo em conta o dispositivo alvo
especificado através do cabeçalho da descrição ou através das opções de compilação
Device Independent Compile – compila a descrição usando um dispositivo virtual. Caso
tenha sido especificado algum dispositivo, este será ignorado. O mesmo resultado pode
ser obtido à custa do comando anterior, mas especificando o dispositivo como sendo
virtual;
Device Dependent Simulation – simula a descrição tendo em conta o dispositivo alvo
especificado através do cabeçalho da descrição ou através das opções de compilação.
Device Independent Simulation – simula a descrição usando um dispositivo virtual. Caso
tenha sido especificado algum dispositivo, este será ignorado. O mesmo resultado pode
ser obtido à custa do comando anterior, mas especificando o dispositivo como sendo
virtual.
MINISTÉRIO DA EDUCAÇÃO
25
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
6.3 - Exemplos de aplicação
Nesta secção vamos apresentar alguns exemplos de programação, primeiro com um
circuito combinatório e depois com um sequencial.
6.3.1 - Circuito combinatório
Neste exemplo vamos assumir que pretendíamos implementar uma função lógica de 3
variáveis com a seguinte equação:
Seguindo a metodologia apresentada anteriormente no primeiro passo vamos descrever
textualmente esta equação num ficheiro com extensão pld. Abrimos a aplicação WinCUPL e
seleccionamos a opção File | New | Design File. Isto permite-nos criar um modelo (template)
para o ficheiro que necessitamos. No campo Name escrevemos o nome que pretendemos, neste
caso “comb” e no campo Device a identificação do circuito programável, neste caso g16v8.
Depois de fazer OK indicamos o número de pinos (3 de entrada, 1 de saída e 0 para nós
internos).
Fig. 16 – Caixa de diálogo Design Properties e Pin Out GAL16V8
MINISTÉRIO DA EDUCAÇÃO
26
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
O ficheiro comb.pld que é gerado tem o seguinte conteúdo:
Resta-nos agora completar o conteúdo do ficheiro de acordo com a funcionalidade
pretendida. Consultando o ficheiro .pdf do circuito programável GAL16V8 vemos que
podemos escolher os pinos 1,2 e 3 como entradas e o pino 12 como saída. Depois
acrescentamos a equação que relaciona a saída Z como função das entradas.
Note que o símbolo & representa a operação AND, o símbolo ! a operação NOT e o
símbolo # a operação OR. Note ainda que os comentários aqui usados são insípidos e de pouco
significado porque se trata de um exemplo. Uma vez terminadas as alterações grave o ficheiro.
Seguidamente vamos compilar este ficheiro para gerar a versão com extensão .jed
necessária ao programador de circuitos. Para isso carregue em F9 ou utilize a opção do menu
Run. Anote a localização da pasta onde o ficheiro vai ser guardado (geralmente,
c:\wincupl\wincupl\).
De acordo com a metodologia, o passo seguinte é facultar ao docente o ficheiro comb.jed
que o programa gerou para que se possa programar electricamente o circuito. Uma vez
concluída a programação pode utilizar o circuito como se tratasse de um circuito do tipo TTL
só que agora com a sua função lógica.
MINISTÉRIO DA EDUCAÇÃO
27
Sistemas Digitais e Arq. de Comp.
M5 - Introdução à Lógica Programável
Curso Profissional de Técnico de Gestão de Equipamentos Informáticos
Portaria n.º 897/2005 de 26 de Setembro
Professor: António Trigo
6.3.2 - Circuito sequencial
Neste exemplo pretende-se implementar uma máquina de estados que activa a saída Z
quando reconhece (na entrada X) a sequência binária …01… Após a realização do projecto
chegamos às seguintes equações:
O ficheiro correspondente seq.pld teria um conteúdo do tipo:
Note que o pino 1 é agora utilizado como relógio e não como entrada. A entrada D dos
flip-flops é especificada com o nome da variável e a extensão .d. Quando testar o circuito, o
pino 11 referente ao Output Enable, por ser activo a 0, deve ser ligado ao GND (0 volt) de
modo a permitir as saídas dos flip-flops.
Top Related