introdução à linguagem vhdl - inf.pucrs.brmoraes/fsd/aulas/05_introducao_ao_vhdl.pdf · 2...
TRANSCRIPT
1
Fundamentos de Sistemas Digitais
profs. Alexandre M. Amory e Fernando G. Moraes
Introdução à Linguagem VHDL
20/set/2018
2
Referências
• Sugiro estudarem nesta ordem de preferência:• Vahid, Cap 9 – Ignorar verilog e SystemC
– Bem didático! um pouco incompleto !• Free Range VHDL
– Até sec 4.3, mais completo• D'AMORE, Roberto. VHDL: Descrição e Síntese de
Circuitos Digitais. Rio de Janeiro: LTC, 2005. 259 p.• PEDRONI, Volnei A. Eletrônica Digital Moderna e VHDL.
Elsevier Ltda. Editora, Rio de Janeiro, RJ: 2010. 619 p.– Cap 19
• Floyd. A Parte de VHDL está espalhada no livro, o que pode ser um pouco confuso.
3
ATENÇÃO
• Não se aprende alguma linguagem :– Escutando alguém explicar– Somente lendo livros
• Aprende praticando – Exercício EXTRA-CLASSE é FUNDAMENTAL !– Façam exercícios sugeridos e procurem outros nos livros indicados
4
Qual é o problema do esquemático ?!?!?
* Vahid
5
Esquemático do PONG da Atari ?
6
EntidadeINTERFACE EXTERNA: entity
– Especifica somente a interface entre o hardware e o ambiente– Não contém definição do comportamento ou da estrutura internos
Código VHDL da entidade:
A
B
Sum
Carry
7
COMPORTAMENTO : architecture– Especifica o comportamento e/ou a estrutura internos da entity
– Deve ser associada a uma entity específica
– Uma entity pode ter associada a si várias architecture(representando diferentes formas de implementar um mesmo módulo)
Arquitetura
Código VHDL da arquitetura:A B Sum Carry0 0 0 00 1 1 01 0 1 01 1 0 1
Tabela Verdade
8
Biblioteca
9
Exemplo de Descrição VHDL
Na prática não precisa de um par entidade-
arquitetura para uma and –and é comando primitivo
10
Expressões Lógicas
– Operadores nativos de VHDL:
• Operações lógicas: and, or, nand, nor, xor, not• Operações relacionais: =, /=, <, <=, >, >=• Operações aritméticas: - (unária), abs• Operações aritméticas: +, -• Operações aritméticas: *, /• Operações aritméticas: mod, rem, **• Concatenação: &
– Questão: o que a seguinte linha de VHDL realiza?X <= A <= B
Menor
PRIORIDADE
Maior
11
• Módulos compostos por sub-módulos (instâncias) conectados por sinais
– Na Figura acima, tem-se o módulo F (entity desenhada à esquerda), com entradas A e B e saída Y. A architecture de F desenhada como sendo composta pelos módulos G,H,I e pelos sinais internos s1 e s2. Note-se que G e H possuem a mesma entity (entradas X, T, e saída U), representando (G e H) duas instâncias distintas de um mesmo módulo de hardware.
• Em VHDL:
– Instâncias são denominadas component (componentes, com declaração opcional)
– Fios de interconexão: signal (sinais de um determinado tipo, tal como bit, integer, etc.)
– Para criar relação entre sinais e conectores das instâncias: comando port map
Uso de hierarquia: instanciação (1/3)
S2
S1
YA
BF
UX
TG
UX
TH
YM
NI
Y
A
B
F
12
Instanciações de módulos (lê-se ”pino” em ”sinal”)
Declaração daInterface Externa
Tflip_flop
CK Q
inversor A Y
Tflip_flop CK Q
contador clock q0
q1 ff1
ff0
inv_ff0
bit_0
bit_1 inv
Descrevendo circuitos lógicos com hierarquia (2/3)
ATENÇÃO AOS SINAIS INTERNOS!
13
Ambiente de Verificação
Geração de estímulose
Captura de saídas
Circuito(RTL)
Resultados Resultados esperados
Comparação
Testbench
14
• Uma forma simples de testar o projeto:testbenches– Na sua forma mais simples, um testbench consiste em um ou mais
“processos geradores de estímulos” e uma instância do projeto que se quer testar
– O testbench é construído como um módulo VHDL que não contém portas de entrada/saída. Ou seja, trata-se de um sistema fechado, ou autônomo
Simulação
A
B
Y
Z PROJETO
T
Z
A
D GERADOR DE ESTÍMULOS
TESTBENCH
15
Exemplo de Testbench para o Somador
16
Exemplo de Simulação da Descrição
aa – fio ligado no pino Abb – fio ligado no pino Bsoma - fio ligado no pino Sumvaium – fio ligado no pino Carry
aa <= '0', '1' after 10 ns, '0' after 20 ns, '1' after 30 ns;bb <= '0', '1' after 20 ns;
0000
1010
0110
17
TestBench para a porta E
18
Exercício: VHDL à Porta Lógica
19
Solução: VHDL à Porta Lógica
* Free range VHDL, pg 31
20
Ordem das atribuições (<=) é relevante?• VHDL é uma linguagem paralela, a ordem das atribuições
(processos, blocos) não é relevante.
The common mistake made by someone is to attempt to program in VHDL as they would program a higher-level computer language. Higher-level computer languages are sequential in nature; VHDL is not
* Free range VHDL, pg 5
21
Expressão Booleana à VHDL
* Free range VHDL, pg 36
22
Expressão Booleana à VHDL
* Free range VHDL, pg 36
23
Expressão Booleana à VHDL
* Free range VHDL, pg 37
24
Exercícios
Dados os esquemáticos abaixo, escreva o VHDL correspondente.
25
Faça um Testbench para este Módulo
* Free range VHDL, pg 36
26
Testbench com geração exaustiva de estímulos
0 1 2 3 4 5 6 7
27
Está correta a simulação?
F = L’. M’. N + L.M = ∑ (001, 110, 111) = ∑ (1, 6, 7)
Ou seja, a implementação está correta pois F3 está em ’1’ apenas nas condições especificadas pela função.
0 1 2 3 4 5 6 7