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
Download

Linguagens de Descrição de Hardware – ELT013ECO2013