1 PLD - DISPOSITIVOS LÓGICOS PROGRAMÁVEIS Os projetos com circuitos digitais mais complexos podem se tornar inviáveis devido a vários problemas, tais como: - Elevado número de C.I. (circuitos integrados) - Muitas ligações (trilhas) entre os CIs - Atrasos entre as portas lógicas - Custo elevado do projeto - Alto consumo do sistema - Necessidade de grande layout físico Uma solução para esses problemas seria a utilização de um sistema utilizando microcomputador e/ou DSP (Processador Digital de Sinais). Mas esses sistemas têm uma seqüência programada de instruções especificadas pelo projetista e, em muitas aplicações, os mesmos não conseguem responder tão rapidamente quanto o esperado. Nesses casos, onde o tempo de resposta é essencial, os circuitos digitais convencionais têm de ser usados. Com a tecnologia avançando rapidamente, a maioria dos sistemas digitais convencionais não precisam ser implementados com as portas lógicas, podendo ao invés disto programar um circuito integrado dedicado para atender a determinada função. Dentre as novas técnicas surgiu a descrição de hardware. Nesta modalidade, o projetista descreve o hardware a ser implementado utilizando uma HDL (Hardware Description Language Linguagem de Descrição de Hardware) e implementa o circuito em uma PLD (Programmable Logic Device Dispositivos de Lógica Programável). Um HDL é parecida com uma linguagem de programação e o projetista tem que se preocupar apenas com a lógica do sistema. Após fazer a descrição do projeto, existem ferramentas de simulação para testes evitando assim perdas de tempo e de custo. Caso o sistema projetado passe nos testes de simulação, o projetista tem que escolher o dispositivo que melhor se adapte às características do projeto (número de portas, tempo de respostas...), para então gravá-lo. Esses dispositivos são chamados de PLD. PLD Esses dispositivos possuem internamente centenas (ou milhares) de portas lógicas, flip-flops e registradores interligados. As ligações entre esses elementos são programáveis através de um software de programação. Existem vários tipos de PLD: - PROM (Memória Somente de Leitura-Programável) - PLA (Arranjo Lógico Programável) - PAL (Lógica de Arranjo Programável) - CPLD (Dispositivos Lógicos Programáveis Complexos) - FPGA (Arranjo de Portas Programáveis em Campo) 1
2 Devido a sua estrutura interna, os PLDs podem ser divididos em duas categorias: PLD 600 portas Arranjos Lógicos Programáveis > 600 portas Arranjos De Portas Programáveis PROM PAL PLA FPGA CPLD Esses componentes oferecem ao projetista as seguintes vantagens: - Maior desempenho - Maior complexidade funcional - Melhor confiabilidade - Redução do tamanho físico da placa - Menor consumo de energia - Menor custo de produção em grandes volumes - Maior dificuldade de cópia por parte dos concorrentes ARRANJO LÓGICO PROGRAMÁVEL Os PLDs simples usam tecnologia CMOS e oferecem elementos de memória do tipo EPROM, EEPROM, e memória FLASH, e englobam os PALs, GALs, e outros componentes. Oferecem até 600 portas programáveis. PROM A memória PROM pode ser considerada um PLD no caso da mesma ser utilizada para implementar funções lógicas. Uma PROM, é uma memória apenas de leitura que pode ser gravada uma vez pelo projetista através da queima dos fusíveis internos. Internamente, a PROM tem uma estrutura AND-OR, com a matriz AND fixa e a matriz OR programável. A memória PROM implementa diretamente a tabela verdade, não aproveitando as vantagens das técnicas de minimização. É prejudicada pelo número de combinações de entrada e saída, pois nem todas as combinações são utilizadas. Como exemplo, se um circuito de 10 entradas e 8 saídas se destina a gerar 30 funções de saída, pode ser um desperdício usar uma PROM de 1k x 8, pois de todas as combinações possíveis das 1024 entradas, apenas 30 seriam utilizadas. A figura abaixo mostra uma PROM de 8 x 3: 2
3 Vamos supor que dada a memória acima fosse pedido para gravar a seguinte tabela verdade: I 2 I 1 I 0 O 2 O 1 O 0 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 1 0 0 1 0 1 1 1 1 A PROM gravada ficaria como mostrado na próxima figura. Note que, neste caso, alguns endereços não foram utilizados. 3
4 PLA (Arranjo Lógico Programável) As PLAs permitem maior flexibilidade para a execução de funções lógicas pois possuem tanto a matriz de portas AND quanto a matriz de portas OR programáveis. Como possui as matrizes AND-OR programáveis habilita ao projetista implementar os termos minimizados. Sua desvantagem é ter o custo elevado. As PLAs possuem uma menor quantidade de portas AND, não formando assim um decodificador completo. Símbolo: Io I1 I2 O0 PLA O1 O2 4
5 - PAL (Lógica de Arranjo Programável) Um dispositivo PAL é basicamente uma matriz AND programáveis e uma matriz OR fixa. As PALs combinam baixo custo e fácil programação das PROMs com a flexibilidade das PLAs. Símbolo: Io I1 I2 O0 PAL O1 O2 5
6 O número de identificação desses dispositivos define também as suas operações lógicas; ele consiste no termo PAL seguido por: - número de entradas do dispositivo - o tipo de saída H ativo alto L ativo baixo C complementação: ativos em ambos níveis lógicos R registrado: o nível lógico é retido em um biestável e reintroduzido na matriz AND programável X OR-Exclusivo registrado A Aritmética registrada - número de saída - velocidade e/ou potência - gama de temperatura - tipo de encapsulamento. 6
Alguns tipos de PAL: 7 ARRANJO DE PORTAS PROGRAMÁVEIS (Programmable Gate Array) Ou HCPLDs (Dispositivos Lógicos Programáveis de Alta Capacidade) Os HCPLDs (dispositivos lógicos programáveis de alta capacidade), oferecem mais de 600 portas disponíveis e também utilizam tecnologia CMOS com memória EPROM, EEPROM, FLASH, SRAM, e opções anti-fusível. Por HCPLDs entendem-se os dispositivos FPGA e CPLD. Esses últimos dispositivos são programáveis e reprogramáveis, sendo esta última característica uma vantagem a mais para os projetistas de circuitos lógicos. Os fabricantes destes tipos de dispositivos garantem um fator de utilização de 80 a 90%, enquanto que com os PALs este fator fica em torno de 15%. Estrutura Um HCPLD é constituído por várias estruturas repetidas conhecidas como células. Em cada célula temos elementos que implementam lógica combinacional acompanhados de Lachtes (através de Memórias e Flip-Flops) destinados a aplicações de lógica sequencial. Interligando estas duas estruturas, temos multiplexadores programáveis que 7
8 realizam a interligação destes blocos entre si e destes com o exterior da célula (para outra célula ou para barramentos). Um barramento é uma estrutura que se destina a promover a interligação entre as células. São conexões físicas (trilhas metalizadas) disponíveis no interior do chip. Dependendo do tipo de PLD envolvido (FPGA ou CPLD), de sua complexidade e de seu fabricante, temos diferentes recursos e modos de conexão. Basicamente temos estruturas de conexão segmentadas (FPGA) e estruturas contínuas (CPLD). Para interface com o mundo exterior temos unidades conhecidas como blocos de entrada e saída. Sua função é conectar as células aos pinos do integrado que normalmente pode ser realizada diretamente (Célula Bloco I/O) ou indiretamente (Célula Barramento Bloco I/O). - CPLD (Complex PLD) ou EPLD (Erasable PLD) Podem ser vistos como dispositivos que possuem em sua estrutura vários PLDs (PAL ou PLA), interligados por conexões (barramento) programáveis. A figura abaixo ilustra um CPLD genérico: Tanto as células quanto as conexões são programáveis. Cada célula é composta por uma matriz AND-OR (podendo ser PAL ou PLA) com o objetivo de implementar as funções lógicas combinacionais. As saídas de cada célula ativam módulos de entrada/saída, que são compostos por flip-flops e realimentações com funções e interligações programáveis. 8
9 FPGA (Field Programmable Gate Array Arranjo de Portas Programáveis em Campo) Possuem uma arquitetura baseada em blocos lógicos. Os blocos lógicos consistem de um certo número de portas lógicas capazes de implementar uma grande variedade de funções lógicas dependendo de sua programação. Um exemplo de um bloco lógico (típico do fabricante Xilinx) é mostrado na figura abaixo: Os blocos lógicos do FPGA são idênticos e podem ser programados individualmente. A complexidade de um bloco lógico pode variar consideravelmente entre diferentes FPGAs. Diferença entre CPLDs e FPGAs A diferença fundamental entre um CPLD e um FPGA está na estrutura de constituição dos barramentos. Um CPLD é constituído por barramentos contínuos enquanto que um FPGA, por barramentos segmentados. Um barramento contínuo é constituído por linhas de metal de comprimento uniforme que atravessam o integrado no comprimento e na largura (vertical x horizontal). Assim, a resistência e a capacitância de todas interconexões são fixa, fazendo com que os intervalos de propagação (delay) entre quaisquer duas células lógicas do dispositivo seja constante. 9
10 Um barramento segmentado é constituído por vários segmentos de metal que também atravessam o integrado nas direções horizontal e vertical. Estes segmentos podem ser conectados de diversas maneiras através de chaves lógicas programáveis existentes entre eles. Assim, o número de segmentos requeridos para conexão entre duas células não é constante ou previsível, depende fortemente da disposição das células e das múltiplas possibilidades de interconexão entre elas. Como não sabemos, antes do roteamento (interconexão das células), o número de segmentos requeridos para conexão entre células, não podemos quantizar os atrasos de propagação. O atraso de uma dada estrutura lógica é função de um atraso devido ao barramento que varia de caso a caso mais o atraso da estrutura. PROGRAMAÇÃO DOS PLDs Comumente denominadas de HDL (Linguagem de Descrição de Hardware), essas linguagens são fornecidas pelo fabricante do dispositivo. Ao contrário das linguagens seqüenciais (C, Pascal, Delphi, Cbuilder...), as HDLs permitem aos projetistas modelarem os processos paralelos que se encontram nos dispositivos de Hardware. Entre as HDLs, as que se tornaram mais populares foram a Verilog HDL e a VHDL. A Verilog HDL foi criada em 1985 pela Gateway Design System Corporation. A VHDL foi desenvolvida em 1983 pelo departamento de defesa americano (DOD). A VHDL passou a ser um padrão aceito pelo IEEE em 1987. Bibliografia: Tocci & Widmer - cap. 12 Fregni cap. 09 Scaico, A. Univ. Federal da Paraíba Zaghetto, Prado e Tavares Univ..Federal R.J. 10