introdução à linguagem vhdl - inf.pucrs.brmoraes/fsd/aulas/05_introducao_ao_vhdl.pdf · 2...

27
1 Fundamentos de Sistemas Digitais profs. Alexandre M. Amory e Fernando G. Moraes Introdução à Linguagem VHDL 20/set/2018

Upload: trantruc

Post on 01-Apr-2019

231 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

1

Fundamentos de Sistemas Digitais

profs. Alexandre M. Amory e Fernando G. Moraes

Introdução à Linguagem VHDL

20/set/2018

Page 2: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

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.

Page 3: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

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

Page 4: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

4

Qual é o problema do esquemático ?!?!?

* Vahid

Page 5: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

5

Esquemático do PONG da Atari ?

Page 6: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

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

Page 7: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

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

Page 8: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

8

Biblioteca

Page 9: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

9

Exemplo de Descrição VHDL

Na prática não precisa de um par entidade-

arquitetura para uma and –and é comando primitivo

Page 10: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

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

Page 11: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

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

Page 12: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

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!

Page 13: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

13

Ambiente de Verificação

Geração de estímulose

Captura de saídas

Circuito(RTL)

Resultados Resultados esperados

Comparação

Testbench

Page 14: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

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

Page 15: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

15

Exemplo de Testbench para o Somador

Page 16: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

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

Page 17: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

17

TestBench para a porta E

Page 18: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

18

Exercício: VHDL à Porta Lógica

Page 19: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

19

Solução: VHDL à Porta Lógica

* Free range VHDL, pg 31

Page 20: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

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

Page 21: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

21

Expressão Booleana à VHDL

* Free range VHDL, pg 36

Page 22: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

22

Expressão Booleana à VHDL

* Free range VHDL, pg 36

Page 23: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

23

Expressão Booleana à VHDL

* Free range VHDL, pg 37

Page 24: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

24

Exercícios

Dados os esquemáticos abaixo, escreva o VHDL correspondente.

Page 25: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

25

Faça um Testbench para este Módulo

* Free range VHDL, pg 36

Page 26: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

26

Testbench com geração exaustiva de estímulos

0 1 2 3 4 5 6 7

Page 27: Introdução à Linguagem VHDL - inf.pucrs.brmoraes/fsd/aulas/05_Introducao_ao_VHDL.pdf · 2 Referências •Sugiro estudarem nesta ordem de preferência: •Vahid, Cap9 –Ignorar

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