Sie sind auf Seite 1von 62

Linguagem VHDL: Introduo

Leandro Schwarz

Sumrio

Introduo; Projeto de Lgica Reconfigurvel; A Linguagem VHDL; Palavras Reservadas; Tipos de Dados; Operadores; Atributos; Bibliotecas.

Introduo

Introduo

Criado em 1981 pelo Departamento de Defesa dos Estados Unidos; uma linguagem para descrio de hardware; Empregada para modelagem de circuitos lgicos digitais; Dois padres:

IEEE 1164; IEEE 1073.6.

Introduo

Linguagem de programao:

Cada comando interpretado por um elemento lgico e depois processado;

Linguagem de descrio:

Cada comando transformado em um elemento lgico que ser fisicamente implementado no dispositivo.

Introduo

Linguagem de programao:

Apenas um comando de um conjunto de comandos processado a cada vez e na ordem em que foram escritos;

Linguagem de descrio:

Todos os comandos so processados concorrentemente, logo, a ordem de descrio dos comandos irrelevante.

Projeto de Lgica Reconfigurvel

Projeto de Lgica Reconfigurvel


Especificao Descrio VHDL Compilador Simulador VHDL Ferramenta de Sntese Rede de Ligaes Ferramenta de Posicionamento & Interligao Construo

A Linguagem VHDL

A Linguagem VHDL

Design entity;

O design entity uma descrio em VHDL que pode representar desde um componente simples at um projeto completo. dividido em duas partes:

Entidade define a interface entre o dispositivo e o meio exterior, como por exemplo, entradas e sadas; Arquitetura contem a especificao das relaes entre as entradas e sadas de uma entidade.

A Linguagem VHDL
Design Entity Descreve as entradas e sada do elemento lgico

Entidade

Arquitetura Descreve a interface das entradas e sadas com o meio exterior

A Linguagem VHDL

Declarao de uma entidade;


: INTEGER := 5); : IN tipo_a; : OUT tipo_b; : BUFFER tipo_c; : INOUT tipo_d);

