Vous êtes sur la page 1sur 28

Modelagem de Sistemas com VHDL

A abstrao empregada por projetistas de sistemas digitais pode ser


expressa em dois domnios:
No domnio estrutural, um componente descrito em termos de um
conjunto de componentes mais primitivos, interconectados.
CONTADOR2

BIT_0
CLOCK

T_FLIPFLOP
CK

BIT_1

INV
INVERSOR
A

Controle de Processos com Computador

Q0

FF0

T_FLIPFLOP
INV_FF0

CK

Profa.Luiza Mourelle

FF1

Q1

No domnio comportamental, um componente descrito em termos


de entradas e sadas.
architecture comportamento of contador2 is
begin
process (clock)
variable conta : natural := 0;
begin
if clock = 1 then
conta := (conta + 1) mod 4;
q0 <= bitval (conta mod 2) after atraso;
q1 <= bitval (conta / 2) after delay;
end if;
end process;
end comportamento;

Controle de Processos com Computador

Profa.Luiza Mourelle

Uma hierarquia da abstrao um conjunto de nveis de


representao interrelacionados, que permitem que um sistema seja
representado em diferentes detalhes.
Os nveis de representao comumente usados em projeto de
sistemas digitais so:
nvel

comportamental

estrutural

sistema

especificaes de
desempenho

computador,
disco

chip

algoritmo

microprocessador,
RAM, ROM

registro

fluxo de dados

registro, ALU, multiplexador

porta

equao Booleana

AND, OR, NOT, FF

circuito

equaes diferenciais

transistor, resistor, indutor,


capacitor

layout

nenhuma

formas geomtricas

Controle de Processos com Computador

Profa.Luiza Mourelle

A quantidade de detalhes requerida para representar um projeto


cresce medida que a hierarquia decresce.
importante que um projeto seja desenvolvido num nvel que tenha
detalhes suficientes, mas no excessivos. Detalhes insuficientes
produzem resultados imprecisos, ao passo que detalhes demais
tornam o projeto caro.
A representao de um projeto pode ser grfica ou textual. A
primeira inclui diagramas em bloco, esquemas lgicos, diagramas de
tempo e diagramas de estado. A segunda forma inclui linguagens
naturais (e.g., Portugus), equaes (Booleanas ou diferenciais) e
linguagens de computador.
Linguagens de programao com estruturas especiais para
modelagem de hardware so chamadas linguagens de descrio de
hardware (hardware description languages - hdl).
Controle de Processos com Computador

Profa.Luiza Mourelle

Geralmente, texto melhor para representar comportamentos


complexos e grficos so melhores para ilustrar interaes.

A linguagem de descrio de hardware VHDL


VHDL (Very high speed integrated circuit Hardware Description
Language) foi originalmente desenvolvida como um mtodo para
documentar projetos de circuitos integrados de altssima velocidade
(VHSIC), financiados pelo Departamento de Defesa Americano. Em
1987, foi adotada como um padro pelo IEEE (IEEE 1076).
Como todas as linguagens de descrio de hardware, possui duas
principais aplicaes: documentao e modelagem de um projeto.
Boa documentao ajuda a garantir a preciso e portabilidade de um
projeto. Modelagem usada para validar um projeto. Validao
atravs de simulao vem rapidamente substituindo o custoso
processo de prototipagem de um projeto.
Controle de Processos com Computador

Profa.Luiza Mourelle

Em VHDL, um circuito lgico representado por uma entidade de


projeto denominada entity. O circuito pode ser to complicado
quanto um processador ou to simples quanto uma porta lgica.
Uma entidade de projeto consiste de uma descrio da interface e
um ou mais corpos de arquitetura.
Ex: Considere a descrio de interface de um circuito que conta o
nmero de 1s presentes nas suas trs entradas:

contador_de_uns

entity contador_de_uns is
port (A : in bit_vector (2 downto 0);
B : out bit_vector (1 downto 0));
end contador_de_uns;
Controle de Processos com Computador

Profa.Luiza Mourelle

A descrio da interface define o nome da entidade e descreve suas


entradas e sadas. A descrio dos sinais da interface inclui tanto o
modo do sinal quanto o seu tipo.
O que requerido agora um meio de especificar o comportamento
da entidade. Isto feito atravs de um corpo de arquitetura.
Uma descrio comportamental, em linguagens de descrio de
hardware, normalmente toma duas formas:
Algortmica -

o procedimento que define a entrada/sada no


feito para representar qualquer implementao
fsica.

Fluxo de dados -

as dependncias de dados na descrio


correspondem quelas na implementao real.

