Você está na página 1de 22

Nicholas Augusto da Silva Ribeiro

Matrcula - 16931
Apresentao de
Linguagens de Progr.
Linguagem VHDL
VHDL ou "VHSIC Hardware Description Language" (Linguagem de descrio de
hardware VHSIC "Very High Speed Integrated Circuits") uma linguagem usada para
facilitar o design (projeto/concepo) de circuitos digitais com funo especfica e definida
ou ASIC (Application Specific Integrated Circuit).

Linguagem VHDL
A linguagem VHDL foi originalmente desenvolvida sob o comando do
Departamento de Defesa dos Estados Unidos em meados da dcada de 1980. At aquele
momento, a nica metodologia largamente utilizada no projeto de circuitos era a criao
atravs de diagramas esquemticos. O problema com esta metodologia o fato de que
desenho tem menor portabilidade, so mais complexos para compreenso e so
extremamente dependentes da ferramenta utilizada para produzi-los, tornando-os
inviveis.
FIGURA - Esquemtico de um
amplificador. Simples projeto que se
torna de difcil entendimento quando
feito apenas em desenho esquemtico.
Linguagem VHDL
O desenvolvimento da VHDL serviu inicialmente aos propsitos de
documentao do projeto VHSIC. Entretanto, nesta poca buscava-se uma linguagem que
facilitasse o projeto de um circuito; ou seja, a partir de uma descrio textual, um
algoritmo, desenvolver o circuito, sem necessidade de especificar explicitamente as
ligaes entre componentes. A VHDL presta-se adequadamente a tais propsitos,
podendo ser utilizada para as tarefas de documentao, descrio, sntese, simulao,
teste, verificao formal e ainda compilao de software, em alguns casos.
Aps o sucesso inicial do uso da VHDL, a sua definio foi posta em domnio
pblico, o que levou a ser padronizada pelo IEEE em 1987.
Linguagem VHDL
A VHDL, bem como outras linguagens seguem um fluxo de projeto bem definido,
composto de sete etapas como apresenta a Figura.
So elas: Especificao de Requisitos, Modelamento, Sntese de Alto Nvel,
Mapeamento Tecnolgico, Implementao e ou Fabricao, Testes e Simulao. O tempo
e o custo de cada etapa dentro de um projeto bastante varivel, dependendo da
tecnologia utilizada para implementar o sistema.
Caractersticas da Linguagem
A linguagem VHDL no case-sensitive.
A estrutura da linguagem eh sequencial e multi processual, ou seja, mais de um
processo executa ao mesmo tempo, e dentro do processo os comandos executam
sequencialmente.
Existe um certo nvel de hierarquia dentro da arquitetura, portanto, a linguagem
pode ser orientada a objetos, mesmo que exista pouco uso dessa estrutura.

Estrutura da Linguagem
Entity: a parte principal do projeto, a interface do Sistema que descreve as
entradas e sadas. Exemplo:
entity ORGATE is

end ORGATE;

Architecture: o corpo do sistema, onde so feitas as atribuies, operaes,
comparaes, etc. Declarado como architecture nome of entity is. Podem existir
vrias architecturas para a mesma entidade. Exemplo:
architecture RTL of ORGATE is
begin

end RTL;

Estrutura da Linguagem
Process: Diretiva usada quando se quer fazer uma lista de operaes a serem
executadas. Implementada dentro de architecture. Possui forma estruturada.
Exemplo:
atrib : process( X, Y)
begin
A X;
B Y;
end process atrib;

Comentrios: So iniciados com dois traos "--" e terminam no final da linha.
Exemplo:
-- este um comentrio
Declaraes
Sinal: Transmite os dados internamente ou externamente ao sistema sendo que os
sinais externos so definidos em entity e usam a diretiva ports, j os sinais
internos so definidos em architecture e usam a diretiva signal. Os sinais podem
ser uma linha (bit) ou um barramento (bit_vector). No caso do bit_vector a ordem
de suma importncia, sendo que o primeiro sinal o mais significativo e o
ltimo o menos significativo. Em ports tem que especificar a direo do sinal:
entrada(in), sada (out) ou bidirecional (inout). Em signal no precisa especificar a
direo devido ao fato do sinal ser interno. Sendo assim, o exemplo a seguir define
um port com dois vetores, sendo um vetor X e um vetor Y:
port ( X : out bit_vector (10 downto 0);
Y : inout bit_vector (0 to 5));

