Академический Документы
Профессиональный Документы
Культура Документы
Ronaldo Hsemann
VHDL
A POSTIL A DE
Histrico
Ronaldo Hsemann
Em 1992 foram propostas vrias alteraes para a norma, sendo que 1993 foi
lanada a verso revisada, mais flexvel e com novos recursos. Esta norma revisada,
chamada V HDL-93, a hoje a mais amplamente utilizada e por isso a maioria dos
exemplos aqui apresentados so baseados na mesma.
No final dos anos 70, o Departamento de Defesa dos Estados Unidos definiu um
programa chamado V HSIC (V ery High Speed Integrated Circuit) que visava a descrio
tcnica e projeto de uma nova linha de circuitos integrados. Com o avano acelerado dos
dispositivos eletrnicos entretanto este programa apresentou-se ineficiente,
principalmente na representao de grandes e complexos projetos.
Ronaldo Hsemann
23 0 146
V HDL define dois tipos bsicos de nmeros: inteiros e reais. Um nmero inteiro
consiste de um nmero sem ponto decimal. Exemplos de nmeros inteiros:
1.3 - Nmeros
1.2 - Identificadores
1.1 - Comentrios
Ronaldo Hsemann
Se for necessrio definir-se uma string cujo comprimento seja maior que o de
uma linha deve-se utilizar o operador de concatenao (& ) para unir as substrings em
uma s. Exemplo:
Teste de operacao
2000 iteracoes
1.5 - Strings
A b
1.4 - Caracteres
Ronaldo Hsemann
O" 740"
X D4 x0F2
e base hexadecimal:
o372
base octal:
Ronaldo Hsemann
2 - Tipos de Dados
2.1.2 - Sinais
Ronaldo Hsemann
<=
2.1.3 - A rquivos
saida
Ronaldo Hsemann
read(arquivo_entrada, bit_in);
(append_ mode). Por fim acrescenta-se is seguido pelo nome de referncia do arquivo,
que pode ser o nome do mesmo em um diretrio ou simplesmente um nome usado para
interfaceamento com uma memria.
Como exemplo a seguir se define um arquivo chamado arquivo_ entrada do tipo
anteriormente declarado arq_ binario, de modo leitura e com nome "dados.dat":
Ronaldo Hsemann
Note que em V HDL a unidade de tempo fs, apesar que na maior parte das
vezes se adotam outras unidade mais comuns como ms ou ns.
Existe um tipo fsico muito importante pr-definido em V HDL que o tipo time,
usado para operaes com tempo. A declarao deste tipo pode ser observada a seguir:
V ariveis do tipo ponto flutuante so compostas por duas partes: uma mantissa e
uma parte exponencial. Existe um tipo ponto flutuante pr-definido em V HDL que o
tipo real, que varia de -1.0E+38 at +1.0E38, com pelo menos seis dgitos de preciso.
possvel a definio de outras variveis do ponto flutuante conforme a necessidade da
aplicao. A lguns exemplos so apresentados a seguir:
Ronaldo Hsemann
A varivel do tipo character apresenta 256 possveis valores, sendo que os 128
primeiros representam a primeira metade da tabela A SCII.
A declarao do tipo character em V HDL feita conforme pode ser visto a
seguir na fig. 2.2.
- character
- boolean
- bit
Ronaldo Hsemann
'', '', '', '', '', '', ' ', ' ',
' ', ' ', ' ', ' ', '', '', '', '',
'', '', ' ', ' ', ' ', ' ', ' ', '',
' ', '', '', '', '', ' ', ' ', '',
' ', '', '', '', '', '', '', ' ',
'', '', '', '', '', '-', '', ' ',
'', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', ' ',
'@ ', 'A', 'B', 'C ', 'D', 'E ', 'F ', 'G ',
'H', 'I', 'J ', 'K ', 'L', 'M', 'N', 'O ',
'P ', 'Q ', 'R ', 'S ', 'T ', 'U', 'V', 'W ',
'X', 'Y ', 'Z', '[', '\', ']', '^', '_ ',
type character is (
Ronaldo Hsemann
que define uma matriz de bits, cujas dimenses so dadas por tipos distintos.
V HDL permite ainda a construo de arrays sem definio de limites atravs dos
smbolos <>, como pode ser visto a seguir:
onde se define um array chamado dias_ uteis que contm somente um conjunto
dos cinco dias da semana de SEG a SEX a partir do conjunto dias_ semana.
Em muitos casos arrays de uma nica dimenso no so suficientes para as
operaes que se deseja. V HDL permite a definio de arrays multi-dimensionais de
forma facilitada. Por exemplo, pode-se definir o array que representa uma imagem
bidimensional de 10x20 da seguinte forma:
2.3.1 - A rrays
Ronaldo Hsemann
matriz2 := matriz1;
define uma varivel do tipo matriz (sem definio de limite) chamada matriz1
que tem 5 posies. A atribuio de valores a arrays merecem alguns comentrios, pois
em V HDL so disponibilizados alguns formatos especiais.
A atribuio mais simples j foi mostrada e trata do preenchimento direto dos
valores de um array ou de um elemento, como na listagem a seguir:
Ronaldo Hsemann
estrutura2 := estrutura1;
horario_atual := (hora => 10, minuto => 42, segundo => 23);
ajusta o horario atual do sistema para 10:42:23. Outra maneira de se realizar esta
atribuio :
2.3.2 - Records
Ronaldo Hsemann
real(123);
produz o nmero inteiro mais prximo (no caso, 39). Enquanto que:
integer(39.382)
2.4 - Subtipos
Ronaldo Hsemann
Ronaldo Hsemann
Mdulo
Resto da
diviso
Potenciao
V alor absoluto
Negao
mod
rem
abs
not
Operador
=
/=
<
<=
>
>=
Inteiro ou ponto
flutuante
fsico
inteiro
inteiro
inteiro ou ponto
flutuante
inteiro ou ponto
flutuante
fsico
numrico
numrico
array 1 dimenso
inteiro ou ponto
flutuante
fsico
Tipo do operador
da esquerda
Igualdade
Desigualdade
Menor que
Menor ou igual
Maior que
Maior ou igual
Operao
qualquer
qualquer
escalar ou array
escalar ou array
escalar ou array
escalar ou array
Tipo do operador
da esquerda
Diviso
**
A dio
Subtrao
Concatenao
Multiplicao
Operao
+
&
*
Operador
fsico
inteiro ou ponto
flutuante
fsico
inteiro
igual aos operandos
igual aos operandos
fsico
mesmo do anterior
mesmo do anterior
mesmo do anterior
mesmo do anterior
mesmo do anterior
mesmo do anterior
Tipo do operador
da direita
boolean
boolean
boolean
boolean
boolean
boolean
Tipo do resultado
igual ao operador
da esquerda
numrico
numrico
bit, boolean ou
igual ao operador
array (bit, boolean) da direita
inteiro
inteiro ou ponto
flutuante
fsico
mesmo do anterior
mesmo do anterior
fsico
mesmo do anterior
mesmo do anterior
mesmo do anterior
mesmo do anterior
Tipo do resultado
Tipo do operador
da direita
3 - Expresses e Operadores
Ronaldo Hsemann
Lgica E
negada
Lgica OR
Negada
Lgica OR
exclusivo
Lgica X OR
negada
nand
ror
rol
sra
sla
srl
sll
Operador
xnor
xor
bit, boolean ou
array(bit,boolean)
bit, boolean
array(bit,boolean)
bit, boolean
array(bit,boolean)
bit, boolean
array(bit,boolean)
bit, boolean
array(bit,boolean)
bit, boolean
array(bit,boolean)
Tipo do operador
da esquerda
desloc. lgico
para esquerda
desloc. lgico
para direita
desl. aritmtico
para esquerda
desl. aritmtico
para direita
rotao para a
esquerda
rotao para a
direita
Operao
array de bit ou
boolean
array de bit ou
boolean
array de bit ou
boolean
array de bit ou
boolean
array de bit ou
boolean
array de bit ou
boolean
Tipo do operador
da esquerda
inteiro
inteiro
inteiro
inteiro
inteiro
inteiro
Tipo do operador
da direita
array de bit ou
boolean
array de bit ou
boolean
array de bit ou
boolean
array de bit ou
boolean
array de bit ou
boolean
array de bit ou
boolean
Tipo do resultado
Tipo do resultado
Tipo do operador
da direita
Lgica OR
or
nor
Lgica E
Operao
and
Operador
Ronaldo Hsemann
Este caso idntico ao caso anterior s que quando a condio chave = 1 for
falsa so executadas as linhas saida1 := 255 e registrador := valor_saida.
Uma outra variao desta estrutura permitida atravs da utilizao da palavrachave elseif, que funciona como uma nova estrutura de comparao dentro da estrutura
if corrente. So possveis tantos elseif quantos forem necessrios para refinar as
comparaes. A seguir tem-se um exemplo:
if chave = 1 then
saida1 := valor_saida;
else
saida1 := 255;
registrador := valor_saida
endif
if chave = 1 then
saida1 := valor_saida;
endif
4.1 - Estrutura IF
Ronaldo Hsemann
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;
case leitura is
when 1 | 3 =>
led1 := ON;
led2 := OFF;
when 2 | 4 =>
led1 := OFF;
led2 := ON
endcase
case seletor is
when 0 =>
sada <= entrada0;
when 1 =>
sada <= entrada1;
when 2 =>
sada <= entrada2;
when 3 =>
sada <= entrada3;
endcase;
4.2 - Estrutura CA SE
Ronaldo Hsemann
loop
A forma mais simples de uma estrutura for chamada desta forma por no
apresentar condio de sada. Esta estrutura particularmente til para aplicaes de
sistemas simples que s executam uma tarefa, como por exemplo um controle de nvel a
seguir:
Ronaldo Hsemann
loop
loop_externo : loop
contador := 0;
loop_intermediario : loop
loop_interno : loop
saida := contador;
exit when contagem_habilitada = '0';
exit loop_intermediario when reset_contador = '1';
endloop loop_interno
contador := contador +1;
endloop loop_intermediario
endloop loop_externo
loop
Ronaldo Hsemann
resultado := 1;
for n in 1 to 10 loop
resultado := resultado *n;
end loop;
onde o clculo simples de uma raiz quadrada feito at que se encontre o valor
mais prximo. Note que se o valor de entrada for zero, a condio do loop no
satisfeita e o mesmo no executado, resultando no valor raiz_quadrada := 0 que o
valor correto.
numero := valor_entrada;
raiz_quadrada := 0;
while raiz_quadrada*raiz_quadrada < numero loop
raiz_quadrada := raiz_quadrada + 0.1;
end loop;
...
next nome_loop when condicao = true
...
A ssim como no caso do exit, tambm possvel com next, a definio de qual
loop deve ser iniciado quando se estiver trabalhando com loops encadeados. O formato
de utilizao o seguinte:
medida_temperatura = entrada_medidor;
next when medida_temperatura < temperatura_maxima;
aquecedor := OFF;
alarme := ON;
endloop
loop
alarme:=ON) se a temperatura medida exceder o limite. Note que com o uso de next a
execuo no sai fora do loop
Ronaldo Hsemann
...
wait on a;
...
4.4 - Comando W A IT
contador := 5;
resultado := 0;
for contador in 10 downto 1 loop
resultado := contador;
end loop;
Ronaldo Hsemann
O comando de gerao (generate) usado para gerar rplicas de uma dada parte
da descrio V HDL. De forma simples este comando permite a realizao de uma cpia
dos comandos ou componentes inseridos entre as palavras-chaves generate e end
generate. A forma clssica de uso deste comando est na rplica de componentes,
quando se deseja montar um projeto que apresenta blocos que devem ser repetidos
vrias vezes.
implementa a espera de um sinal de nvel lgico '1' com durao de 1ms na porta
int_in para dar continuidade sequncia de operao.
...
wait until int_in = '1' for 1ms;
...
...
wait until clk = '1';
...
Ronaldo Hsemann
assert ponteiro_buffer /= 0
report Buffer de mensagens ocupado!
severity warning;
Observe que a linha que contm o comando report no finalizada com ';'. Isto
s permitido para uma sentena de comando report seguida de um comando severity.
Se no houver esta segunda linha a finalizao com ';' obrigatria.
O valor warning normalmente utilizado para casos em que o modelo pode
continuar rodando, mas em que se deve fazer uma advertncia ao programador.
assert valor_inicial = 0
report V alor inicial indefinido!
severity note;
Ronaldo Hsemann
Por fim o valor failure que o erro mais grave que poderia ocorrer. Indica um
erro extremo.
O valor error indica que uma condio de falha ocorreu e que deve-se corrigi-la
antes de se prosseguir com os trabalhos.
Ronaldo Hsemann
5 - Programao em V HDL
chamada modelo que possui duas portas de entrada (in) do tipo bit, declaradas
como a e b e uma porta de sada (out) tambm deste tipo, declarada como c.
Normalmente as portas de entrada de uma entidade so declaradas antes das de sada.
Cada declarao de interface seguido por ponto e vrgula ';', exceto a ltima. Tambm
necessrio colocar-se ponto e vrgula no final da definio de porta.
Conforme apresentado no item 2.2.4, bit um tipo pr-definido em V HDL, que
pode ter dois valores de representao '0' e '1'. Este tipo usado para representar dois
nveis lgicos de sinal.
entity modelo is
port ( a, b : in bit;
c : out bit);
end entity modelo;
-Declarao de entidade;
-Corpo de arquitetura
Ronaldo Hsemann
- Modelo comportamental
- Modelo estrutural
entity modelo is
port ( a, b : in bit := '1';
c : out bit);
end entity modelo;
Um tipo mais complexo poderia manter '0', '1' e 'Z' e talvez at 'X '. Na prtica
para representar valores digitais reais algumas vezes so utilizadas bibliotecas definidas
pela organizao IEEE ou por um vendedor de componentes. comum se encontrar os
tipos STD_LOGIC ou V L_BIT, que so representaes de circuito bem mais prximas
da realidade que os simples valores '0' e '1'.
possvel, em V HDL, a definio de valores iniciais para portas, durante a
definio da entidade, como no exemplo abaixo:
Ronaldo Hsemann
begin
Ronaldo Hsemann
pode-se utilizar esta estrutura para se compor sistemas mais complexos, como
registradores de um nmero qualquer de bits. Para ilustrar isto a seguir apresentada a
descrio de um registrador de 2 bits, chamado reg_ 2bits, construdo a partir do
flip_flop d_ latch, como na figura:
entity d_latch is
port ( d, clk : in bit;
q : out bit);
end entity d_latch;
Existem vrias formas pelas quais um modelo estrutural pode ser expresso. Uma
forma comum o esquemtico de circuito. Smbolos grficos so usados para
representar subsistemas que so conectados usando linhas representando fios. Esta
forma grfica geralmente uma das preferidas pelos projetistas. Entretanto a mesma
forma estrutural pode ser representada textualmente na forma de uma lista de conexes.
Uma descrio estrutural de um sistema expressa portanto em termos de
subsistemas interconectados por sinais.
O mapeamento de portas (port map) especifica que portas da entidade so
conectadas para que sinais do sistema que se est montando.
Por exemplo, tomando-se como base a entidade um flip-flop tipo D simples:
Ronaldo Hsemann
entity reg_2bits is
port ( d0, d1, clk : in bit;
q0, q1 : out bit);
end entity reg_2bits;
architecture estrutura of reg_2bits is
begin:
bit0: entity work.d_latch(behavioral)
port map (d => d0, clk => clk, q => q0)
bit1: entity work.d_latch(behavioral)
port map (d => d1, clk => clk, q => q1)
end architecture estrutura;
Note que, neste caso, 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.
Entretanto, apesar da forma apresentada ser funcional, muitas vezes na prtica se
costuma descrever formalmente o mapeamento de portas desejado. Isso torna o esquema
de ligaes implementado mais visual e intuitivo. O mapeamento ento se caracteriza
pela indicao dos sinais de origem e destino para cada uma das conexes (ou tambm
chamadas de instncias). Como exemplo, apresentada a seguir a mesma entidade
reg_ 2bits, descrita anteriormente, porm neste formato mais claro:
entity reg_2bits is
port ( d0, d1, clk : in bit;
q0, q1 : out bit);
end entity reg_2bits;
architecture estrutura of reg_2bits is
begin:
bit0: entity work.d_latch(behavioral)
port map (d0, clk, q0)
bit1: entity work.d_latch(behavioral)
port map (d1, clk, q1)
end architecture estrutura;
Ronaldo Hsemann
entity registrador_4bits is
port ( d : in bit_vector (0 to 3);
clk : in bit;
q : out bit_vector (0 to 3);
end entity registrador_4bits;
...
entity registrador_8bits is
port ( din : in bit_vector (0 to 7);
clk : in bit;
dout : out bit_vector (0 to 7));
end entity registrador_8bits;
architecture estrutura of registrador_8bits is
begin:
estrutura: entity work.registrador_4bits
port map ( d (0 to 3) => din (0 to 3),
clk => clk,
q (0 to 3) => dout (0 to 3))
port map ( d (0 to 3) => din (4 to 7),
clk => clk,
q (0 to 3) => dout (4 to 7))
end architecture estrutura;
Ronaldo Hsemann
entity FF_D is
port ( d, clk, rs, pr : in bit;
q, nq : out bit);
end entity FF_D;
...
entity reg_2bits is
port ( d0, d1, clk : in bit;
q0, q1 : out bit);
end entity reg_2bits;
architecture estrutura of reg_2bits is
begin:
bit0: entity work.FF_D(behavioral)
port map (d => d0, clk => clk,
rs => '1', pr => '1',
q => q0, nq => open)
bit1: entity work.FF_D(behavioral)
port map (d => d1, clk => clk,
rs => '1', pr => '1',
q => q1, nq => open)
end architecture estrutura;
Ronaldo Hsemann
...
entity multiplicador is
port ( clk, reset, multiplicando, multiplicador: in integer;
produto: out integer);
end entity multiplicador;
Ronaldo Hsemann
6 - Bibliotecas
inclui todos os elementos que compem a biblioteca new_ lib. Note que no caso
de duas ou mais bibliotecas possurem componentes com o mesmo nome, quando se
necessitar utilizar um especfico necessrio referenciar o nome da biblioteca correta.
use new_lib.all;
library macro_cel;
use macro_cel.reg32;
...
architecture registradores of somador32 is
begin:
entrada1: entity reg32
port map ( en => habilita, clk => clock,
d => entrada1, q => dado1);
...
Se o uso de um dado componente da biblioteca se tornar muito frequente devese utilizar a palavra-chave use seguida do nome da biblioteca e do componente
(separados pelo caracter .). Isto torna este componente globalmente visvel pelo
projeto. Por exemplo a descrio abaixo:
library macro_cel;
...
architecture registradores of somador32 is
begin:
entrada1: entity macro_cel.reg32
port map ( en => habilita, clk => clock,
d => entrada1, q => dado1);
...
Ronaldo Hsemann
7 - Subprogramas
...
procedure delay is
begin
for n in 1 to n_delay loop
wait for 10ns;
end loop;
end procedure delay;
...
delay;
-- chamada do procedimento de atraso
...
7.1 -Procedimentos
-Procedimentos;
-Funes.
Ronaldo Hsemann
...
end if;
end procedure converte_para_BCD;
begin
...
...
dado := 34;
envia_serial(dado);
...
Ronaldo Hsemann
7.2 - Funes
Ronaldo Hsemann
8 - Blocos Externos
Note que no exemplo se define um valor inicial de 3ns, o qual ser utilizado caso
o parmetro no seja alterado externamente.
entity FF is
generic (tpd : time := 3ns)
port ( d, clk : in bit;
q : out bit);
end entity FF;
architecture carga_FF of FF is
begin
wait until clk =1;
q <= d after tpd;
end architecture carga_FF;
-Mdulo (package);
-Componentes.
Ronaldo Hsemann
A traduo literal para package empacotamento, que entretanto no muito difundida. Ir-se utilizar
neste texto package associada ao termo mdulo, mais acessvel e que mantem a idia original.
Para a alterao dos valores destas constantes genricas deve-se utilizar uma
estrutura de mapeamento onde se atribuem os valores desejados a cada constante
genrica. Este mapeamento de constantes genricas deve ser feito atravs das palavraschaves generic map.
A seguir apresenta-se um exemplo de uso do flip-flop FF apresentado
anteriormente (supondo-o dentro da biblioteca de trabalho work):
Ronaldo Hsemann
...
entity interface _serial is
port (byte_ recebido : in serial_lib.caracter_recebido;
novo_byte : in serial_lib.caracter_rx);
end entity interface_serial;
Uma vez que uma declarao de mdulo seja compartilhada por um projeto,
todas as variveis declaradas podem ser livremente acessadas.
A seguir ir-se apresentar um exemplo de uso de um mdulo package tomandose como base o mdulo UA RT definido anteriormente:
package UA RT is
constant frequencia_base : positive :=19200;
variable caracter_rx : byte;
variable caracter_tx : byte;
variable caracter_recebido : bit :='0';
end package UA RT;
Ronaldo Hsemann
Este exemplo monta um mdulo conversor, que contm uma funo chamada
converte_ 7seg, a qual realiza a converso de um nmero do tipo byte para um conjunto
de bits segundo padro de acionamento usado para displays de 7 segmentos;
Dentro de um corpo de mdulo package pode-se definir novos tipos, variveis e
constantes que sero utilizados localmente (como no exemplo acima a varivel
valor_ inteiro). A lm disso pode-se definir funes locais que sero teis para o corpo
do mdulo.
package conversor is
function converte_7seg (byte_entrada : byte) return bit_vector (0 to 7);
end package conversor;
Ronaldo Hsemann
8.3 - Componentes
...
architecture gera_leitura of msg_lcd is
begin
conversao: process is
use string_lib.conversor.all;
variable byte_lido : byte;
variable string_lcd : byte_string;
begin
wait until flag_entrada = '1';
byte_lido := valor_entrada;
string_lcd := byte_para_string(byte_lido);
end process conversao;
end architecture gera_leitura;
Ronaldo Hsemann
component flipflop is
generic (Tprop, Tsetup, Thold : delay_length);
port (clk : in bit; d : in bit;
q , nq : out bit);
end component flipflop;
Ronaldo Hsemann
A fim de especificar a tecnologia real que ser utilizada no projeto pode-se fazer
uso de uma declarao de configurao (configuration declaration). Para tanto monta-se
uma estrutura de configurao em que pode-se definir para cada instncia, quais
entidades e modelos de corpo de arquitetura sero utilizados.
Deve-se utilizar a palavra-chave for seguida pela instncia (ou instncias
separadas por vrgula), o caracter dois pontos (:) e o nome do componente. A seguir
descrita a entidade que ser utilizada atravs da palavra-chave use. Caso a entidade
possua mais de um modelo comportamental, o modelo selecionado deve ser indicado
entre parnteses. Por exemplo, a estrutura a seguir:
Ronaldo Hsemann
que utiliza a mesma configurao definida anteriormente reg2_ gate_ level, agora
para o elemento flag_ reg.
possvel ainda efetuar-se a configurao de um componente no seu prprio
corpo de arquitetura, usando as estruturas apresentadas logo no incio das suas
declaraes. Isto pode ser melhor visto no exemplo abaixo:
Ronaldo Hsemann
Declarao de configurao 46
Declarao do componente 44
Declarao do mdulo 41
Caracteres 4
CA SE , estrutura 20
Character, tipo 11
Characters ver caracteres
Comentrios 3
Component declaration ver declarao
de componente
Component instance ver instncia do
componente
Component ver componente
Componente 44
Composite types ver tipos compostos
Configurao de Componentes 46
Configuration
declaration
ver
declarao de configurao
Constantes 6
Constants ver constantes
Converso de tipos 15
Corpo de arquitetura 29
Corpo do Mdulo 43
Bibliotecas 36
Bit string ver string de bit
Bit, tipo 11
Blocos Externos 40
Boolean, tipo 11
de
ponto
Identificador 3
Identifier ver identificador
IF, estrutura 19
Instncia do componente 45
Integer type ver inteiros, tipos
Inteiros, tipos 8
Entidade, declarao 28
Entity declaration ver entidade,
declarao
Enumerao, tipo 10
Enumeration type ver enumerao,
tipo
NDICE REMISSIV O
A rchitecture body ver corpo
arquitetura
A rquivo, tipo 7
A rray 12
A SSERT, comando 26
Ronaldo Hsemann
Record 14
REPORT, comando 26
Operaes aritmticas 17
Operaes de comparao 17
Operaes de
deslocamento
rotao 18
Operaes lgicas 18
Nmeros em V HDL 4
Ronaldo Hsemann
W A IT, estrutura 24
W HIL E-L OOP, estrutura 23
Tipos compostos 12
Tipos de dados 6
Tipos escalares 8