Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila de Introdução A VHDL - 2014
Apostila de Introdução A VHDL - 2014
Computao
1. Introduo:
1
Prof Luiza Maria Romeiro Cod
As HDLs tm uma grande semelhana s linguagens de
programao, mas so especificamente orientadas descrio das
estruturas e do comportamento do hardware. Uma grande vantagem
das HDLs em relao entrada esquemtica que elas podem
representar diretamente equaes booleanas, tabelas verdade e
operaes complexas (p.ex. operaes aritmticas).
A HDL possui as seguintes caractersticas:
2
Prof Luiza Maria Romeiro Cod
algoritmo, para desenvolver o circuito, sem necessidade de especificar
explicitamente as ligaes entre componentes. VHDL utilizada para
as tarefas de documentao, descrio, sntese, simulao, teste e
verificao formal. padronizada pelo IEEE (Institute of Electrical and
Electronic Engineers).
Dispositivos de Hardware Digital operam em paralelo, portanto
uma linguagem de programao convencional no pode precisamente
descrever ou modelar a operao de Hardware digital porque so
baseados na execuo seqencial das instrues. Neste caso, VHDL
apropriado, pois seu processo opera em paralelo. Lembrando
tambm que em VHDL, as variveis mudam sem atraso e os sinais
mudam com um pequeno atraso.
3
Prof Luiza Maria Romeiro Cod
93), mais flexvel e com novos recursos. A qual at hoje a mais
amplamente utilizada.
4
Prof Luiza Maria Romeiro Cod
1.6 CARACTERSTICAS DO VHDL:
5
Prof Luiza Maria Romeiro Cod
Possibilita delimitar regies de cdigo seqencial (subprogramas
e processos) onde a execuo dos comandos segue a ordem de
sua apresentao no cdigo, como mostra a Figura 1.2. Dentro
de cada regio os comandos so executados concorrentemente.
1.7 FERRAMENTAS:
ghdl (Linux):
Front-end do gcc para VHDL
Altera Quartus II (Windows)
Sntese para FPGA da Altera
Xilinx ISE (Windows)
Sntese para FPGA da Xilinx
Modelsim (Windows/Linux)
Simulador
Mentor Leonardo ou Precision (Windows/Linux)
Sntese para diversos fabricantes
6
Prof Luiza Maria Romeiro Cod
2. Ciclo do Projeto em VHDL:
O projeto de um sistema digital auxiliado por ferramentas
computadorizadas segue normalmente as 3 etapas mostradas na
Figura 2.1 e
7
Prof Luiza Maria Romeiro Cod
Figura 2.1 Etapas da Ferramenta VHDL.
Figura 2.2
8
Prof Luiza Maria Romeiro Cod
Simulao do Cdigo-Fonte: simular o cdigo em ferramenta
confivel a fim de verificar preliminarmente cumprimento da
especificao;
9
Prof Luiza Maria Romeiro Cod
somador com trs bits e na etapa seguinte elabora a primitiva RTL
utilizando os elementos disponveis na tecnologia escolhida.
10
Prof Luiza Maria Romeiro Cod
A figura 2.7 esquematiza todo o processo, desde a especificao
at a implementao do circuito.
11
Prof Luiza Maria Romeiro Cod
3. Conceitos Bsicos da Linguagem
VHDL:
Devido sua potencialidade, a linguagem VHDL complexa, e
muitas vezes de difcil entendimento, dada as inmeras opes para
modelar o comportamento de um circuito. Entretanto, o entendimento
de um pequeno nmero de comandos, suficiente para o modelamento
de estruturas medianamente complexas, pode ser rapidamente
atingido. A necessidade de projetos mais complexos encaminha
procura por novos comandos levando a uma maior compreenso das
opes da linguagem.
12
Prof Luiza Maria Romeiro Cod
PACKAGE ou LIBRARY: conjunto de sub-programas que
descrevem, elementos e componentes j programados para serem
reutilizados.
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.all; PACKAGE (BIBLIOTECAS)
USE IEEE.STD_LOGIC_UNSIGNED.all;
ENTITY exemplo IS
PORT ( ENTITY (PINOS DE I/O)
<descrio dos pinos de I/O>
);
END exemplo;
13
Prof Luiza Maria Romeiro Cod
ENTITY: No caso da entidade de Projeto da Figura 3.1 seria:
:I0, I1, I2, S0 e S1
14
Prof Luiza Maria Romeiro Cod
Quadro 3.1
Biblioteca Pacote TIPOS DE DADOS DESCRIO
IEEE STD_LOGIC_1164 STD_LOGIC e Define o padro para
STD_LOGIC_VECTOR descrever a interconexo
entre tipos de dados usados
na linguagem VHDL
IEEE STD_LOGIC_ARITH Especifica tipos de Funes de converso,
dados sinalizados e operaes aritmticas e
no sinalizados comparaes para uso de
dados sinalizados e no
sinalizados
IEEE STD_LOGIC_UNSIGNED STD_LOGIC_VECTOR Define funes que
permitem usar tipos de
dados
STD_LOGIC_VECTOR,
como se fossem tipo de
dado no sinalizado
IEEE STD_LOGIC_SIGNED STD_LOGIC_VECTOR Define funes que
permitem usar tipos de
dados
STD_LOGIC_VECTOR,
como se fossem tipo de
dado sinalizado
IEEE NUMERIC_STD Define operaes
aritmticas seguindo o
padro IEEE. Substitui os
pacotes usados juntos
STD_LOGIC_ARITH,
STD_LOGIC_UNSIGNED e
STD_LOGIC_SIGNED
STD STANDARD BIT(0 ou 1)
BIT_VECTOR( 3
Downto 0);
BIT_VECTOR( 0 to 3);
BOOLEAN(falso ou
verdadeiro);
INTEIRO(positivo ou
negativo)
15
Prof Luiza Maria Romeiro Cod
Quadro 3.2a
LIBRARY < nome_da biblioteca>
Quadro 3.2b
LIBRARY < nome_da biblioteca>
USE < nome_do_pacote_biblioteca> .ALL
Quadro 3.3
ENTITY modulo IS
PORT ( I0, I1,I2 : modo_1 tipo_a; --entradas
S0, S1 : modo_2 tipo_b ); -- sadas
END modulo;
16
Prof Luiza Maria Romeiro Cod
A declarao de uma entidade deve conter trs clusulas como
explicado a seguir:
ENTITY modulo IS
Modo IN : entrada
Modo OUT: sada
Modo BUFFER: sada que pode ser realimentada
internamente.
Modo INOUT: bidirecional.
17
Prof Luiza Maria Romeiro Cod
do tipo das entradas listadas na linha e de ponto e vrgula(;),
quando trata-se de entradas. A ltima declarao da porta
finalizada com o parntesis antes do ponto e vrgula (;).
Quadro 3.4
18
Prof Luiza Maria Romeiro Cod
END: termina a declarao. Usa-se a palavra reservada END
seguida do nome da Entidade de Projeto e de ponto e
vrgula(;).
o projeto composto por diversas entidades distintas
Quadro 3.5
ENTITY modulo IS
PORT ( I0, I1 : IN BIT; --entradas
S1, S2 : OUT BIT ); -- sadas
END modulo;
Quadro 3.6
ENTITY nome IS
PORT ( I0, I1,...In : IN tipo_a; --entradas
S0, S1 : OUT tipo_b ); -- sadas
Y0 : BUFFER tipo_c); -- sada
Z0, Z1 : INOUT tipo_d ); -- entrada/sada
END nome;
19
Prof Luiza Maria Romeiro Cod
3.3 DECLARAO DA ARQUITETURA:
Quadro 3.7
architecture behavioral of ent is
signal c_internal: small_int;
begin
c_internal <= a0 + b0;
c0 <= c_internal;
c1 <= c_internal + a1 + b1;
end behavioral;
Descrio estrutural
Descrio por Fluxo de dados (data-flow)
Descrio comportamental
20
Prof Luiza Maria Romeiro Cod
3.2.1 DESCRIO ESTRUTURAL:
f a.b c.d
Onde: X 1 a.b
X 2 c.d
Ento: f X1 X 2
As trs equaes para X1, X2 e f fornecem a estrutura bsica do
circuito lgico, pois fornecem a informao necessria para reconstruir
o diagrama exatamente como ele for originalmente apresentado.
Modelos estruturais so escritos usando o mesmo conceito.
21
Prof Luiza Maria Romeiro Cod
No caso do exemplo da Figura 3.5, os sinais X1 e X2 so sinais
internos, portanto no foram declarados na ENTITY, ento devem
ser declarados no corpo da arquitetura antes entre as declaraes
ARCHITECTURE e BEGIN.
22
Prof Luiza Maria Romeiro Cod
signal X1, X2 : bit;
-- O mapeamento das portas especfica a conexo interna
begin
G1 : AND2 port map(a, b, X1);
G2 : AND2 port map(c, d X2);
G3 : OR2 port map(X1, X2, f);
end Estrutural;
23
Prof Luiza Maria Romeiro Cod
e,
24
Prof Luiza Maria Romeiro Cod
o primeiro mapeamento e define que a porta G1 um componente
AND2 e que est conectado aos identificadores de porta a, b e ao
sinal X1. A ordem dos sinais na declarao do componente AND2 foi
dada como (u, v, q) que corresponde a primeira entrada, segunda
entrada e sada, respectivamente. O mapeamento da porta (a, b, X1)
mantm essa mesma ordem. Portanto, a varivel de entrada a da
Unidade_AOI mapeada na varivel de entrada u da entidade AND2;
a varivel de entrada b da Unidade_AOI mapeada na varivel de
entrada v da entidade AND2; a varivel de entrada X1 da
Unidade_AOI mapeada na varivel de entrada q da entidade AND2;
O mesmo raciocnio serve para as outras linhas de mapeamento.
25
Prof Luiza Maria Romeiro Cod
Figura 3.7 Representao de reg_2bits a partir de entidades
d_latch.
26
Prof Luiza Maria Romeiro Cod
Pode-se observar neste caso, que na prpria indicao dos
componentes que constituem o sistema reg_2bits j feito o
mapeamento de pinos desejado, ou seja, d0 associado ao pino d do
primeiro flip-flop, assim como o pino clk ao sinal de porta de mesmo
nome e q0 ao bit q, conforme a estruturao bit0. A estrutura bit1
descrita de forma anloga somente que uma nova entidade d_latch
(uma cpia deste componente) ser criada para a realizao de suas
ligaes. Este formato traz por si s uma maior flexibilidade do
projeto na manipulao de sinais.
27
Prof Luiza Maria Romeiro Cod
Quadro 3.14 Descrio VHDL dos componentes do exemplo 3
28
Prof Luiza Maria Romeiro Cod
Quadro 3.15 Descrio VHDL do exemplo 3
29
Prof Luiza Maria Romeiro Cod
Um exemplo de descrio de arquitetura por fluxo de dados de um
contador completo, mostrado nos circuitos da Figura 3.9
apresentada no Quadro 3.16.
Quadro 3.16
ARCHITECTURE dataflow OF full_adder IS
BEGIN
Cout <= ( AND b ) OR ( a AND Cin ) OR ( b AND Cin );
S <= a XOR b XOR Cin;
END dataflow;
Quadro 3.17
ARCHITECTURE dataflow OF full_adder IS
SIGNAL x1, x2, x3, y1 : BIT;
BEGIN
x1 <= a AND b;
x2 <= a AND Cin;
x3 <= b AND Cin;
Cout <= x1 OR x2 OR x3;
y1 <= a XOR b;
s <= y1 XOR Cin;
END dataflow;
30
Prof Luiza Maria Romeiro Cod
Pode-se tambm descrever uma arquitetura por fluxo de dados
usando comandos condicionais, como mostra o Quadro 3.18, onde o
circuito da Figura 3.10 descrito. Portanto, considerando o mdulo
chamado Igual, mostrado na Figura 3.10, sua tabela verdade indica
que a sua sada mesma = 1 quando as entradas a e b forem iguais e
a sada mesma = 0 se a e b forem diferentes. Um enunciado em,
VHDL permite associar um valor a um sinal se algumas condies
forem satisfeitas. Usando comandos condicionais pode-se escrever a
declarao do mdulo Igual como mostra o Quadro 3.18 a seguir:
31
Prof Luiza Maria Romeiro Cod
Quadro 3.19
Identificador <= 1 when condio else
0
32
Prof Luiza Maria Romeiro Cod
Quadro 3.20
process_name: PROCESS( sensitivity_list_signal_1, ... )
BEGIN
-- comandos do processo
END PROCESS process_name;
Quadro 3.21
-- comparador de 4 bits
entity comp4 is
port ( a, b : in bit_vector (3 downto );
equals: out bit);
end comp4;
architecture comport of comp4 is
begin
comp: process (a,b) -- lista de sensibilidade
begin
if a = b then
equals = 1 ;
else
equals = O ;
end if;
end process comp;
end comport;
33
Prof Luiza Maria Romeiro Cod
Assim como em outras linguagens de programao, variveis
internas so definidas tambm em VHDL, com o detalhe de que estas
podem somente ser utilizadas dentro de seus respectivos processos,
procedimentos ou funes. Para troca de dados entre processos deve-
se utilizar sinais (signal) ao invs de variveis.
Outro exemplo possvel de um corpo de arquitetura
comportamental apresentado a seguir no Quadro 3.22, para a
entidade reg4, registrador de 4 bits:
Exemplo2:
Quadro 3.22
architecture comportamento of reg4 is
begin
carga: process (clock)
variable d0_temp, d1_temp, d2_temp, d3temp : bit;
begin
if clk = '1' then
if en = '1' then
d0_temp := d0;
d1_temp := d1;
d2_temp := d2;
d3_temp := d3;
end if;
end if;
q0 <= d0_temp after 5ns;
q1 <= d1_temp after 5ns;
q2 <= d2_temp after 5ns;
q3 <= d3_temp after 5ns;
end process carga;
end architecture comportamento
34
Prof Luiza Maria Romeiro Cod
Na primeira parte da descrio testada a condio de que
ambos os sinais en e clk sejam iguais a 1. Se eles so, as sentenas
entre as diretivas then e end if so executadas, atualizando as
variveis do processo com os valores dos sinais de entrada.
Aps a estrutura if os quatro sinais de sada so atualizados com
um atraso de 5ns.
O processo carga sensvel ao sinal clock, o que indicado
entre parnteses na declarao do mesmo. Quando uma mudana no
sinal clock ocorre, o processo novamente executado.
35
Prof Luiza Maria Romeiro Cod
Especificao do componente indicao do elo
36
Prof Luiza Maria Romeiro Cod
15 END tpica;
16
17 ACHITECTURE rapida OF soma IS
18 BEGIN
19 s<= a + b AFTER 10ns;
20 END rapida;
21
22 -- Especificao da configurap
23 ENTITY somadores1 IS
24 PORT (x,y : IN INTEGER 0 TO 7;
25 sl, st, sr : OUT INTEGER 0 TO 15);
26 END somadores1;
27
28 ACHITECTURE teste OF somadores1 IS
29 --add: nome_local componente
30 --portas com mesma designao
31 COMPONENT add PORT (a, b : IN INTEGER 0 TO 7;
32 s : OUT INTEGER 0 TO 15);
33 END COMPONENT;
34
35 --adx: nome_local componente
36 -- portas com designao diferente
37 COMPONENT adx PORT (k, l : IN INTEGER 0 TO 7;
38 m : OUT INTEGER 0 TO 15);
39 END COMPONENT;
40
41 -- associao entre add, adx e as entidades de projeto soma
42 --arquitetura de u1 a ultima compilada
43 FOR u1: add USE ENTITY WORK.soma;
44 FOR u2: add USE ENTITY WORK.soma(lenta);
45 FOR u3: adx USE ENTITY WORK.soma(tipica) PORT MAP(a=>k, b=>l, s=>m); ;
46 BEGIN
47 u1 : add PORT MAP (x, y, Sr)
48 u2 : add PORT MAP (x, y, Sl)
49 u3 : adx PORT MAP (x, y, St)
50 END teste;
37
Prof Luiza Maria Romeiro Cod
4. Elementos Bsicos da Sintaxe de
VHDL:
Quadro 4.1 Estrutura de um projeto em VHDL.
38
Prof Luiza Maria Romeiro Cod
Como em qualquer linguagem de programao, a VHDL utiliza um
conjunto bem definido de regras, as quais devem ser seguidas e que
definem palavras-chave e a sintaxe da linguagem que se refere ao
uso de uma palavra e a ordem que deve ser obedecida para escrever
os comandos. A linguagem no case-sensitive, mas
freqentemente so usadas maisculas para as palavras reservadas.
Uma palavra-chave, mostradas no Quadro 4.2, tem um significado
reservado na linguagem e no podem ser usadas para outro propsito.
A sintaxe refere-se ao uso de uma palavra e a ordem que deve ser
obedecida para escrever os comandos. O Quadro 4.3 mostra uma lista
dos smbolos especiais e suas sintaxes.
Quadro 4.2 Palavras reservadas em VHDL.
abs file nand then
acess for new to
after function next transport
alias nor type
all not
and null
architecture
array
assert
attribute
begin generate of unaffected
block generic on units
body group open until
buffer guarded or use
bus others
out
case if package variable
component impure port
configuration in postponed
constant inertial procedure
inout process
is pure
disconnect lable range wait
downto libraries record when
linkage register while
literal reject with
loop rem
report
return
rol
ror
else map select xor
39
Prof Luiza Maria Romeiro Cod
elseif mod severity xnor
end shared
entity signal
exit sla
sll
sra
srl
subtype
4.1 COMENTRIOS:
40
Prof Luiza Maria Romeiro Cod
Os comentrios em VHDL so permitidos aps dois traos - e
so vlidos at o final da linha corrente.
Exemplo:
Library <nome_da_biblioteca>...
Library IEEE
Use IEEE_STD_LOGIC_1164.all
0 = 0 forte
1 = 1 forte
X = forando desconhecido
Z = alta impedncia (circuito aberto)
w = desconhecido fraco
L = 0 fraco
H = 1 fraco
U = inicializao desconhecida
- = no importa (dont care)
LIBRARY ieee;
USE ieee.std_logic_1164.ALL
ENTITY porta_and IS
PORT(a, b : IN std_logic;
f : OUT std_logic);
END porta_and;
ARCHITECTURE lgica OF porta_and IS
BEGIN
42
Prof Luiza Maria Romeiro Cod
f <= a and b;
END logica;
4.3 IDENTIFICADORES:
pode conter:
letras do alfabeto (A a Z e a a z),
dgitos decimais(0 a 9)
caracter underline (_);
precisa comear com uma letra do alfabeto;
no pode terminar com um caracter underline;
no pode conter dois caracteres underline em sequncia.
Exemplos:
contador data0 Novo_valor resultado_final_operacao_FFT
No h distino entre letras maisculas e minsculas, logo valor,
Valor ou VALOR so interpretados da mesma forma.
43
Prof Luiza Maria Romeiro Cod
VHDL permite ainda a definio de identificadores estendidos que
devem ser utilizados somente para interfaceamento com outras
ferramentas que usam regras diferentes para definir seus
identificadores. A definio de identificadores estendidos feita entre
\.
Exemplos:
44
Prof Luiza Maria Romeiro Cod
A declarao genrica uma declarao opcional que possibilita
passar informaes externas para entidades de projeto. O emprego do
GENERIC possibilita a reconfigurao de um circuito pela simples
alterao de seus valores, sem alterar o cdigo do projeto deixando-o
generico. A sintaxe da declarao de generico :
ENTITY contador IS
GENERIC (min_count : NATURAL:=0;
max_count : NATURAL:=9);
Declarao das portas
END contador;
Sintaxe:
signal identificador(es) : tipo [restrio] [:=expresso];
45
Prof Luiza Maria Romeiro Cod
Exemplo:
signal cont : integer range 50 downto 1;
signal ground : bit := 0;
Exemplos:
SIGNAL x: BIT
VARIABLE y: INTEGER
CONSTANT one: STD_LOGIC_VECTOR(3 DOWNTO 0) := "0001"
46
Prof Luiza Maria Romeiro Cod
4.6 TIPOS DE DADOS:
Os objetos devem ser declarados segundo uma especificao de
tipo. Um tipo caracterizado por um conjunto de valores que pode
assumir e por um conjunto de operaes que podem ser realizadas.
Os tipos de objetos so divididos em:
Escalares
Compostos
47
Prof Luiza Maria Romeiro Cod
O quadro 4.2 apresenta tipos escalares definidos no pacote
padro.
Quadro 4.2
Exemplo:
TYPE byte IS ARRAY(7 DOWNTO 0) OF BIT
TYPE memory_type IS ARRAY(1 TO 128) OF byte
SIGNAL memory: memory_type
memory(3) <= "00101101"
Quadro 4.3
49
Prof Luiza Maria Romeiro Cod
BIT:
Valores: 0 ou 1
Atribuio de valor: bit_signal <= '0';
Nativo da linguagem VHDL, no precisa de declarao de
biblioteca. Exemplo mostrado no Quadro 4.4
Declarao de BIT:
bit_signal : BIT;
Quadro 4.4
SIGNAL x: BIT;
x <= '1';
BIT_VECTOR:
VHDL possibilita que as palavras binrias sejam trabalhadas
como vetores de bits, palavras binrias com n-bits, com 2n
valores distintos, simplificando a listagem. Nativo da
linguagem VHDL, no precisa de declarao de biblioteca.
50
Prof Luiza Maria Romeiro Cod
Declarao de BIT_VECTOR:
bit_vector_signal : BIT_VECTOR( max_index DOWNTO 0 );
Atribuio de BIT_VECTOR:
bit_vector_signal(0) <= 1;
bit_vector_signal(0) <= bit_signal;
bit_vector_signal <= "0001";
Exemplo 1:
Considerando a palavra: In_a = a3 a2 a1 a0
A qual a entrada do bloco mostrado na Figura 4.2, onde a sada
tem um nico bit x . Utilizando o comando BIT_VECTOR, os
componentes da palavre In_a so especificados pelo nmero
subscrito, como mostrado na listagem de porta:
51
Prof Luiza Maria Romeiro Cod
Exemplo2:
Usar o comando BIT_VECTOR para descrever o mdulo da
Figura4.3, onde as entradas so palavras de 4 bits In_a e :
In_b, e a sada tambm de 4 bits definida por:
Entity modulo_or IS
PORT(In_a, In_b : in BIT_VECTOR(3 downto 0);
Saida : out BIT_VECTOR(3 downto 0));
END modulo_or;
ARCHITECTURE listagem OF modulo_or IS
BEGIN
Sada(3) <= In_a(3) OR In_b(3);
Sada(2) <= In_a(2) OR In_b(2);
Sada(1) <= In_a(1) OR In_b(1);
52
Prof Luiza Maria Romeiro Cod
Sada(0) <= In_a(0) OR In_b(0);
END listagem;
53
Prof Luiza Maria Romeiro Cod
Para nmeros aritmticos sem sinal:
USE ieee.std_logic_unsigned.all;
Exemplo:
LIBRARY ieee
USE ieee.std_logic_1164.ALL
SIGNAL x: STD_LOGIC
SIGNAL y: STD_LOGIC_VECTOR(7 DOWNTO 0)
x <= 'Z'
y <= "001-"
Exemplo:
SIGNAL x: INTEGER
SIGNAL y: INTEGER RANGE 64 to 64
4.5 .EXPRESSES:
54
Prof Luiza Maria Romeiro Cod
Exemplo:
Sinal_destino <= expresso;
Obs: tipo do sinal de destino = tipo do sinal da expresso
O que a seguinte linha de VHDL realiza: X <= A ?
Maior
Observaes:
Operaes lgicas so realizadas sobre tipos bit e boolean.
Operadores aritmticos trabalham sobre inteiros e reais.
Incluindo-se o package da Synopsys, por exemplo, pode-se
somar vetores de bits.
Todo tipo fsico pode ser multiplicado/dividido por inteiro ou
ponto flutuante.
Concatenao aplicvel sobre caracteres, strings, bits,
vetores de bits e arrays.
55
Prof Luiza Maria Romeiro Cod
Exemplos: ABC & xyz resulta em: ABCxyz
1001 & 0011 resulta em: 10010011
4.6 OPERADORES:
Os Operadores so divididos em classe como mostra o Quadro 4.7.
As classes definem a precedncia dos operadores
Operadores de uma mesma classe possuem mesma
precedncia.
Quadro 4.7 Operadores separados por classes.
56
Prof Luiza Maria Romeiro Cod
4.6.2 Operadores Relacionais:
57
Prof Luiza Maria Romeiro Cod
4.6.4 Operadores de Adio:
59
Prof Luiza Maria Romeiro Cod
inteiro ou ponto
mesmo do igual aos
flutuante
anterior operandos
inteiro ou ponto
* Multiplicao fsico flutuante fsico
inteiro ou ponto
flutuante fsico fsico
inteiro ou ponto
mesmo do igual aos
flutuante
anterior operandos
/ Diviso inteiro ou ponto
fsico flutuante fsico
60
Prof Luiza Maria Romeiro Cod
QUADRO 4.10 OPERAES LGICAS:
Operador Operao Tipo do Tipo do operador Tipo do
operador da direita resultado
da esquerda
Exemplo:
61
Prof Luiza Maria Romeiro Cod
Quadro 4.11 OPERAES DE DESLOCAMENTO E ROTAO:
Operador Operao Tipo do Tipo do operador Tipo do
operador da direita resultado
da esquerda
62
Prof Luiza Maria Romeiro Cod
Exemplo 2: Tipos BIT_VECTOR
Operao: valor 1011 atribudo a toads as portas de sada
Diferentes bases de representao
Tipos integer, real : formato 16#B# 16#B.0#
Tipos bit_vector: formato XB
Linha 12: caracter _ em 01_0_11 melhora leitura do valor
Linhas 14 e 15: valor definido para uma parte real: DOWNTO
63
Prof Luiza Maria Romeiro Cod
Exemplo 3: Atribuio de valores em sinais, tipos
BIT_VECTOR agregados
S2 S4 atribuio de valor: notao posicional.
S3 S5 atribuio de valor: associao de nomes.
64
Prof Luiza Maria Romeiro Cod
Exemplo 5: Operadores classe adio.
Linhas 10 e 11: Operao de concatenao de dois vetores
(tipos bit_vector)
Linha 12: soma de dois tipos inteiros
65
Prof Luiza Maria Romeiro Cod
5. Comandos em VHDL:
Em VHDL uma descrio estrutural de uma arquitetura apresenta
tanto as instrues como comandos concorrentes entre si, ou seja, a
ordem de apresentao das instrues ou dos comandos irrelevante.
Todos (comandos ou instrues) so executados paralelamente. Em
uma descrio de arquitetura por fluxo de dados ou comportamental,
podem ser utilizados alguns comandos com o objetivo de facilitar a
descrio de circuitos mais complexos. Esses comandos podem ser
concorrentes, e alguns deles se contidos em regies especficas de
cdigos, como dentro de processos, so avaliados na sequncia em
que so apresentados. Neste captulo sero apresentados alguns
comandos bsicos de VHDL, assim como alguns conceitos
necessrios para a utilizao desses comandos, os quais so:
66
Prof Luiza Maria Romeiro Cod
ARCHITECTURE estrutural OF teste IS
SIGNAL X1,X2: STD_LOGIC;
SIGNAL X13: STD_LOGIC_VECTOR(7DOWNTO 0);;
BEGIN
ENTITY bloco1 IS
PORT( a, b : IN :STD_LOGIC;
s : OUT STD_LOGIC VECTOR);
END bloco1;
ARCHITECTURE estrutural OF bloco1 IS
SIGNAL X: STD_LOGIC;
BEGIN
s <= not a and b;
END estrutural;
67
Prof Luiza Maria Romeiro Cod
(VHDL)). Na linha 9 o sinal a vale 0, aps 20ns passa para 1 e aps
40ns volta a ser 0. A linha 10 e 11 so operaes lgicas e a linha 12
o processo semelhante ao da linha 9 porm, o sinal d recebe valores
inteiros.
68
Prof Luiza Maria Romeiro Cod
A listagem VHDL a seguir (EXEMPLO 1) apresenta as etapas de
simulao de um programa VHDL. Acompanhando horizontalmente
cada bloco pode-se observar as atualizaes das variveis. E,
analisando a listagem do EXEMPLO2 pode-se verificar a diferena
entre sinal e varivel(Exemplos retirados de Terroso, A. R. Dispositivo
Lgicos Programvel (FPGA) e Linguagem de Descrio de Hardware
(VHDL)).
EXEMPLO 1
69
Prof Luiza Maria Romeiro Cod
EXEMPLO 2
70
Prof Luiza Maria Romeiro Cod
CONCEITO DE ATRIBUTO:
nome_atributo;
Tabela 5.1
ATRIBUTO FUNO
nome_do_sinal EVENT Verdadeiro se ocorreu uma troca de
valor do sinal no ciclo corrente de
simulao; e falso, caso contrrio
nome_do_sinal ACTIVE Verdadeiro se foi atribudo um valor
durante o ciclo corrente de simulao; e
falso, caso contrrio
nome_do_sinal TRANSACTION Retorna um sinal tipo BIT
complementado em relao ao anterior
a cada transio do sinal
nome_do_sinal LAST_EVENT Tempo decorrido desde a ultima troca
de valor do sinal
nome_do_sinal LAST_VALUE Retorna o valor do sinal antes do ltimo
evento
nome_do_sinal LAST_ACTIVE Retorna o intervalo de tempo desde que
a ltima transio tenha ocorrido no
sinal
nome_do_sinal DELAYED(T) Novo sinal equivalente ao sinal atrasado
T unidades de tempo. O valor de T
opcional, mas o default T=0.
nome_do_sinal STABLE(T) Retorna um sinal tipo booleano
verdadeiro se no ocorreu nenhuma
troca de valor durante um perodo T;
caso contrrio retorna um valor falso
nome_do_sinal QUIET (T) Retorna um sinal tipo booleano
verdadeiro se no ocorreu nenhuma
transio durante um perodo T; caso
contrrio retorna um valor falso
71
Prof Luiza Maria Romeiro Cod
A Figura 5.2 apresenta os termos relativos active, quiet e
event. A condio active empregada acaso seja atribudo um
novo valor a um sinal, durante um ciclo de simulao, mesmo que o
novo valor seja igual ao anterior. A condio quiet oposta
active. E a condio event representa uma mudana no valor a ser
assumido.
Quadro 5.1
72
Prof Luiza Maria Romeiro Cod
Figura 5.1 Circuito de um Mux 4x1
Quadro 5.2
73
Prof Luiza Maria Romeiro Cod
Quadro 5.3
Quadro 5.4
74
Prof Luiza Maria Romeiro Cod
Comparao entre as construes WHEN ELSE e WITH
SELECT:
Quadro 5.5
process_name: PROCESS( sensitivity_list_signal_1, ... )
BEGIN
-- comandos do processo
END PROCESS process_name;
75
Prof Luiza Maria Romeiro Cod
processo causando a execuo dos comandos seqenciais segundo a
ordem de apresentao.
atribuio de variveis
if,
case,
for,
while,
wait
76
Prof Luiza Maria Romeiro Cod
5.2.2 - Estrutura IF:
IF chave = 1 THEN
saida1 := valor_saida;
END IF;
IF chave = 1 THEN
saida1 := valor_saida;
ELSE
saida1 := 255;
registrador := valor_saida;
END IF;
77
Prof Luiza Maria Romeiro Cod
led2 := OFF;
ELSIF leitura = 1 OR leitura = 3 THEN
led1 := ON;
led2 := OFF;
ELSIF leitura = 2 or leitura = 4 THEN
led1 := OFF;
led2 := ON;
END IF;
IMPORTANTE:
CASE seletor IS
WHEN 0 =>
sada <= entrada0;
WHEN 1 =>
78
Prof Luiza Maria Romeiro Cod
sada <= entrada1;
WHEN 2 =>
sada <= entrada2;
WHEN 3 =>
sada <= entrada3;
END CASE;
CASE leitura IS
WHEN 1 | 3 => -- quando 1 ou 3
led1 := ON;
led2 := OFF;
WHEN 2 | 4 => quando 2 ou 4
led1 := OFF;
led2 := ON
End CASE;
CASE estado IS
WHEN estado_A =>
saida <='0';
IF entrada = '1' THEN estado := estado_B;
END IF;
WHEN estado_B =>
IF entrada = '0' THEN estado := estado_C;
END IF;
WHEN estado_C =>
estado := estado_A;
saida <= '1';
END CASE;
79
Prof Luiza Maria Romeiro Cod
No exemplo anterior est implementada mquina de estados da
Figura 5.2. Apesar de no indicado, a estrutura apresentada deveria
estar dentro de um processo sincronizado com o clock, o que
normalmente subentendido em sistemas de mquinas de estados.
80
Prof Luiza Maria Romeiro Cod
Isto feito com a palavra-chave on seguido pelo sinal que se deseja
monitorar. Por exemplo, na execuo de uma descrio em VHDL que
contenha:
...
wait on a;
...
...
wait on a, b;
...
...
wait until clk = '1';
...
81
Prof Luiza Maria Romeiro Cod
Espera por Nvel:
...
wait until int_in = '1' for 1ms;
...
82
Prof Luiza Maria Romeiro Cod
6.Bibliografia:
6.1 Livros:
http://pt.wikipedia.org/wiki/VHDL
http://ee.ucd.ie/~rreilly/DE%20Website/Lectures/DE-19-
VLSI%20Design%20Methodology.ppt
http://www.ene.unb.br/~juliana/cursos/sistdigital1/vhdl_ronhuse.pdf
http://www.dimap.ufrn.br/~ivan/orgI/vhdl.PDF
http://209.85.165.104/search?q=cache:hYIrOFzhoroJ:www.ee.pucrs.br
/~vargas/SisC/poligrafo-
vhdl.doc+ANDERSON+ROYES+TERROSO+LINGUAGEM+DE+DESC
RI%C3%87%C3%83O+DE+HARDWARE+(VHDL)&hl=pt-
BR&ct=clnk&cd=5&gl=br
83
Prof Luiza Maria Romeiro Cod
http://www.angelfire.com/in/rajesh52/verilogvhdl.html
84
Prof Luiza Maria Romeiro Cod