Top Banner
 FACULDADE DE ENGENHARIA DEPARTAMENTO DE ENGENHARIA EL ´ ETRICA LINGUAGEM DE DESCRI ¸ C ˜ AO DE HARDWARE VHDL PROF. JULIANO D’ORNELAS BENFICA Porto Alegre 2009
54

APOSTILA DE VHDL - JULIANO BENFICA - Versão 3

Jul 21, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

FACULDADE DE ENGENHARIA DEPARTAMENTO DE ENGENHARIA ELETRICA

LINGUAGEM DE DESCRICAO DE HARDWARE

VHDLPROF. JULIANO DORNELAS BENFICA

Porto Alegre 2009

Sumrio a

1 Introduo ca 1.1 1.2 1.3 O que VHDL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e O que Signica VHDL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vantagens e Desvantagens . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 5 5 5 7 8 8 9

2 Estrutura de um Programa em VHDL 2.1 ENTITY (Entidade) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 2.1.2 2.1.3 Tipos de Portas: . . . . . . . . . . . . . . . . . . . . . . . . . . . . Tipos de Sinais . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Intervalos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 11

3 Tipos de Dados 3.1

Constantes e Variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 a 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 Constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 Variveis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 a Sinais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Exemplos de Atribuioes . . . . . . . . . . . . . . . . . . . . . . . . 13 c Tipo Escalares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 Tipo Inteiros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Tipo Ponto Flutuante . . . . . . . . . . . . . . . . . . . . . . . . . 15 Tipos F sicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Tipo Enumeraao . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 c

3.1.10 Tipos Compostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.1.11 Cometrio em VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . 21 a 4 Operadores e Expresses o 4.1 22

Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 Operadores Lgicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 o Operadores Numricos . . . . . . . . . . . . . . . . . . . . . . . . . 23 e Operadores Relacionais . . . . . . . . . . . . . . . . . . . . . . . . . 24 Operadores de Deslocamento . . . . . . . . . . . . . . . . . . . . . . 25 Operadores de Concatenaao . . . . . . . . . . . . . . . . . . . . . . 27 c

4.2

Representao de Nmeros e Caracteres . . . . . . . . . . . . . . . . . . . 27 ca u 4.2.1 4.2.2 4.2.3 4.2.4 4.2.5 4.2.6 Nmeros Inteiros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 u Nmeros Reais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 u Bases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Caracteres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Strings de Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 31

5 Estruturas e Comandos em VHDL 5.1 5.2 5.3 5.4 5.5 5.6

Comando IF-THEN-ELSIF-ELSE . . . . . . . . . . . . . . . . . . . . . . . 31 Comando WAIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

Comando CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Comando WHILE-LOOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Comando WHILE-FOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Comando EXIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.6.1 Estrutura Loop com Sa Forada por Exit . . . . . . . . . . . . . 38 da c

5.7

Comando NEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

5.7.1

Estrutura Loop com Rein Forado por Next . . . . . . . . . . . 40 cio c 42

6 Funoes e Procedimentos c 6.1 6.2

Funoes em VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 c Procedimentos em VHDL . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 6.2.1 6.2.2 Procedimentos com Parmetros em VHDL . . . . . . . . . . . . . . 45 a Procedimentos com Parmetros e Retornos em VHDL . . . . . . . . 47 a 50

7 Converso de Tipos a 7.1 7.2 7.3 7.4 7.5

STD LOGIC para BIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 STD LOGIC VECTOR para BIT VECTOR . . . . . . . . . . . . . . . . . 50 BIT VECTOR para STD LOGIC VECTOR . . . . . . . . . . . . . . . . . 51 PARA INTEGER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 PARA STD LOGIC VECTOR . . . . . . . . . . . . . . . . . . . . . . . . 52 54

8 Bibliograa

5

1

Introduo ca

1.1

O que VHDL? e

VHDL uma forma de se descrever, atravs de um programa, o comportamento de e e um circuito ou componente digital.

1.2

O que Signica VHDL?

Very High Speed Integrated Circuit Hardware Decription Language Linguagem de Descrio de Hardware com nfase em Circuitos ca e Integrados de altssima velocidade. 1.3 Vantagens e Desvantagens

Vantagens de se utilizar VHDL: Projeto independente da tecnologia; Recongurao parcial e dinamica; ca

6

Intercambio de projetos entre grupos de pesquisa; Reduz tempo de projeto; Aumento da performance; Fabricao direta de um circuito integrado. ca Desvantagens de se utilizar VHDL: Hardware gerado menos otimizado. e

7

2

Estrutura de um Programa em VHDL

A estrutura de um programa VHDL, baseia-se em 4 blocos: PACKAGE Onde sao declarados as constantes, tipos de da dos, sub-programas; ENTITY Onde sao declarados os pinos de entrada e sada; ARCHITECTURE Onde sao denidas as implementaes co do projeto; CONFIGURATION Onde sao denidas as arquiteturas que serao utilizadas. Abaixo esta representado a estrutura de um programa descrito em VHDL:

8

Figura 1: Estrutura de um Programa em VHDL

2.12.1.1

ENTITY (Entidade)Tipos de Portas:

IN - Porta de entrada. No pode receber atribuio de valor dentro a cado programa; OUT - Porta de sa da. No pode ser utilizado como entrada para a outro circuito; BUFFER - Porta de sa que pode ser atualizada por mais de uma da fonte; LINKAGE - O valor da porta pode ser lido e atualizado.

Exemplo:

9

Entity is port ( sinal_controle : in ; parcela_1 : in ; parcela_2 : out ); end ;

2.1.2

Tipos de Sinais

=> bit, bit vector, std logic, std logic vector, boolean, real. BIT - Assume valor 0 ou 1. Ex: x : in bit; BIT VECTOR - vetor de bits. Ex: x : in bit vector(7 downto 0); ou x : in bit vector(0 to 7); STD LOGIC - Assume os valores: U: No inicializado. a X: Sem valor determinado (Dont Care). 0: N lgico 0. vel o 1: N lgico 1. vel o Z: Alta Impedncia (TRI-STATE). a W: Sinal fraco, no pode-se armar se deve ser 0 ou 1. a

10

L: Sinal fraco que provavelmente ir para 0. a H: Sinal fraco que provavelmente ir para 1. a -: Dont care. STD LOGIC VECTOR - Vetor de bits. Ex: x : in std logic vector(7 downto 0); Integer - Assume valores inteiros decimais. Ex: x : integer range 0 to 100; Boolean - Assume valores true ou false (verdadeiro ou falso). Ex: x : out boolean; Real - Assume valores decimais em ponto utuante, sempre com ponto decimal. Ex.: -3.2, 4.56, 6.0, -2.3E+2.

2.1.3

Intervalos

Permite determinar um intervalo de utilizao dentro de um ca determinado tipo. range to range downto

11

3

Tipos de Dados

3.1

Constantes e Variveis a

Ambos os tipos constantes e variaveis devem ser denidas antes de serem utilizadas na descrio VHDL. Os elementos do tipo conca stante nao podem ser sobrescritos, enquanto que os do tipo variavel podem ser alterados a qualquer momento.3.1.1 Constantes

A declarao de uma constante feita atravs do uso da palavraca e e chave constant, como nos exemplos: constant valor de pi : real := 3.141592653; constant ativado : bit := 1; constant atraso : time := 5ns;3.1.2 Variveis a

A declarao de variaveis segue a mesma estrutura, utilizando ca a palavra-chave variable. Uma variavel pode ser iniciada com

12

algum valor prvio na sua declarao, o qual ira manter at que e ca e seja feita a primeira escrita. OBS: Uma variable pode ser considerada como uma varivel local, ou seja, s pode ser acessado por um a o processo local. E deve ser declarada entre o Process e o Begin A seguir, alguns exemplos: variable numero de contagens : integer := 50; variable liga saida1 : bit; (sem inicializao) ca variable liga saida1 : bit:=0; (com inicializao) ca variable tempo medida : time := 0ns; As atribuies em VHDL para constantes e variaveis sao feitas co com o operador :=3.1.3 Sinais

Um sinal (signal) utilizado para interligao de blocos em e ca VHDL, funcionando de maneira similar a uma variavel. O sinal traz porm a capacidade de permitir a ligao (ao ser ligado a uma e ca porta de entrada e sada) ou troca de valores (quando opera com variaveis internas) entre blocos funcionais distintos. As atribuies de sinais em VHDL feita normalmente com o co e

13

operador 0, 5 =>0, 6 =>1,7 =>1); variable display2: 7 segm := ( 1 =>1, 2 to 5 => 0; 6 to 7 =>1); variable display3: 7 segm := ( 1 | 6 | 7 => 1, 2 to 5 => 0); variable display4: 7 segm := ( 1 | 6 | 7 => 1, others => 0);3.1.11 Cometrio em VHDL a

O comentario em VHDL dado por - - na frente do comentario. e

22

4

Operadores e Expresses o

4.14.1.1

OperadoresOperadores Lgicos o

Figura 2: Tabela de Operadores Lgicos em VHDL. o

23

4.1.2

Operadores Numricos e

Figura 3: Tabela de Operadores Numricos em VHDL. e

Exemplos de uso dos operadores numricos: e

24

Figura 4: Tabela de Operadores Numricos em VHDL. e

4.1.3

Operadores Relacionais

Figura 5: Tabela de Operadores Relacionais em VHDL.

25

4.1.4

Operadores de Deslocamento

Figura 6: Tabela de Operadores de Deslocamento em VHDL.

Exemplos: sll - shift left logical 01101001 => 11010010 (acrescenta 0 no bit - sign.) srl - shift right logical 01101001 => 00110100 (acrescenta 0 no bit + sign.) sla - shift left arithmetic 01101001 => 11010011 (repete o bit sign.) sra - shift right arithmetic 01101001 => 00110100 (repete o bit + sign.) rol - rotate left logical 01101001 => 11010010 (desloca todos bits para esq.) ror - rotate right logical 01101001 => 10110100 (desloca todos

26

bits para dir.)

27

4.1.5

Operadores de Concatenao ca

Esta operao consiste em criar um novo vetor a partir de dois ca vetores ja existentes, por exemplo: dado1 : bit vector(0 to 7); [01011011] dado2 : bit vector(0 to 7); [11010010] novo dado : bit vector(0 to 7); novo dado saida when "100" => saida