Apontamentos M5 - Introdução à Lógica Programável

27
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

Transcript of Apontamentos M5 - Introdução à Lógica Programável

Page 1: Apontamentos M5 -  Introdução à Lógica Programável

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

Page 2: Apontamentos M5 -  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.

Page 3: Apontamentos M5 -  Introdução à Lógica Programável

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.

Page 4: Apontamentos M5 -  Introdução à Lógica Programável

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

Page 5: Apontamentos M5 -  Introdução à Lógica Programável

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.

Page 6: Apontamentos M5 -  Introdução à Lógica Programável

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.

Page 7: Apontamentos M5 -  Introdução à Lógica Programável

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.

Page 8: Apontamentos M5 -  Introdução à Lógica Programável

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.

Page 9: Apontamentos M5 -  Introdução à Lógica Programável

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

Page 10: Apontamentos M5 -  Introdução à Lógica Programável

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.

Page 11: Apontamentos M5 -  Introdução à Lógica Programável

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

Page 12: Apontamentos M5 -  Introdução à Lógica Programável

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:

Page 13: Apontamentos M5 -  Introdução à Lógica Programável

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®

Page 14: Apontamentos M5 -  Introdução à Lógica Programável

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.

Page 15: Apontamentos M5 -  Introdução à Lógica Programável

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

Page 16: Apontamentos M5 -  Introdução à Lógica Programável

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).

Page 17: Apontamentos M5 -  Introdução à Lógica Programável

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)

Page 18: Apontamentos M5 -  Introdução à Lógica Programável

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.

Page 19: Apontamentos M5 -  Introdução à Lógica Programável

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

Page 20: Apontamentos M5 -  Introdução à Lógica 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.

Page 21: Apontamentos M5 -  Introdução à Lógica Programável

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;

Page 22: Apontamentos M5 -  Introdução à Lógica Programável

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.

Page 23: Apontamentos M5 -  Introdução à Lógica Programável

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.

Page 24: Apontamentos M5 -  Introdução à Lógica Programável

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.

Page 25: Apontamentos M5 -  Introdução à Lógica Programável

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

Page 26: Apontamentos M5 -  Introdução à Lógica Programável

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.

Page 27: Apontamentos M5 -  Introdução à Lógica Programável

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.