Controle de Processos com Computador

Profa.Luiza Mourelle

No comeo do processo de projeto, deve-se usar uma descrio


algortmica.
Durante o estgio de projeto lgico, pode-se descrever o
comportamento do contador usando equaes Booleanas. Neste
caso, a arquitetura algortmica poderia ser substituda por uma de
fluxo de dados.
Enquanto essa descrio implica no uso de estruturas de portas
padro usando AND, OR e NOT, ela , como a arquitetura
algortmica, ainda comportamental no sentido de que especifica as
entradas e sadas da entidade, sem exatamente especificar a estrutura
interna.
Considerando a sada B como dois sinais, poderamos decompor o
contador de uns em dois componente.

Controle de Processos com Computador

Profa.Luiza Mourelle

Devem existir descries de interface e corpos de arquitetura para


todos os componentes utilizados dentro do corpo de arquitetura
desses dois componentes.
Assim como em outras formas de programao, uma vez que os
modelos estejam descritos, eles devem ser testados. Uma forma de
faz-lo criar uma entidade de mais alto nvel denominada teste.

Elementos lxicos
Um comentrio comea com dois hfens adjacentes e se estende at
o fim da linha. Ex: C<=A and B; -- comentrio
Um identificador o nome de um objeto ou uma palavra
reservada. Identificadores devem comear com uma letra e conter
somente letras, dgitos e sub-linha. O ltimo caracter deve ser uma
letra ou dgito. No h distino entre maisculas e minsculas.
Controle de Processos com Computador

Profa.Luiza Mourelle

Um caracter literal formado a partir de um caracter simples entre


apstrofes. Ex: A, b, 6
Um literal do tipo cadeia de caracteres formado a partir de uma
seqncia de caracteres entre aspas. Ex: Uma cadeia
Um literal do tipo cadeia de bits consiste de uma cadeira de dgitos
entre aspas e precedida pelo especificador da base. Este pode ser
uma letra B (binrio), O (octal) ou X (hexadecimal). Ex: B0110
H duas classes de nmeros literais: decimal e baseados. Os
decimais so expressos na notao decimal padro, usada em muitas
linguagens de programao de alto nvel. Ex: 5, 3E3, 23e0 (inteiros);
2.5, 24.65e4 (reais)

Controle de Processos com Computador

Profa.Luiza Mourelle

Os baseados consistem de uma base (entre 2 e 16), seguida de uma


sequncia de dgitos significativos e um expoente. A base e o
expoente so especificados na base 10 e os dgitos significativos
devem ser precedidos e seguidos pelo caracter #. Ex: 16#FfF#,
2#1111 (inteiros); 16#0.fff#e3, 2#1.1111#e11.

Tipos de dados e objetos


O tipo de dados de um objeto especifica que valores o objeto pode
ter e limita o tipo de operao que pode ser realizada com ele. Em
VHDL, h quatro classes de tipos de dados: escalar, composto, de
acesso, arquivo.
Tipo de dados escalar tem valores simples e nicos, e incluem
inteiros, reais, quantidades fsicas e enumerao.
Tipo de dados compostos tem valores complexos e incluem vetores
e registros.
Controle de Processos com Computador

Profa.Luiza Mourelle

Tipo de dados de acesso (ponteiros) so usados em conjunto com


estruturas de dados dinmicas, tais como listas encadeadas e filas.
Tipo de dados arquivo so usados para armazenar dados usados em
programas VHDL. Vetores de teste para um modelo so
freqentemente armazenados em arquivos.
Um tipo de dado inteiro um conjunto de valores inteiros, dentro de
um limite definido. Ex: type byte_int is range 0 to 255;
O tipo inteiro predefinido integer tem um limite que depende da
implementao, mas deve incluir -2147483647 a +2147483647.
Um tipo de ponto flutuante representa um aproximao discreta de
um conjunto de nmeros reais dentro de um limite especificado. Ex:
type signal_level is range -10.00 to 10.00;

Controle de Processos com Computador

Profa.Luiza Mourelle

O tipo ponto flutuante predefinido real est dentro do limite -1e38 a


+1e38.
Um tipo de dados fsico um tipo de dados numrico escalar com
um sistema de unidades associado, que usado para representar
alguma quantidade fsica, tal como massa, comprimento, tempo,
voltagem. Uma declarao do tipo fsico inclui a especificao de
uma unidade de base e, possivelmente, unidades secundrias que
podem ser mltiplos da unidade base, e.g., o tipo de dados fsico
predefinido time:
type time is range definido_pela_implementao
units
fs;
-- fentosegundo
ps = 1000 fs; -- picosegundo
ns = 1000 ps; -- nanosegundo
us = 1000 ns; -- microsegundo
ms = 1000 us; -- milisegundo
end units;
Controle de Processos com Computador