J nesse exemplo definimos a e b como signal e ambos sendo bit.
signal a, b : bit;
Declaraes
Constantes: Servem para aumentar a legibilidade do cdigo e facilitar a sua
modificao. definida como
CONSTANT <nome_da_constante> : <tipo> := <valor>;
Exemplo:
CONSTANT PI : REAL := 3.14;
CONSTANT WIDTH : INTEGER := 8;

Variveis: Usadas apenas em processos e subprogramas (funes e
procedimentos), as variveis usualmente no esto disponveis para mltiplos
componentes e processos. Todas as atribuies de variveis tem efeito imediato.
definida como
VARIABLE <nome_variavel> : <tipo> [:= <valor>];
Exemplo:
VARIABLE opcode : BIT_VECTOR (3 DOWNTO 0) := "0000";
VARIABLE freq : INTEGER;
Principais Operadores
Operadores Lgicos: Os operadores and, or, nand, nor, xor e xnor exigem dois
operandos, j o operador not exige apenas um operando.

Operadores aritmticos:
+ soma ou identidade;
- subtrao ou negao;
* multiplicao;
/ diviso;
mod mdulo;
rem resto da diviso;
abs valor absoluto;
** exponenciao.


Principais Operadores
Atribuio e comparaes:
<= atribuio;
= igual;
/= diferente;
< menor;
<= menor ou igual;
> maior;
>= maior ou igual;

Principais Operadores
Controles condicionais: Existem cinco comandos condicionais: if then, if then
else, case, for loop, next.
1. If Then: Ser executado o que estiver dentro do bloco se a condio for
verdadeira. Exemplo de if then:

cmp : process
begin
if A /= B then
C B;
end if;
end process cmp;
Principais Operadores
2. If Then Else: Se a condio for verdadeira ser executado o que estiver
dentro de then, caso contrrio ser executado o que estiver dentro de
else. Exemplo de if then else:

cmp : process
begin
if A = B then
C <= 0;
elsif A < B then
C <= 1;
else
C <= A;
end if;
end process cmp;
Principais Operadores
3. Case: Quando o teste de condio de uma varivel poder assumir vrios
opes, recomendado o uso do case. Exemplo de case:

converte : process
begin
case Bin is
when "0000" Dec 0;
when "0001" Dec 1;
when "0010" Dec 2;
when "0011" Dec 3;
when others Dec -1;
end case;
end process converte;
Principais Operadores
4. For Loop:Enquanto o contador estiver dentro da faixa especificada o
loop executado. Exemplo de for loop:

conta : process
begin
for i in 5 downto 0 loop
Num Num + 1;
end loop;
end process conta;
Principais Operadores
5. Next: Quando se quer pular determinados comandos e ir diretamente
para outro usa-se o comando next. Exemplo de next:

soma : process
begin
aux : for i in 3 downto 0 loop
Num Num + X;
if Num = 10 then Num 0;
next alfa;
end if
end loop aux;
end process soma;
Exemplos
Descrio comportamental de um bloco lgico:
Exemplos
Controlador de quatro displays sequenciais de 7 segmentos:
Exemplos
Exemplos
LIBRARY ieee ;
USE ieee.std_logic_1164.all ;

ENTITY fulladd IS
PORT ( Cin, x, y : IN STD_LOGIC ;
s, Cout : OUT STD_LOGIC ) ;
END fulladd ;

ARCHITECTURE beh OF fulladd IS
BEGIN
s <= x XOR y XOR Cin ;
Cout <= (x AND y) OR (Cin AND x) OR (Cin AND y) ;
END beh ;
Converso de esquemtico para cdigo de um somador completo:
Referncias
http://slideplayer.com.br/slide/335331/#
http://en.wikipedia.org/wiki/VHDL
http://www.altera.com/support/software/sof-quartus.html
http://engineersworld.wordpress.com/2011/04/07/vhdl-code-for-full-adder/

Você também pode gostar