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

Post on 01-Apr-2019

231 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

top related