Profa.Luiza Mourelle

Um tipo enumerao um conjunto ordenado de identificadores e


caracteres.
Ex: type cor is (vermelho, verde, azul);
type tristate is (z, 0, 1);
type estado (so, s1, s2, s3, s4);

H um nmero de tipos enumerados predefinidos.


Ex: type bit is (0, 1);
type boolean is (false, true);

Um tipo array uma coleo de elementos indexados do mesmo


tipo.
Ex: type palavra is array (31 downto 0) of bit;
type memria is array (address) of palavra;
type array_2d is array (0 to 15, 0 to 15) of bit;

Controle de Processos com Computador

Profa.Luiza Mourelle

Exemplos de tipos de array predefinidos:


type string is array (positivo range <>) of
character;
type bit_vector is array (natural range <>) of bit;

O alcance do ndice para o tipo de dados string do tipo positivo. A


notao <> significa que o alcance ilimitado e pode ser
especificado quando um objeto desse tipo for declarado.
Um tipo registro uma coleo de elementos nominados,
possivelmente de tipos diferentes.
Ex: type data is record
dia: integer range 1 to 31;
ms: nome_do_ms;
ano: integer range 0 to 3000;
end record;
Controle de Processos com Computador

Profa.Luiza Mourelle

Ex: type instruo is record


cdigo_op: op_processador;
fonte: integer range 0 to 15;
destino: integer range 0 to 15;
end record;

Um subtype um tipo juntamente com uma restrio. Um valor


pertence ao subtype se um valor legtimo para o tipo e satisfaz
restrio. H dois subtipos inteiros predefinidos:
Ex: subtype natural is integer range 0 to
inteiro_mais_alto;
subtype positivo is integer range 1 to
inteiro_mais_alto;

O tipo base de um subtipo o tipo do qual foi construdo, e.g., o tipo


base do subtipo natural inteiro.

Controle de Processos com Computador

Profa.Luiza Mourelle

Um objeto de dados um repositrio no qual valores de um tipo


definido podem ser armazenados.
H trs classes de objetos de dados: constantes, variveis e sinais.
Objetos de dados devem ser declarados antes de serem referenciados
em uma declarao de atribuio.
Uma constante um objeto cujo valor especificado em tempo de
compilao e no pode ser modificada durante a simulao.
Ex: constant nvel: probabilidade := 0.75;
constant estado_inicial: estado := s0;
constant mensagem: string := Al;

Uma varivel um objeto cujo valor corrente pode ser modificado


por uma declarao VHDL.

Controle de Processos com Computador

Profa.Luiza Mourelle

Ex: variable A, B, C: bit;


variable raio: real := 0.0;
variable tempo_de_evento: tempo := 1 ns;
variable registro: bit_vector (3 downto 0):=B1010;

Variveis s podem ser declaradas dentro de processos ou


subprogramas.
Um sinal um objeto de dados que tem uma dimenso de tempo.
Valores futuros podem ser atribudos ao objeto de dados sem afetar o
valor corrente.
Ex: signal s1, s2, s3 : bit;
signal bus: bit_vector (3 downto 0) := B0000;

Sinais podem no ser declarados dentro de processos ou


subprogramas.

Controle de Processos com Computador

Profa.Luiza Mourelle

Tipo e objetos declarados numa descrio VHDL podem ter


informao adicional, chamada atributos, associadas com eles.
Associado com qualquer tipo ou subtipo escalar T tem-se os
seguintes atributos:
Tleft
Tright
Tlow
Thigh

limite esquerdo de T
limite direito de T
limite inferior de T
limite superior de T

Para qualquer tipo ou subtipo fsico ou discreto T, X um membro de


T, e N um inteiro, pode-se usar:
Tpos(X)
posio de X em T
Tval(N)
valor da posio N em T
Tleftof(X) valor em T que uma posio
Controle de Processos com Computador

esquerda de X

Profa.Luiza Mourelle

H tambm atributos associados a arrays, tais como:


Arange(N)
Alength(N)

alcance do ndice de dimenso N de A;


comprimento do alcance do ndice de dimenso
N de A.

e a sinais, tais como:


Sactive

Sevent

valor lgico indicando presena de uma


transio em S durante o ciclo atual de
simulao;
valor lgico indicando a presena de um evento
em S durante o ciclo atual de simulao.

Controle de Processos com Computador