ENTITY entidade_abc IS GENERIC (CONSTANT n PORT ( SIGNAL X0, X1 SIGNAL Y0, Y1 SIGNAL Y2 SIGNAL Z0, Z1 END ENTITY entidade_abc;

A Linguagem VHDL

Declarao de uma entidade;

ENTITY entidade_abc IS A declarao da entidade com a palavra GENERIC (CONSTANT n se inicia : INTEGER := 5); ENTITY e finaliza com a palavra END ENTITY. O PORT ( SIGNAL X0, X1 : IN tipo_a; nome da entidade deve ser o mesmo no incio e no SIGNAL Y0, Y1 : OUT final. A palavra IS introduz a listagem das tipo_b; caractersticas da entidade. No: esquecer SIGNAL Y2 BUFFERo ponto tipo_c; e vrgula ao final. Na verso 1993 da VHDL, a SIGNAL Z0, Z1 no: INOUT palavra ENTITY ao final necessria. tipo_d); END ENTITY entidade_abc;

A Linguagem VHDL

Declarao de uma entidade;

ENTITY entidade_abc IS GENERIC (CONSTANT n : INTEGER := 5); PORT ( SIGNAL X0, X1 : IN tipo_a; A clusula GENERIC permite a passagem de informaes estticas para a entidade, parametrizao de SIGNAL Y0,com Y1 fins de : OUT tipo_b; valores, no caso, definiu-se uma constante chamada n SIGNAL Y2valor igual : BUFFER do tipo inteira e com a 5. A palavra tipo_c; CONSTANT subentendida necessria. tipo_d); SIGNAL Z0, Z1 e no : INOUT END ENTITY entidade_abc;

A Linguagem VHDL

subentendida ENTITY entidade_abc IS e no necessria. GENERIC (CONSTANT : INTEGER := 5); sadas Exclusivamente entradas n Exclusivamente PORT ( SIGNAL X0, X1 : IN tipo_a; SIGNAL Y0, Y1 : OUT tipo_b; Sada que SIGNAL Y2 : BUFFER tipo_c; pode controlar sinais internos SIGNAL Z0, Z1 : INOUT tipo_d); da entidade END ENTITY entidade_abc;
Entrada ou sada de dados, teis para barramentos

A clusula PORT descreve o modo e o tipo dos sinais de Declarao de uma entidade; entrada e sada da entidade. A palavra SIGNAL

A Linguagem VHDL
Entrada IN entidade_abc Sada OUT

Bidirecional INOUT

BUFFER

A Linguagem VHDL

Declarao de uma arquitetura;

ARCHITECTURE arquitetura_abc OF entidade_abc IS -- declarao de sinais e constantes -- declarao de componentes referenciados -- declarao de novos tipos de dados -- declarao e corpo de novos subprogramas BEGIN -- comandos concorrentes END ARCHITECTURE arquitetura_abc;

A Linguagem VHDL
Declarao de uma arquitetura;
ARCHITECTURE arquitetura_abc OF entidade_abc IS -- declarao e constantes A declaraode da sinais arquitetura se inicia com a palavra ARCHITECTURE, requer tambm um marcador BEGIN e -declarao de componentes referenciados finaliza com a palavra END. O nome da arquitetura permite se definir vrios tipos comportamentos -- declarao de novos de dados para uma mesma entidade. A entidade citada deve ter sido -- definida declarao e corpo de novos subprogramas atravs do comando ENTITY. No esquecer o ponto e vrgula ao final. A palavra ARCHITECTURE pode BEGIN ser omitida ao final na verso VHDL 1993. -- comandos concorrentes END ARCHITECTURE arquitetura_abc;

A Linguagem VHDL
Abaixo do de ARCHITECTURE e entes do BEGIN so Declarao uma arquitetura; definidas as constantes, sinais, componentes, tipos ARCHITECTURE arquitetura_abc OF entidade_abc de dados e demais subprogramas.

IS

-- declarao de sinais e constantes -- declarao de componentes referenciados -- declarao de novos tipos de dados -- declarao e corpo de novos subprogramas BEGIN Os comentrios em VHDL iniciam aps dois sinais -- comandos concorrentes de menos seguidos e sem espao, e valem at o final da linha. END ARCHITECTURE arquitetura_abc;

A Linguagem VHDL
so definidos os comandos serem ARCHITECTURE arquitetura_abc OF a entidade_abc IS Lembre-se que os comandos --executados. declarao de sinais e constantes so executados concorrentemente, ou -- declarao de componentes referenciados seja, em paralelo. -- declarao de novos tipos de dados -- declarao e corpo de novos subprogramas BEGIN -- comandos concorrentes END ARCHITECTURE arquitetura_abc;

Declarao de uma BEGIN arquitetura; Entre a clusula e a clusula END

A Linguagem VHDL
Pode-se definir mais de uma arquitetura para uma mesma entidade.
ENTITY comb IS PORT ( E0, E1 : IN BIT; S0 : OUT BIT); END comb; ARCHITECTURE nao_e1 OF comb IS BEGIN S0 <= E0 NAND E1; END nao_e1;

Uma arquitetura pode ser projetada para ser mais rpida e outra para ocupar menos recursos.

ARCHITECTURE nao_e2 OF comb IS BEGIN S0 <= NOT E0 OR NOT E1; END nao_e2;

A Linguagem VHDL

Constantes, variveis e sinais;


Constante (CONSTANT) um objeto com valor esttico; Varivel (VARIABLE) um objeto cujo valor inicial pode ser alterado no decorrer do cdigo. utilizado em regies de cdigo sequencial; Sinal (SIGNAL) um objeto cujo valor inicial pode ser alterado no decorrer do cdigo. utilizado em regies de cdigo concorrente e sequencial; H um outro objeto chamado arquivo (FILE), o qual ser estudado futuramente.

A Linguagem VHDL

Declarao de constantes, variveis e sinais;


: tipo; : tipo := valor_inicial; : tipo := valor_inicial; : tipo; : tipo := valor_inicial; : tipo := valor_inicial; : tipo; : tipo := valor_inicial; : tipo := valor_inicial;

CONSTANT constante_a CONSTANT constante_b CONSTANT constante_c, constante_d VARIABLE variavel_a VARIABLE variavel_b VARIABLE variavel_c, variavel_d SIGNAL sinal_a SIGNAL sinal_b SIGNAL sinal_c, sinal_d, sinal_e

A Linguagem VHDL

Declarao de constantes, variveis e sinais;


: tipo; : tipo := valor_inicial; sem valor inicial : tipo := valor_inicial;

CONSTANT constante_a CONSTANT constante_b Declarao de uma constante CONSTANT constante_c, constante_d VARIABLE variavel_a VARIABLE variavel_b de uma varivel Declarao VARIABLE variavel_c, variavel_d

: tipo; : tipovalor := valor_inicial; sem inicial : tipo := valor_inicial;

SIGNAL sinal_a : tipo; SIGNAL sinal_b : tipo := valor_inicial; Declarao de um sinal sem valor inicial SIGNAL sinal_c, sinal_d, sinal_e : tipo := valor_inicial;

A Linguagem VHDL

Declarao de constantes, variveis e sinais;


: tipo; : tipo := valor_inicial; : tipo := valor_inicial; com valor inicial

CONSTANT constante_a CONSTANT constante_b CONSTANT constante_c, constante_d Declarao de uma constante VARIABLE variavel_a VARIABLE variavel_b VARIABLE variavel_c, de variavel_d Declarao uma varivel

: tipo; : tipo := valor_inicial; : tipovalor := valor_inicial; com inicial

SIGNAL sinal_a : tipo; SIGNAL sinal_b : tipo := valor_inicial; SIGNAL sinal_c, sinal_d, sinal_e : tipo := valor_inicial; Declarao de um sinal com valor inicial

A Linguagem VHDL

Declarao de constantes, variveis e sinais;

CONSTANT constante_a : tipo; Declarao de mltiplas constantes com valor inicial CONSTANT constante_b : tipo := valor_inicial; CONSTANT constante_c, constante_d : tipo := valor_inicial; VARIABLE variavel_a : tipo; Declarao de mltiplas variveis: com inicial VARIABLE variavel_b tipo :=valor valor_inicial; VARIABLE variavel_c, variavel_d : tipo := valor_inicial; SIGNAL sinal_a : tipo; Declarao de mltiplos sinais com inicial SIGNAL sinal_b : tipo valor := valor_inicial; SIGNAL sinal_c, sinal_d, sinal_e : tipo := valor_inicial;

A Linguagem VHDL

Atribuio para variveis e sinais;


Atribui-se valor para variveis atravs do delimitador dois pontos igual (:=).

variavel_a := sinal_1; variavel_b := variavel_1; variavel_c := constante_1; sinal_a <= sinal_1; sinal_b <= variavel_1; sinal_c <= constante_1;

Atribui-se valor para sinais atravs do delimitador menor igual (<=).

A Linguagem VHDL

Declarao de uma descrio completa;


: IN : OUT INTEGER; INTEGER);

ENTITY atrib_1 IS PORT ( x1 y1, z1 END atrib_1;

ARCHITECTURE teste OF atrib_1 IS SIGNAL s1 : INTEGER; CONSTANT c1 : INTEGER := 7; BEGIN y1 <= s1; s1 <= x1; z1 <= c1; END teste;

A Linguagem VHDL

Declarao de uma descrio completa;


: IN : OUT INTEGER; INTEGER);

ENTITY atrib_1 IS PORT ( x1 y1, z1 END atrib_1;

ARCHITECTURE teste OF atrib_1 IS SIGNAL s1 : INTEGER; CONSTANT c1 : INTEGER := 7; BEGIN y1 <= s1; s1 <= x1; z1 <= c1; END teste;

A entidade declara que o elemento possui trs portas de 32 bits (INTEGER), sendo uma de entrada e duas de sada.

A Linguagem VHDL

Declarao de uma descrio completa;

ENTITY atrib_1 IS A sada y1 receber o sinal s1. Este, por sua vez, ser a PORT ( x1 Uma vez : IN que INTEGER; entrada x1. os comandos so executados y1, z1 : OUT INTEGER); concorrentemente, logo, y1 ser o prprio x1. END atrib_1; z1 receber a constante c1 e ser sempre igual a 7. A sada ARCHITECTURE teste OF atrib_1 IS SIGNAL s1 : INTEGER; CONSTANT c1 : INTEGER := 7; BEGIN A arquitetura define ainda y1 <= s1; mais um sinal e uma s1 <= x1; constante, ambos de 32 bits z1 <= c1; que sero utilizados END teste; internamente na arquitetura.

Palavras Reservadas

Palavras Reservadas

Definio;

Palavras reservadas so palavras que fazem parte de funes, comandos e instrues especficas da linguagem e que no devem ser utilizadas para nomenclatura de entidades, sinais e afins; Uma lista com as palavras reservadas da linguagem VHDL demonstrada a seguir.

Palavras Reservadas
ABS AND BEGIN CASE DOWNTO EXIT GENERIC IN LABEL MOD ACCESS ARCHITECTURE BLOCK COMPONENT ELSE FILE GUARDED INERTIAL LIBRARY NAND AFTER ARRAY BODY CONFIGURATION ELSIF FOR GROUP INOUT LINKAGE NEXT ALIAS ASSERT BUFFER CONSTANT END FUNCTION IF IS LOOP NEW ALL ATTRIBUTE BUS DISCONNECT ENTITY GENERATE IMPURE LITERAL MAP NOR

Palavras Reservadas
NOT OR POSTPONED RECORD RETURN SHARED SRL TYPE VARIABLE XOR NULL OTHERS PROCEDURE REGISTER ROL SIGNAL SUBTYPE UNAFFECTED WAIT XNOR OF OUT PROCESS REJECT ROR SLA THEN UNITS WHEN ON PACKAGE PURE REM SELECT SLL TO UNTIL WHILE OPEN PORT RANGE REPORT SEVERITY SRA TRANSPORT USE WITH

Tipos de Dados

Tipos de Dados

Definio

Os tipos de dados so caracterizados por um conjunto de valores e um conjunto de funes; Objetos SIGNAL, VARIABLE e CONSTANT devem ser declarados com um tipo de dados especfico para que se defina quais faixas de valores e quais operaes estes podem gerenciar.

Tipos de Dados
TIPOS

SCALAR

COMPOSITE

ENUMERATED

INTEGER

FLOATING POINT

PHYSICAL

ARRAY

BIT

BOOLEAN

CHARACTER

INTEGER

REAL

TIME

BIT_VECTOR

STRING

Tipos de Dados

Valores

BIT utilizado para representar nveis lgicos alto 1 e baixo 0 de uma linha digital; BOOLEAN utilizado para definir TRUE ou FALSE em comandos que executam deciso; CHARACTER utilizado para armazenar um caractere padro ASCII na verso VHDL-1987 ou no padro ISO8859-1 na verso VHDL-1993.

Tipos de Dados

Valores (cont.)

INTEGER representa um nmero inteiro de 32 bits (-2.147.483.648 a 2.147.483.647). O subtipo POSITIVE restringe os valores faixa dos nmeros maiores que zero. O subtipo NATURAL restringe os valores faixa dos nmeros maiores ou iguais a zero; REAL utilizado quando se necessita de nmeros com ponto flutuante. Normalmente no so suportados pelas ferramentas de sntese.

Tipos de Dados

Valores (cont.)

TIME um tipo fsico empregado para representar quantidades fsicas mltiplas da base fs. Os tipos fsicos no so suportados pelas ferramentas de sntese e os intervalos de tempo definidos so ignorados; As unidades numricas podem ser definidas em base decimal (123) ou em qualquer base numrica seguindo o padro BASE#VALOR#, por exemplo: 16#7B#, 8#173#, 2#1111011#.

Tipos de Dados

Valores (cont.)

A incluso do caractere _ pode ser feita para facilitar a leitura, portanto, os valores podem ser expressos da seguinte forma:

7845367 2#110110101# 16#1FFABC#

ou ou ou

7_845_367; 2#1_1011_0101#; 16#1FF_ABC#.

Tipos de Dados
TIPO
BIT BOOLEAN CHARACTER INTEGER NATURAL POSITIVE REAL

VALOR
0, 1 verdadeiro ou falso caracteres ASCII -231 x 231 - 1 0 x 231 - 1 1 x 231 - 1 -3,65e47 x 3,65e47 ps=103fs, ns=103ps, us=103ns, ms=103us, sec=103ms, min=60sec, hr=60min

EXEMPLO
0, 1 TRUE, FALSE A, b, a, C, ?, 123, 8#173#, 16#A5#, 2#1101#, 2#11_01# 1.23, 1.23E+2, 16#7.B#E+1 1 us, 100 ps, 1 fs

TIME

Tipos de Dados

Valores (cont.)

BIT_VECTOR um vetor de elementos do tipo BIT; STRING um vetor de elementos do tipo CHARACTER; Os vetores podem ser enumerados em ordem crescente atravs da diretiva TO ou em ordem decrescente atravs da diretiva DOWNTO.

Tipos de Dados
Valores (cont.) SIGNAL a : BIT_VECTOR(0 TO 7) := 10110011; SIGNAL b : BIT_VECTOR(7 DOWNTO 0) := 10110011;

CONSTANT c: STRING(1 TO 5) := teste; VARIABLE d: STRING(5 DOWNTO 1) := teste;

Tipos de Dados

Transferncia de dados entre vetores


A transferncia de dados entre vetores feita entre elementos de mesmo ndice; Portanto, mesmo se um vetor a definido como a(0 TO 7) e outro vetor definido como b(7 DOWNTO 0), correta a transferncia a <= b.

Tipos de Dados

Transferncia de dados entre vetores

Deste modo, as seguintes transferncias so possveis:


a(4) <= b(4); a(0 TO 3) <= b(3 DOWNTO 0); a(5) <= 0; a(6 TO 7) <= 10; b <= (0, 1, 1, 0, 0, 1, 1, 0); d <= (1 => 1, OTHERS => 0).

Operadores

Operadores

Tipos de operadores

Os operadores podem ser:


Lgicos; Relacionais; Deslocamento; Adio; Sinal; Multiplicao; Diversos.

Operadores
Precedncia
menor

Classe
lgico relacional deslocamento adio sinalizao multiplicao *

Operadores
AND OR NAND NOR XOR XNOR = /= < <= > >=

SLL SRL SLA SRA ROL ROR + + / ** REM NOT &

MOD ABS

maior

diversos

Operadores

Tipos de operadores

Os operadores lgicos podem ser utilizados em dados BIT, BOOLEAN ou vetores destes dados. O retorno ocorre sempre o mesmo tipo de dado; Os operadores relacionais retornam sempre o tipo BOOLEAN; Os operadores de deslocamento so separados em deslocamento lgico e deslocamento aritmtico, conforme tabela seguinte.

Operadores
Operador
SLL SRL SLA SRA ROL ROR

Tipo
deslocamento lgico deslocamento aritmtico rotao lgica

Significado
Shift Left Logic Shift Right Logic Shift Left Arithmetic Shift Right Arithmetic Rotate Logical Left Rotate Logical Right

Operadores

Deslocamento e rotao

Nas operaes de deslocamento aritmtico, o elemento mais esquerda (sla) ou direita (sra) repetido nas posies vagas;

SLA

SRA

Operadores

Deslocamento e rotao (cont.)

Nas operaes de deslocamento lgico, elementos 0 para BIT ou false par BOOLEAN so inseridos esquerda (sll) ou direita (srl);

SLL

SRL

Operadores

Deslocamento e rotao (cont.)

Nas operaes de rotao, o elemento de uma ponta transferido para a outra, de modo a rotacionar o sinal para a esquerda (rol) ou par a a direita (ror);

ROL

ROR

Operadores

Deslocamento e rotao (cont.)

Se a quantidade de posies a serem deslocadas ou rotacionadas for negativa, o comando se inverte:


y <= x SRA -2 y <= x SLA -2 y <= x SRL -2 y <= x SLL -2 y <= x ROR -2 y <= x ROL -2

= = = = = =

y <= x SLA 2; y <= x SRA 2; y <= x SLL 2; y <= x SRL 2; y <= x ROL 2; y <= x ROR 2.

Atributos

Atributos

Definio;

So utilizados para explorar as opes de cada elemento da linguagem atravs de aspas simples:

sinalEVENT TRUE caso haja uma troca de valor no sinal, desta forma, possvel detectar-se as transies;

Borda ascendente sinal`EVENT AND sinal = `1`; Borda descendente sinal`EVENT AND sinal = `0`.

Bibliotecas

Bibliotecas

Bibliotecas so locais de armazenamento de unidades compiladas; As bibliotecas WORK e STD no necessitam ser inseridas no projeto; A biblioteca IEEE acrescenta alguns pacotes muito teis, como o STD_LOGIC_1164; As bibliotecas precisam ser inseridas atravs da clusula LIBRARY e os pacotes atravs da clusula USE.

Bibliotecas

O pacote STD_LOGIC_1164 fornece os tipos de dados std_logic e std_logic_vector;


Estes tipos de dados so mais completos que os tipos bit e bit_vector; Permitem nove nveis lgicos:

0 L 1 H X W - Z U

Nvel lgico baixo; Nvel lgico baixo fraco; Nvel lgico alto; Nvel lgico alto fraco; Desconhecido; Desconhecido fraco; Irrelevante; Alta impedncia; Desconectado

Bibliotecas

O pacote STD_LOGIC_1164 fornece os tipos de dados std_logic e std_logic_vector;

LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY teste IS PORT (

x y z1

: IN : OUT : OUT

STD_LOGIC; STD_LOGIC_VECTOR(0 TO 10); STD_LOGIC_VECTOR(8 DOWNTO 3));

END teste;

Bibliotecas

O pacote STD_LOGIC_1164 fornece as funes especficas para tratar deteco de bordas;


Borda ascendente RISING_EDGE(sinal); Borda descendente FALLING_EDGE(sinal).

Das könnte Ihnen auch gefallen