Baixe o app para aproveitar ainda mais
Prévia do material em texto
LÓGICA PROGRAMÁVEL AULA 1 Prof. Ederson Cichaczewski 2 CONVERSA INICIAL Nesta aula, iremos conhecer os aspectos dos dispositivos de lógica programável, as famílias de dispositivos lógicos programáveis, a linguagem de descrição de hardware, a ferramenta de software para projeto e simulação e, por fim, detalhes do kit FPGA Cyclone II, utilizado para prototipagem. A lógica programável permite a síntese de circuitos digitais em um chip. Há diferentes arquiteturas de dispositivos de lógica programável. O projeto pode ser feito de forma simbólica ou por meio da linguagem HDL (Hardware Description Language). Ferramentas incluem o ambiente de desenvolvimento e o kit de prototipagem. TEMA 1 – CONHECENDO OS ASPECTOS DOS DISPOSITIVOS DE LÓGICA PROGRAMÁVEL Os dispositivos lógicos programáveis (PLDs, do inglês Programmable Logic Devices), juntamente com a teoria básica de eletrônica digital, permitem a implementação e a síntese de circuitos digitais que vão desde simples portas lógicas até os mais complexos sistemas digitais em um único chip. Um PLD é um circuito integrado que contém um grande número de portas, cujas interconexões podem ser modificadas pelo usuário para que execute uma função específica. A utilização de elementos de lógica programável aumenta a eficiência do projeto e reduz o tempo de seu desenvolvimento. Atualmente, a maioria dos circuitos digitais é implementada em lógica programável. Poucas das novas tecnologias de sistemas digitais usam circuitos digitais discretos; os dispositivos de lógica programável são os mais utilizados. Qualquer circuito lógico, independentemente de sua complexidade, pode ser representado por uma expressão booleana. Qualquer expressão booleana pode ser representada por um circuito lógico que utilize três portas lógicas básicas: AND, OR e NOT. Dessa forma, as expressões booleanas podem se dar na forma de soma de produtos ou de produto de somas. 3 1.1 PAL (Programmable Array Logic) A matriz lógica programável é o tipo mais simples de PLD. Ela representa fisicamente a estrutura que configura um circuito proveniente de uma expressão booleana na forma de soma de produtos. Assim, implementa circuitos combinacionais cujas saídas dependem apenas dos níveis lógicos em suas entradas. Figura 1 ‒ Estrutura de uma PAL As intersecções entre linhas e colunas são conexões programáveis no plano AND. As conexões são fixas nas portas OR. 1.2 PLA (Programmable Logic Array) Outra estrutura básica de PLD é a chamada PLA (Programmable Logic Array), em que tanto o plano AND quanto o plano OR são configuráveis. Estes são a primeira estrutura de um PLD desenvolvido, mas devido a problemas de complexidade, alto custo de fabricação e baixo desempenho, foram substituídos pelos elementos da estrutura PAL. 4 Figura 2 ‒ Estrutura de uma PLA Figura 3 ‒ Pequena área de conexões de hardware de dispositivos de lógica programável, em uma forma bem simplificada 5 De um modo geral, temos que cada intersecção entre uma linha (fio horizontal) e uma coluna (fio vertical) é uma conexão programável, sendo uma conexão conectada representada pelo nível lógico 1 e uma conexão não conectada representada pelo nível lógico 0. A ferramenta computacional utilizada para desenvolvimento é conhecida como EDA (Electronic Design Automation). Ela permite fazer a implementação, a simulação e a síntese de circuitos. Os projetos podem ser feitos de duas formas: 1. gráfico: diagrama esquemático; 2. texto: linguagem de descrição de hardware (HDL). TEMA 2 – FAMÍLIAS DE DISPOSITIVOS LÓGICOS PROGRAMÁVEIS Os PLDs (Programmable Logic Devices) estão dentro da família de circuitos integrados de aplicação específica (ASICs, do inglês Application Specific Integrated Circuits). Figura 4 ‒ Hierarquia simplificada dos sistemas digitais 6 2.1 SPLDs (Simple Programmable Logic Devices) PLAs (Programmable Logic Arrays): são os primeiros dispositivos lógicos programáveis simples, introduzidos pela Philips no início dos anos 1970. Possui planos AND e OR configuráveis, além de alto custo e baixo desempenho. PALs (programmable array logic): são uma evolução, com apenas o plano AND configurável, menor custo e maior desempenho. Arquiteturas PAL e PLA: baseadas em memória PROM (Programmable Read Only Memory) e, portanto, programáveis apenas uma vez. GAL (Generic Array Logic): tem arquitetura similar à da PAL; contudo, usa tecnologia CMOS, que tem menor consumo de energia, e memória EEPROM (Electrically-Erasable Programmable Read-Only Memory), que permite regravação, mas sua velocidade de operação é menor. Os SPLDs possuem baixa capacidade, em torno de 600 portas lógicas ou menos. 2.2 HCPLDs CPLD: dispositivos lógicos programáveis complexos que foram introduzidos pela Altera em 1983. Combinam uma série de dispositivos PAL (do tipo GAL) em um único chip. Possuem tecnologia CMOS de baixo consumo e permitem apagamento e reconfiguração em memória não volátil EEPROM. Possuem alta capacidade, a partir de 600 portas lógicas até dezenas de milhares, possibilitando uma integração em larga escala. Disponibilizam pinos de entrada e saída (I/O) de até 500 pinos, e permitem simulação, teste e depuração rápida em protótipos. macrocélula: os elementos PAL são associados a circuitos adicionais na saída, que constituem uma macrocélula. É, basicamente, um bloco lógico programável que consiste em um circuito AND/OR fixo e um registrador flip-flop, ambos programáveis; 7 Figura 5 ‒ Exemplo de estrutura de uma macrocélula LAB (Logic Array Block): blocos de arranjos lógicos, que compreendem um conjunto de macrocélulas; Figura 6 ‒ Estrutura de um LAB LUT (Look-Up Table)/LE (Logic Element): uma evolução da arquitetura de macrocélula do CPLD mais eficiente em área, que permite maior densidade. Sua capacidade é medida em elementos lógicos (LUT de 4 entradas + registrador). Um elemento lógico (LE) contém uma LUT de quatro entradas, um flip-flop para armazenamento e um MUX para controle interno. 8 Figura 7 ‒ Estrutura básica de um elemento lógico com LUT FPGA (Field Programming Gate Array): matriz de portas programáveis em campo, consiste em uma arquitetura de blocos lógicos configuráveis (CLBs, do inglês Configuration Logical Blocks) baseada em LUT. Uma LUT funciona como uma tabela verdade, no sentido de que a saída é programada para criar a função combinacional armazenando o 0 ou o 1 adequado a cada combinação de entrada. Na prática, a LUT é uma matriz baseada em SRAM de 16 palavras de 1 bit, usada para armazenar os níveis lógicos de saída desejados para uma função lógica simples. Algumas características do FPGA: • Possui tecnologia CMOS e sua configuração se dá em memória SRAM, que é volátil. • Possui maior capacidade que o CPLD, medida em LEs (logical elements, elementos lógicos), por exemplo: CPLDs vão até ~2K LEs; já FPGAs vão até ~100K LEs (LABs são um conjunto de LEs). • Disponibiliza pinos de entrada e saída (I/O) de até mais de 1000 pinos. • Permite simulação, teste, depuração e reconfiguração dinâmica (em tempo de execução). • Os blocos de entrada/saída (I/O) podem ser configurados para fornecer recursos de entrada, saída ou bidirecionais. Cada pino de I/O é conectado a um bloco lógico programável. Registradores internos são usados para guardar os dados que entram ou saem. 9 • Permite o uso de projetos complexos pré-definidos, chamados de blocos IP (intelectual property). Um exemplo de bloco IP é o processador embarcado Nios II. Em alguns casos, há uma taxa para uso de determinados blocos IP no projeto, mas é possível avaliar opções sem custo. A vantagem de utilizar um bloco IP é poder encurtar o tempo de desenvolvimentode um projeto. Figura 8 ‒ Estrutura simplificada de um FPGA TEMA 3 – LINGUAGEM DE DESCRIÇÃO DE HARDWARE 3.1 HDL (Hardware Description Language) O HDL (Hardware Description Language) descreve circuitos digitais. Para começar a desenvolver um projeto para um dispositivo de lógica programável existem duas formas: 1. utilizando editor gráfico por diagrama lógico/esquemático; 2. utilizando editor de texto por linguagem de descrição de hardware (HDL). O formato básico de qualquer descrição de circuito de hardware envolve dois elementos fundamentais: 1. definição e especificação de entradas e saídas; 2. definição de como as saídas respondem às entradas (operação). Um PLD (Programmable Logic Array) não é equivalente a um processador e, portanto, a HDL não é executada sequencialmente, mas de 10 forma concorrente, a princípio, pois o código descreve um circuito e não corresponde a uma sequência de instruções, apesar de ser possível definir regiões de código sequencial. 3.2 Linguagens AHDL (Altera Hardware Description Language): desenvolvida pelo fabricante de PLDs Altera, com sintaxe funcional apenas em seus dispositivos; Verilog: padrão IEEE 1364, é universal, e tem semelhanças com a linguagem C; VHDL (VHSIC1 Hardware Description Language): padrão IEEE 1076, é universal, além de mais utilizada e documentada. Nesta disciplina, focaremos o desenvolvimento de projetos com dispositivos FPGA utilizando a linguagem VHDL. A linguagem de descrição de hardware difere das linguagens de programação de software porque inclui um meio de descrever o tempo de propagação e a intensidade de sinais. Figura 9 ‒ A estrutura de um código VHDL. 1 Very High Speed Integrated Circuit. 11 TEMA 4 – SOFTWARE ALTERA QUARTUS II A ferramenta de projeto e simulação que utilizaremos nesta disciplina é o Quartus II 13.0 64-bit da Altera. Um projeto, a partir de sua especificação, seguido de sua implementação, pode seguir dois caminhos: compilação e simulação em ambiente de software; compilação total gerando arquivos de fabricação e gravação para teste em protótipo. Figura 10 ‒ Fluxograma simplificado das etapas de um projeto 4.1 Iniciando um novo projeto: File → New → New Quartus II Project É nessa etapa inicial que se especifica o nome do projeto, o nome da entidade e a família e/ou o modelo específico de dispositivo de lógica programável a ser utilizado. 12 Figura 11 ‒ Tela do software Quartus II com um novo projeto criado 4.2 Projeto com diagrama esquemático: File → New → Design files → Block diagram/schematic file Consiste no editor gráfico, em que é possível criar projetos utilizando elementos primitivos (portas lógicas) e outros componentes (macrofunções) existentes em bibliotecas. As conexões entre os componentes se dá por meio de fios ou barramentos. O formato do arquivo utilizado é .bdf. Figura 12 ‒ Tela do software Quartus II com um circuito em diagrama esquemático 13 4.3 Projeto em VHDL: File → New → Design files → VHDL file formato do arquivo: .vhd. Entity: deve ser o mesmo nome no projeto e no código .vhd. Figura 13 ‒ Tela do software Quartus II com a descrição de um circuito em VHDL 14 4.4 Simulação: File →New →Verification/debugging files →University program VWF Formato do arquivo: .vwf. Figura 14 ‒ Tela do software Quartus II com a tela de simulação da operação de um circuito 4.5 Compilação parcial : Processing → Start → Star analysis & synthesis Etapas da compilação parcial: Otimização lógica: minimização das equações booleanas. Mapeamento da tecnologia: conversão das expressões lógicas em células do dispositivo alvo. Detecção de possíveis erros. A síntese, na prática, permite a redução de área a ser ocupada no circuito integrado. 15 O mapeamento da tecnologia seleciona um conjunto de portas lógicas de uma dada biblioteca para implementar as representações abstratas. Com esse processo concluído já é possível simular o projeto. 4.6 Compilação total : Processing → Start compliation Etapas da compilação total: Análise e síntese (analysis & synthesis). Posicionamento e roteamento (fitter): o posicionamento é a atribuição de componentes particulares do circuito integrado aos componentes lógicos do projeto. O roteamento é a atribuição de trilhas e elementos programáveis que consomem os recursos disponíveis de interconexão para a comunicação entre os componentes. Montagem (assembler). Análise de temporização (timing analysis). 4.7 Programação do dispositivo : Tools → Programmer É o processo de gravação física do arquivo gerado no processo de montagem. O principal método utilizado é o da interface JTAG (joint test action group), padrão IEEE 1149.1. Esse padrão provê maneiras de assegurar a integridade de componentes individuais e as interconexões deles em placa de circuito impresso. Seus arquivos de gravação são: FPGA: .sof (SRAM object file); CPLD: .pof (programmer object file) TEMA 5 – KIT ALTERA CYCLONE II O kit FPGA com o dispositivo EP2C5T144C8N da família Cyclone II da Altera permite prototipagem e teste de projetos. 16 Figura 15 ‒ Visão de cima do kit FPGA Figura 16 ‒ Visão de baixo do kit FPGA 5.1 Acessórios Figura 17 ‒ Cabo de programação JTAG Figura 18 ‒ Fonte de energia 17 5.2 Características da placa Chip FPGA Cyclone II. Entrada de energia de 5VDC. Conector de programação JTAG. Oscilador de clock de 50mhz. Memória EEPROM de 4M bits. 3 leds indicadores configuráveis. 1 LED indicador de energia. 1 chave de reset. 4 conectores de 2x14 pinos. 5.3 Características do FPGA Encapsulamento: TQFP 144 pinos. Elementos lógicos (les): 4608. Blocos lógicos (labs): 288. Pinos de I/O: 89. Frequência máxima de clock: 320mhz. Suporta CPU embarcada NIOS II. FINALIZANDO Nesta aula, vimos os aspectos dos dispositivos de lógica programável, as famílias de dispositivos lógicos programáveis, a linguagem de descrição de hardware, a ferramenta de software para projeto e simulação e, por fim, detalhes do kit FPGA Cyclone II utilizado para prototipagem. O bom entendimento desta aula é fundamental para podermos dar continuidade ao estudo do conteúdo. 18 REFERÊNCIAS COSTA, C. Projetos de circuitos digitais com FPGA. 3. ed. São Paulo: Érica, 2014, capítulo 1. HELLER, L. F. Getting started with the EP2C5 Cyclone II Mini Board. Disponível em: <www.leonheller.com/FPGA/FPGA.html>. Acesso em: 22 de nov. 2017. TOCCI, R.; WIDMER, N. S. Sistemas digitais: princípios e aplicações. 11. ed. São Paulo: Pearson, 2011, capítulos 3 e 13.
Compartilhar