650 likes | 751 Views
Eletrônica Digital II ELT013. Engenharia de Computação. Aula 3. Linguagens de descrição de hardware. 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.
E N D
Eletrônica Digital IIELT013 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
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
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
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
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
Linguagens de Descrição de Hardware ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
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
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 DescriptionLanguage • 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 speedintregatedcircuit (VHSIC) ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
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 • DoDpatrocina o 1o encontro de especialistas com o objetivo de discutir métodos para descrição de circuitos • 1983 • DoDdefine 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
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
Histórico do VHDL (3) • Após 1987 - Desenvolvidos os pacotes: • IEEE 1164 std_logic_1164 • IEEE 1076.3 numeric_stdnumeric_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
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
Linguagem de Descrição versus Linguagem de Programação (2) 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. • 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. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
Linguagem de Descrição versus Linguagem de Programação (3) O circuito lógico é uma porta AND. A saíday 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íday será BAIXO. • 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. ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
Implementação de Circuitos Lógicos com PLDs ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
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
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
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: • 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) • Esquemático é facilmente interpretado por qualquer engenheiro. • HDL deve capaz de transmitir a mesma informação da operação. Saídas Entradas Operação ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
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
Síntese Lógica de CircuitosEtapas do Processo ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
Síntese Lógica de CircuitosProblemas • 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
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
Níveis de abstração • Comportamental: Descrição utilizando construções de alto nível da linguagem • Behavioral VHDL: VHDL comportamental • RTL - RegisterTransferLevel: 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
Síntese da descriçãoNí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
Síntese da descriçãoNí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
Qual a vantagem do VHDL? Código Fonte em VHDL Síntese A Síntese B Síntese C PLD A PLD B PLD C • 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 ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
Descrição booleana usando VHDL 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 • 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 ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
Entity Ports Ports Entity • Interface com o mundo externo • Especifica entradas, saídas e atrasos ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
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 esaídas para esse bloco de circuito. • A descrição do BIT dizaocompiladorquecadavariávelnalista é 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
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 esaídas para esse bloco de circuito. • A descrição do BIT dizaocompiladorquecadavariávelnalista é um bit único. • A palavra-chave END encerra a declaração da ENTITY. Variáveis separadas por vírgulas ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
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 esaídas para esse bloco de circuito. • A descrição do BIT dizaocompiladorquecadavariávelnalista é um bit único. • A palavra-chave END encerra a declaração da ENTITY. (:) modo e tipo da variável de entrada ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
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
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
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
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
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
Outras considerações sobre a linguagem ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
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
Sinais Exemplos: port( RESULT : inoutbit_vector(0 to 7); Z : in bit; EXTBUS : out bit_vector(4 downto 0); ARCHITECTURE .... . . . Signalx,y : bit Não há necessidade de definir a direção de sinais internos • 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 ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
Atribuição de Sinais ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
Alguns Operandos • Lógicos • and, or, nor, nand, xor,... • Numéricos • + soma • - diferença • * multiplicação • / divisão • ** expoente • abs valor absoluto • rem resto • mod modulo • etc... • Comparação • = igual, • /= diferente, • > maior do que, • < menor do que, • <= menor ou igual, • >= maior ou igual ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
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
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
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 • Processossão contínuos e cíclicos ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware
PROCESSLista 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
Lista de sensibilidade em processosExemplo • 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
Teste utilizando IFDescrição Sequencial nome : Process (lista de sinais) begin if condição then atribuição elsif condição then atribuição else atribuição endif; endprocess Flip-flop; Formato Geral Flip-flop : Process (D, CLK) begin ifrising_edge (CLK) then Q <= D; endif; endprocess Flip-flop; Flip-flop : Process (D, CLK,RST) begin ifrst=1 then Q <= ‘0’; elsifrising_edge (CLK) then Q <= D; endif; endprocess Flip-flop; ELT013 - Eletrônica Digital II Aula 3 - Linguagens de descrição de hardware