Beruflich Dokumente
Kultur Dokumente
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:
Introduo
Linguagem de programao:
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.
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
A Linguagem VHDL
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
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
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
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;
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
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
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
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
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
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
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
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
variavel_a := sinal_1; variavel_b := variavel_1; variavel_c := constante_1; sinal_a <= sinal_1; sinal_b <= variavel_1; sinal_c <= constante_1;
A Linguagem VHDL
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
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
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:
ou ou ou
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;
Tipos de Dados
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
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
Operadores
Precedncia
menor
Classe
lgico relacional deslocamento adio sinalizao multiplicao *
Operadores
AND OR NAND NOR XOR XNOR = /= < <= > >=
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
Nas operaes de deslocamento lgico, elementos 0 para BIT ou false par BOOLEAN so inseridos esquerda (sll) ou direita (srl);
SLL
SRL
Operadores
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
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
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
x y z1
: IN : OUT : OUT
END teste;
Bibliotecas