Profa.Luiza Mourelle

Declarao de Atribuio
Um declarao de atribuio a uma varivel substitui o valor atual de
uma varivel por um novo valor determinado por uma expresso. A
varivel assume seu novo valor instantaneamente. Exemplo:
estado_atual := s4;
A := 1;
Registro (0) := 0;

Registro := B1111;
data_atual.ano := 1993;

Declaraes de atribuio a sinal escala um novo valor para um sinal


a ser realizado em um momento no futuro. O valor atual de um sinal
nunca muda. Se nenhum valor definido de tempo especificado, o
valor padro um tempo infinitesimal no futuro, conhecido como
tempo delta. Exemplo: s1<=1 after 10 ns;
sr1<=5 after 5 ns;
s2<=0 after 10 ns,1 after 20 ns;
reset <= 0;
Controle de Processos com Computador

Profa.Luiza Mourelle

Operadores e Expresses
VHDL comporta os seguintes operadores:

genricos
multiplicao
sinal
adio
relacional
lgico

**, abs, not


*, /, mod, rem
+, +, -, &
=, /=, <, <=, >, >=
and, or, nand, nor, xor

Operadores na mesma linha tem mesma precedncia. Operadores


numa determinada linha tem maior precedncia que os operadores na
linha inferior.

Controle de Processos com Computador

Profa.Luiza Mourelle

Operadores lgicos operam sobre variveis ou sinais do tipo bit ou


Boolean. Eles tambm podem operar sobre arranjos unidimensionais, cujos elementos so desses tipos.
Operadores relacionais so usados para comparar valores de
operandos do mesmo tipo base, produzindo resultados Booleanos.
Operadores aditivos so usados para somar e subtrair operandos
numricos ou para concatenar arranjos uni-dimensionais do mesmo
tipo base.
Operadores de sinal so usados para mudar o sinal dos operandos
numricos.
Operadores de multiplicao so usados para multiplicar e dividir
operandos inteiros ou de ponto flutuante.

Controle de Processos com Computador

Profa.Luiza Mourelle

Declaraes de Controle Seqencial


As declaraes condicionais podem ser do tipo if ou case. Ex:
if A < 0 then nvel := 1;
elsif A > 1000 then nvel := 3;
else nvel := 2;
end if;

case A + B is
when 0
=> X <= zero;
when (1 to 20) => X <= positivo;
when others
=> X <= negativo;
end case;

Controle de Processos com Computador

Profa.Luiza Mourelle

H trs tipos de instrues de repetio. Exemplo:


while A < B loop
A := A + 1;
end loop;
for I in 1 to 10 loop
A(I) := A(I) + 1;
end for;
loop
A := A + 1;
exit when X > 10;
end loop;

A declarao next termina a execuo da iterao atual e comea a


subseqente. A declarao exit termina a execuo da iterao atual
e do loop. Exemplo: next [etiqueta do loop] [when condio]
exit [eitqueta do loop] [when condio]
Controle de Processos com Computador

Profa.Luiza Mourelle

Declaraes Concorrentes
Declaraes do tipo process so de duas formas. A primeira contm
um lista sensitiva. Exemplo:
com_lista: process (s1, s2)
declarao de constantes e de variveis;
begin

comandos seqenciais;
end process

com_lista;

Esse tipo de processo executado uma vez no comeo da simulao


e, em seguida, somente quando um sinal na lista sensitiva muda de
valor.
Controle de Processos com Computador

Profa.Luiza Mourelle

A outra forma de comando do tipo process no tem lista sensitiva.


Exemplo:
sem_lista: process
declarao de constantes e de variveis;
begin

comandos sequenciais;
wait on s1, s2;
end process sem_lista;
Processos desse tipo so executados uma vez, no comeo da
simulao, e continuam a ser executados at que um comando wait
seja encontrado. Quando o ltimo comando seqencial executado,
o processo recomea automaticamente a partir do primeiro comando
seqencial.

Controle de Processos com Computador

Profa.Luiza Mourelle

Atrasos
Em VHDL, atrasos podem ser especificados de duas formas. Ex:
Y <= X;
Y <= X after 10 ns;

-- atraso delta
-- atraso de uma unidade de tempo

No primeiro comando, o sinal Y recebe o valor atual de X depois de


um atraso delta. Este atraso corresponde a um perodo de tempo
maior do que zero, mas menor do que qualquer unidade de tempo
padro. No segundo comando, Y recebe o valor de X depois de um
atraso determinado pela unidade de tempo.

Controle de Processos com Computador

Profa.Luiza Mourelle

Vous aimerez peut-être aussi