Eletrônica Digital II ELT013 Engenharia de Computação Aula 3 LINGUAGENS DE DESCRIÇÃO DE HARDWARE ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 2 Descrição de Circuitos Lógicos Os conceitos lógicos (se, então, OU, AND, NOT, etc) apesar de serem muitos familiares demandam muitos esforços para serem escritos. As razões para tais esforços podem ser resumidas como: Precisamos saber representar essas decisões lógicas Precisamos saber combinar essas funções lógicas e implementar um sistema de tomada de decisões Até o momento vocês conhecem: Sentenças lógicas na nossa linguagem natural Tabelas verdade Símbolos lógicos tradicionais Expressões de lógica booleana Diagramas de tempo ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 3 Exemplo (1) Se o motorista estiver presente E NÃO estiver usando o cinto E a ignição estiver acionada, ENTÃO, acenda a luz de advertência. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 4 Exemplo (2) Se o motorista estiver presente E NÃO estiver usando o cinto E a ignição estiver acionada, ENTÃO, acenda a luz de advertência. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 5 Importância da Descrição de Circuitos Lógicos Padroniza a comunicação entre os profissionais e fabricantes. Permite o surgimento de ferramentas de projeto, simulação e documentação e análise de circuitos lógicos. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 6 LINGUAGENS DE DESCRIÇÃO DE HARDWARE ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 7 Linguagens de Descrição de Hardware (1) Linguagens baseadas em texto para a descrição de circuitos digitais Nenhum dos métodos (tabelas verdade, símbolos lógicos tradicionais, expressões de lógica booleana e diagramas de tempo) é fácil de ser transmitido ao computador HDL – Linguagem de Descrição de Hardware. Permite que linguagens rigidamente definidas representem circuitos lógicos. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 8 Linguagens de Descrição de Hardware (2) Assim como existem várias linguagens de programação, existem várias linguagens de descrição de hardware. HDL – Hardware Description Language AHDL – Altera Linguagem de Descrição de Hardware. Desenvolvido por Altera para configurar dispositivos de lógica programável Altera (PLDs). Não se destina a ser utilizado como uma linguagem universal para descrever qualquer circuito lógico. VHDL – Linguagem de Descrição de Hardware de Velocidade Muito Alta. Desenvolvido pelo Departamento de Defesa Norte-Americano (DoD), padronizado pelo IEEE e amplamente utilizado para descrever projetos para dispositivos reais (1980). V → Very high speed intregated circuit (VHSIC) ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 9 Histórico do VHDL (1) Motivo do desenvolvimento: Necessidade de uma ferramenta de projeto e documentação projeto VHSIC do Departamento de Defesa dos Estados Unidos da América (DoD) 1981 DoD patrocina o 1o encontro de especialistas com o objetivo de discutir métodos para descrição de circuitos 1983 DoD define os requisitos de uma linguagem padrão Firmado contrato com IBM, Texas e Intermetrics objetivo: desenvolvimento da linguagem e programas ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 10 Histórico do VHDL (2) 1985 Apresentação da versão 7.2 Direitos autorais do manual transferidos para o IEEE (Institute of Electrical and Electronic Engineer) Incumbências do IEEE: Definir um padrão para linguagem Manter futuros desenvolvimentos (novas versões etc.) 1987 Após revisões propostas por acadêmicos, representantes de industrias e governo dos Estados Unidos Definido o padrão IEEE 1076-1987 ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 11 Histórico do VHDL (3) Após 1987 - Desenvolvidos os pacotes: IEEE 1164 std_logic_1164 IEEE 1076.3 numeric_std numeric_bit O que são pacotes (packages)? Local para armazenamento de informações de uso comum (novos tipos de dados, funções, etc). ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 12 Linguagem de Descrição versus Linguagem de Programação (1) É importante distinguir entre as linguagens de descrição de hardware e as linguagens de programação. Linguagens de programação Os computadores funcionam seguindo uma lista de tarefas, que devem ser realizadas em ordem sequencial. A velocidade de operação é determinada pela rapidez do computador para executar cada instrução. Circuito de lógica digital Velocidade é limitada apenas pela rapidez com que o circuito pode mudar as saídas em resposta a mudanças nas entradas. É possível monitorar todas as entradas simultaneamente e responder a quaisquer alterações. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 13 Linguagem de Descrição versus Linguagem de Programação (2) Comparação entre a operação de um computador e um circuito de lógica na execução da operação lógica y = AB. O computador deve executar um programa de instruções que toma decisões. Cada forma no fluxograma representa uma instrução. Se cada uma leva 20 ns, estima-se que irá demorar de duas a três instruções (40 - 60 ns) para responder às mudanças nas entradas. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 14 Linguagem de Descrição versus Linguagem de Programação (3) Comparação entre a operação de um computador e um circuito de lógica na execução da operação lógica y = AB. O circuito lógico é uma porta AND. A saída y será ALTO a partir de 10 nanossegundos do momento em que A e B são ALTO simultaneamente. Dentro de aproximadamente 10 nanossegundos após uma entrada se tornar BAIXO, a saída y será BAIXO. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 15 IMPLEMENTAÇÃO DE CIRCUITOS LÓGICOS COM PLDS ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 16 Implementação de Circuitos Lógicos com PLDs (1) PLDs são configurados eletronicamente. Seus circuitos internos são conectados eletricamente para formar um circuito lógico Essa fiação programável pode ser pensada como milhares de conexões, conectadas (1) ou não (0). Cada interseção de uma linha (fio horizontal) e coluna (fio vertical) é uma conexão programável. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 17 Implementação de Circuitos Lógicos com PLDs (2) A linguagem de descrição de hardware define as conexões a serem feitas. Carrega-se o dispositivo após a tradução por um compilador. A linguagem de alto-nível de descrição de hardware torna a programação de PLDs muito mais fácil, se comparada à álgebra booleana, aos desenhos esquemáticos ou às tabelas-verdade. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 18 Formato e Sintaxe do HDL (1) Qualquer linguagem possui propriedades únicas, similaridades com outras linguagens e sintaxe própria. O formato básico para qualquer linguagem de descrição de hardware envolve dois elementos fundamentais: 1. 2. Definição do que entra e o do que sai (especificações de entrada e saída) Definição de como as saídas respondem às entradas (ou seja, operação) Entradas Operação Saídas Esquemático é facilmente interpretado por qualquer engenheiro. HDL deve capaz de transmitir a mesma informação da operação. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 19 Formato e Sintaxe do HDL (2) Formato dos arquivos HDL O circuito que está sendo descrito deve receber um nome. Entradas e saídas (ports) devem ser nomeadas e definidas de acordo com a natureza (tipo) Uníco bit (botão, 0 ou 1) 4 bits de um teclado (00002 – 11112), etc. Port está em modo entrada ou saída ou bidirecional? Tipo Refere-se à como os bits são agrupados e interpretados ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 20 Síntese Lógica de Circuitos Etapas do Processo ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 21 Síntese Lógica de Circuitos Problemas VHDL não foi concebida para síntese de circuitos Logo nem todas construções da linguagem são suportadas na síntese Falta de correspondência entre construção e circuito real Exemplo: flip-flop com dois terminais de relógio - código pode ser simulado mas não existe o flip-flop Impossibilidade da síntese direta Exemplo: multiplicação de dois números reais - código pode ser simulado mas circuito muito complexo ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 22 Elaboração da Descrição Várias formas de descrição são possíveis com diferentes níveis de abstração O código inicial pode conter estruturas muito abstratas para síntese direta logo: Processo interativo permite atingir o grau de detalhamento necessário para síntese ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 23 Níveis de abstração Comportamental: Descrição utilizando construções de alto nível da linguagem Behavioral VHDL: VHDL comportamental RTL - Register Transfer Level: Descrição utilizando construções de Nível intermediário Nível de transferência de registradores descrito em termos do fluxo de sinais (ou transferência de dados entre os registradores presentes no hardware e as operações lógicas conduzidas com estes sinais) VHDL RTL é tudo que pode ser sintetizável Síntese dependente da forma de escrita e da ferramenta utilizada Gate Level: Nível de portas lógicas ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 24 Síntese da descrição Nível RTL Inferência das estruturas necessárias para gerar um circuito nível RTL Emprega primitivas da ferramenta de síntese(portas lógicas, somadores, comparadores etc.) Circuito nível RTL não é associado a nenhuma tecnologia ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 25 Síntese da descrição Nível Portas Novo circuito considerando a tecnologia empregada Emprega primitivas da tecnologia do hardware onde será embarcado o VHDL ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 26 Qual a vantagem do VHDL? Independência do dispositivo. Vários tipos de descrição. Portabilidade: Vários simuladores e ferramentas de síntese suportam a descrição VHDL. Rápido para gerar a descrição e baixo custo de desenvolvimento Código Fonte em VHDL Síntese A PLD A ELT013 - Eletrônica Digital II Síntese B PLD B Aula 3 - Linguagens de descrição de hardware Síntese C PLD C 27 DESCRIÇÃO BOOLEANA USANDO VHDL Descrição booleana usando VHDL A palavra-chave ENTITY dá um nome ao bloco de circuito, que, neste caso, é and_gate Variáveis nomeadas pelo projetista devem ser minúsculas Palavras-chave da linguagem devem ser MAÍSCULAS Descrição com 2 grandes blocos: Entidade (Entity) Responsável pela interface da descrição Arquitetura (Architecture) Responsável pela descrição do comportamento do circuito ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 29 Entity Interface com o mundo externo Especifica entradas, saídas e atrasos Ports Ports Entity ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 30 Descrição booleana usando VHDL A palavra-chave ENTITY dá um nome ao bloco de circuito, que, neste caso, é and_gate Variáveis nomeadas pelo projetista devem ser minúsculas Palavras-chave da linguagem devem ser MAÍSCULAS A palavra-chave PORT diz ao compilador que estamos definindo entradas e saídas para esse bloco de circuito. A descrição do BIT diz ao compilador que cada variável na lista é um bit único. A palavra-chave END encerra a declaração da ENTITY. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 31 Descrição booleana usando VHDL A palavra-chave ENTITY dá um nome ao bloco de circuito, que, neste caso, é and_gate Variáveis nomeadas pelo projetista devem ser minúsculas Palavras-chave da linguagem devem ser MAÍSCULAS A palavra-chave PORT diz ao compilador que estamos definindo entradas e saídas para esse bloco de circuito. A descrição do BIT diz ao compilador que cada variável na lista é um bit único. A palavra-chave END encerra a declaração da ENTITY. ELT013 - Eletrônica Digital II Variáveis separadas por vírgulas Aula 3 - Linguagens de descrição de hardware 32 Descrição booleana usando VHDL A palavra-chave ENTITY dá um nome ao bloco de circuito, que, neste caso, é and_gate Variáveis nomeadas pelo projetista devem ser minúsculas Palavras-chave da linguagem devem ser MAÍSCULAS A palavra-chave PORT diz ao compilador que estamos definindo entradas e saídas para esse bloco de circuito. A descrição do BIT diz ao compilador que cada variável na lista é um bit único. A palavra-chave END encerra a declaração da ENTITY. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware (:) modo e tipo da variável de entrada 33 Descrição booleana usando VHDL A palavra-chave ENTITY dá um nome ao bloco de circuito, que, neste caso, é and_gate Variáveis nomeadas pelo projetista devem ser minúsculas Palavras-chave da linguagem devem ser MAÍSCULAS A declaração ARCHITECTURE é usada para descrever o funcionamento de tudo dentro do bloco. ckt é o nome da descrição da arquitetura OF e IS são palavras-chave Descrição da operação está entra BEGIN e END. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 34 Descrição booleana usando VHDL A palavra-chave ENTITY dá um nome ao bloco de circuito, que, neste caso, é and_gate Variáveis nomeadas pelo projetista devem ser minúsculas Palavras-chave da linguagem devem ser MAÍSCULAS Cada ENTITY deve ter ao menos uma ARCHITECTURE associada a ela. Declaração (y) recebe por atribuição (<=) o nível lógico produzido por a AND b. Todas as declarações entre BEGIN e END são analisadas e atribuídas concorrentemente, não importando a ordem que estão listadas. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 35 Sinais Intermediários Em muitos projetos, é necessário definir pontos de sinal "dentro" do circuito de blocos Chamados nós internos ou sinais locais. São pontos do circuito que podem ser úteis como ponto de referência. Não são entradas nem saídas. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 36 Sinais Intermediários em VHDL SIGNAL define um sinal intermediário. BIT define o tipo do sinal intermediário ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 37 Comentários em VHDL Comentários são precedidos de dois traços (--) Assim como no desenvolvimento de software, documentação é muito importante. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 38 OUTRAS CONSIDERAÇÕES SOBRE A LINGUAGEM ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 39 Package Utilizado quando é necessário o uso de algo não definido nas bibliotecas do VHDL padrão. Utilizado por meio dos comandos library e use Ex: library IEEE; use IEEE.Std_Logic_1164.all; ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 40 Sinais Sinais representados por uma bit: BIT Sinais representados por um vetor : BIT_VECTOR A direção de um sinal pode ser: Entrada => input Saída => output Bidirecional => inout Exemplos: port ( RESULT : inout bit_vector(0 to 7); Z : in EXTBUS : out bit; bit_vector(4 downto 0); ARCHITECTURE .... Não há necessidade de definir a direção . . de sinais internos . Signal x,y : bit ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 41 Comentários: 42 Atribuição de Sinais ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 43 Alguns Operandos Lógicos Comparação and, or, nor, nand, xor,... Numéricos + * / ** abs rem mod etc... soma diferença multiplicação divisão expoente valor absoluto resto modulo ELT013 - Eletrônica Digital II = /= > < <= >= Aula 3 - Linguagens de descrição de hardware igual, diferente, maior do que, menor do que, menor ou igual, maior ou igual 44 Linguagem Concorrente (1) Descrição VHDL embora utilize código sequencial, modela circuitos que operam de forma concorrente Semelhante a montagem de um circuito em uma placa Ordem das declarações não importa ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 45 Linguagem Concorrente (2) Como o sinal A depende de B e B depende de C, os sinais são utilizados como em hardware, de forma concorrente. As declarações poderão ter ordem diferente sem afetar a sua funcionalidade. Quando é necessário uma sequência de eventos para modelar um comportamento, utiliza-se um processo (PROCESS). ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 46 Declaração PROCESS Objetivo: delimitar regiões de código sequencial Início: palavra reservada PROCESS Lista de sensibilidade: identifica que sinais ativam a execução do processo Declarações dentro do process são concorrentes Delimita uma região contendo código sequencial Processos são contínuos e cíclicos ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 47 PROCESS Lista de sensibilidade em processos Lista de sensibilidade: Define quais sinais causam a execução do processo Execução do processo ocorre se um sinal da lista tem valor alterado Iniciada a execução: Declarações são avaliadas na sequência Ao término da avaliação da última declaração o processo é suspenso (aguarda uma nova alteração de valor - sinais da lista) ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 48 Lista de sensibilidade em processos Exemplo Valores interfaces entrada a e b transferidos para interfaces de saída sa e sb. Unicamente sinal “a” na lista de sensibilidade Consequência: Alteração do valor em a: execução do processo → valores de a e b transferidos para sa e sb Alteração do valor em b: processo não é executado → valores de a e b mantidos ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 49 Teste utilizando IF Descrição Sequencial Flip-flop : Process (D, CLK) begin if rising_edge (CLK) then Q <= D; endif; end process Flip-flop; nome : Process (lista de sinais) begin if condição then atribuição elsif condição then atribuição else atribuição endif; end process Flip-flop; ELT013 - Eletrônica Digital II Flip-flop : Process (D, CLK,RST) begin if rst=1 then Q <= ‘0’; elsif rising_edge (CLK) then Q <= D; endif; end process Flip-flop; Aula 3 - Linguagens de descrição de hardware Formato Geral 50 Teste utilizando CASE Descrição Sequencial architecture estrutura of mux_case is begin mux: process(sel,A,B,C,D) begin case sel is when "00" => Y <= A; when "01" => Y <= B; when "10" => Y <= C; when "11" => Y <= D; when others => Y <= A; end case; end process; end; ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 51 Teste utilizando When Descrição Concorrente architecture conditional of mux2to1 is begin z <= a when s = ‘1’ else b; end architecture conditional; ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 52 Teste utilizando With Descrição Concorrente architecture sel of mux is begin with seletor select saida <= in0 when “00”, in1 when “01”, in2 when “10”, in3 when others; end architecture mux; ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 53 Paralelismo de Processos (1) Processo 1 Processo 2 Processo 3 Arquitetura Processo 4 Processo 5 ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 54 Paralelismo de Processos (2) Alterando A, os processos P1 e P2 são executados em paralelo ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 55 Paralelismo de Processos (3) Alterando B, os processos P1 e P3 são executados em paralelo ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 56 Paralelismo de Processos (4) Alterando C, apenas o processo P2 é executado ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 57 Comunicação entre Processos (1) Processo P1 Processo P2 Processo P3 ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 58 Comunicação entre Processos (2) Processo P1 Processo P2 Processo P3 ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 59 Comunicação entre Processos (3) Evento em A Evento em D Evento em E ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 60 Comunicação entre Processos (4) Evento em D ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 61 Comunicação entre Processos (5) ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 62 COMO SE APRENDE VHDL? ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 63 ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 64 Exercícios Seção 3.17 Seção 3.18 ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware 65