Buscar

Linguagens de descrição de hardware

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 61 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 61 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 61 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas Embarcados 
Engenharia Elétrica 
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 conhecemos: 
 Sentenças lógicas na nossa linguagem natural 
 Tabelas verdade 
 Símbolos lógicos tradicionais 
 Expressões de lógica booleana 
 Diagramas de tempo 
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. 
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. 
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. 
 
 
6 
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. 
7 
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) 
 
8 
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 
 
9 
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 
 
10 
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). 
11 
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. 
 
12 
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. 
 
13 
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 
(60 - 80 ns) para responder 
às mudanças nas entradas. 
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. 
 
14 
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. 
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. Definição do que entra e o do que sai (especificações de entrada e saída) 
2. Definição de como as saídas respondem às entradas (ou seja, operação) 
 
 
 
 
 
 
 HDL deve capaz de transmitir a mesma informação da operação. 
15 
Entradas Saídas Operação 
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) 
 Único 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 
16 
Síntese Lógica de Circuitos 
Etapas do Processo 
 
17 
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 
 
18 
DESCRIÇÃO BOOLEANA USANDO 
VHDL 
VHDL X Verilog 
 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 
 
20 
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 
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 
 
21 
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 
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 
 
22 
 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. 
 
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ÍSCULAS23 
 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. 
 
Variáveis separadas 
por vírgulas 
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 
 
24 
 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. 
 
(:) modo e tipo 
da variável de 
entrada 
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 
 
25 
 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. 
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 
 
26 
 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. 
 
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. 
27 
Sinais Intermediários em VHDL 
 SIGNAL define um 
sinal 
intermediário. 
 BIT define o tipo 
do sinal 
intermediário 
 
28 
Comentários em VHDL 
 Comentários são precedidos de dois traços (--) 
 Assim como no desenvolvimento de software, documentação é muito 
importante. 
 
29 
EXERCÍCIO 
30 
Ache o circuito lógico definido pelo código de HDL abaixo: 
EXERCÍCIO 
31 
Resposta do exercício anterior 
OUTRAS CONSIDERAÇÕES SOBRE A 
LINGUAGEM 
32 
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; 
 
33 
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 
34 
Exemplos: 
port ( RESULT : inout bit_vector(0 to 7); 
 Z : in bit; 
 EXTBUS : out bit_vector(4 downto 0); 
ARCHITECTURE .... 
. 
. 
. 
Signal x,y : bit 
Não há necessidade de definir a direção 
de sinais internos 
 35 
Comentários: 
Atribuição de Sinais 
 
36 
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 
 
37 
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 
38 
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. 
 
 
39 
 Quando é necessário uma sequência de eventos para 
modelar um comportamento, utiliza-se um processo 
(PROCESS). 
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 
 
40 
 Declarações dentro do process 
são concorrentes 
 Delimita uma região contendo 
código sequencial 
 Processos são contínuos e cíclicos 
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) 
 
41 
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 
 
42 
Teste utilizando IF 
Descrição Sequencial 
 
43 
Flip-flop : Process (D, CLK) 
begin 
 if rising_edge (CLK) then 
 Q <= D; 
 endif; 
end process Flip-flop; 
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; 
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; 
Formato 
Geral 
Teste utilizando CASE 
Descrição Sequencial 
 
44 
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; 
Teste utilizando When 
Descrição Concorrente 
 
45 
architecture conditional of mux2to1 is 
begin 
 z <= a when s = ‘1’ else b; 
end architecture conditional; 
Teste utilizando With 
Descrição Concorrente 
 
46 
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; 
Paralelismo de Processos (1) 
 
47 
Arquitetura 
Processo 1 
Processo 2 
Processo 3 
Processo 4 
Processo 5 
Paralelismo de Processos (2) 
 
48 
Alterando A, os 
processos P1 e P2 são 
executados em paralelo 
Paralelismo de Processos (3) 
 
49 
Alterando B, os 
processos P1 e P3 são 
executados em paralelo 
Paralelismo de Processos (4) 
 
50 
Alterando C, apenas o 
processo P2 é executado 
Comunicação entre Processos (1) 
 
51 
Processo P1 
Processo P2 
Processo P3 
Comunicação entre Processos (2) 
 
52 
Processo P1 
Processo P2 
Processo P3 
Comunicação entre Processos (3) 
 
53 
Evento em A 
Evento em D 
Evento em E 
Comunicação entre Processos (4) 
 
54 
Evento em D 
Comunicação entre Processos (5) 
 
55 
COMO SE APRENDE VHDL? 
56 
57 
Exercícios 
 Seção 3.17 
 Seção 3.18 
58 
IMPLEMENTAÇÃO DE CIRCUITOS 
LÓGICOS COM PLDS 
59 
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ávelpode 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. 
 
60 
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. 
 
61

Continue navegando