Aula 3 – Linguagens de Descrição de Hardware – ELT013ECO2013
Download
Report
Transcript Aula 3 – Linguagens de Descrição de Hardware – ELT013ECO2013
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