Beruflich Dokumente
Kultur Dokumente
Aula 03
Prof. Fbio Ramos
Sistemas Digitais
Tpicos a serem abordados na aula de hoje
1. Introduo a VHDL
1.
2.
3.
4.
5.
6.
7.
Histrico
Tipos de dados
Bibliotecas
Entidade VHDL
Operadores
Arquitetura VHDL
Condicionais VHDL (if - case)
Sistemas Digitais
Introduo ao VHDL
Criado no incio da dcada de 1980 pelo Departamento de
Defesa dos Estados Unidos;
Criado para documentar projetos de circuitos integrados.
Sistemas Digitais
Introduo ao VHDL
Foi padronizada pela IEEE em 1987;
Revisada em 1993;
Sistemas Digitais
Introduo ao VHDL:
Um cdigo HDL sintetizado, j um cdigo de programa
compilado para o processador escolhido.
Cdigo
VHDL
Cdigo
C
Sntese
Compilao
Sistemas Digitais
Tipos de dados em VHDL
Tipos de dados bsicos
Tipo
Valor
Exemplo
0,1
0,1
boolean
TRUE, FALSE
TRUE, FALSE
integer
-2 -1 x 2 -1
real
-3.65*1047 x +3.65*1047
time
bit
Sistemas Digitais
Tipos de dados em VHDL
std_logic: na prtica, o tipo de dados mais usado.
Necessita da biblioteca std_logic_1164 da IEEE para funcionar.
no inicializada
indefinida
0
1
-
dont care
alta impedncia
Indefinida fraca
0 fraco
1 fraco
Sistemas Digitais
Tipos de dados em VHDL
O tipo integer pode ser definido em funo dos valores
mnimo e mximo que se espera dele:
integer range 0 to 7
Ou seja, esse sinal pode assumir os valores 0,1,2,3,4,5,6 ou
7.
Para isso seria necessrio um sinal de 3 bits (2 valores possveis)
logicamente.
Sistemas Digitais
Tipos de dados em VHDL
Vetores: o tipo bit e o tipo std_logic podem ser usados
tambm como vetores:
ndice
i(3) i(2) i(1) i(0)
ndice
j(0) j(1) j(2) j(3) j(4) j(5)
signal j : std_logic_vector(0 to 5)
0 U 0
Sistemas Digitais
Tipos de dados em VHDL
Vetores: Esses vetores permitem acesso a qualquer bit
pelo ndice:
ndice
i(3) i(2) i(1) i(0)
ndice
j(0) j(1) j(2) j(3) j(4) j(5)
signal j : std_logic_vector(0 to 5)
0 U 0
Caso se queira acessar
o bit 3 e trocar o valor
por outro, isso
possvel
Sistemas Digitais
Tipos de dados em VHDL
Array: composio de um ou mais tipos de dados.
Exemplo:
type example is array (integer range 0 to 3) of std_logic_vector (3 downto 0)
signal vec : example
i(3) i(2) i(1) i(0)
e(0)
e(1)
e(2)
U 1
e(3)
0 H 1
Sistemas Digitais
I/O em VHDL
Entradas e sadas mais utilizadas: IN, OUT, INOUT.
Quando declarados, precisam ser associados a um dos tipos de
dados citados anteriormente.
IN
OUT
INOUT
Sistemas Digitais
Bibliotecas/pacotes em VHDL
A primeira definio a ser feita em uma descrio VHDL
Seguem algumas bibliotecas e suas funes
Nome da Biblioteca
Funo
std_logic_1164
std_logic_signed
std_logic_unsigned
std_logic_arith
std_logic_textio
textio
Sistemas Digitais
Bibliotecas/pacotes em VHDL
Como defini-las na descrio VHDL (sempre no topo do
cdigo e encerra-se a definio com ;):
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_signed.all;
use IEEE.std_logic_textio.all;
use std.textio.all;
use work.<nome_generico>.all;
Sistemas Digitais
Bibliotecas/pacotes em VHDL
Como defini-las na descrio VHDL (sempre no topo do
cdigo):
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use IEEE.std_logic_signed.all;
use IEEE.std_logic_textio.all;
use std.textio.all;
Bibliotecas essenciais!!
Sistemas Digitais
Descrio VHDL
Conceito de black-box:
um sistema ou objeto que s temos informaes a respeito das
entradas e sadas e das caractersticas de transferncias de dados
entre entradas e sadas.
No temos informaes de COMO essa transferncia feita!
in1
out1
in2
Sistemas Digitais
Descrio VHDL
Entidade bsica em VHDL: entity
como se fosse o black-box do componente que se deseja
Sistemas Digitais
Descrio VHDL
Entidade bsica em VHDL: entity
como se fosse o black-box do componente que se deseja
Sistemas Digitais
Descrio VHDL
Entidade bsica em VHDL: entity
como se fosse o black-box do componente que se deseja
Sistemas Digitais
Descrio VHDL
O entity desse componente seria:
entity and_logic is
port(
in1 : in std_logic;
in2 : in std_logic;
out1 : out std_logic);
end and_logic;
in1
out1
in2
Sistemas Digitais
Descrio VHDL
dado um nome para a entidade (no caso and_logic)
entity and_logic is
port(
in1 : in std_logic;
in2 : in std_logic;
out1 : out std_logic);
end and_logic;
in1
out1
in2
Sistemas Digitais
Descrio VHDL
Cada entrada/sada no black-box foi associada com um
pino na descrio
Definio de
entradas
entity and_logic is
port(
in1 : in std_logic;
in2 : in std_logic;
out1 : out std_logic);
end and_logic;
in1
out1
in2
Definio de
sadas
Sistemas Digitais
Descrio VHDL
Como dito anteriormente, cada entrada/sada tem que
estar associado com um dos tipos de dados VHDL:
entity and_logic is
port(
in1 : in std_logic;
in2 : in std_logic;
out1 : out std_logic);
end and_logic;
in1
out1
in2
Sistemas Digitais
Descrio VHDL
A sintaxe VHDL exige um ; ao fim de cada entrada e sada
e no fim da entidade:
entity and_logic is
port(
in1 : in std_logic;
in2 : in std_logic;
out1 : out std_logic);
end and_logic;
in1
out1
in2
Sistemas Digitais
Descrio VHDL
Somente a definio da entity no define qual funo que
ser desempenhada pelo componente;
Na verdade, uma mesma entity pode ter mais que uma funo
definida.
Sistemas Digitais
Operadores VHDL
Operador
Tipo
Operador
Tipo
Operador
Tipo
**
exponenciao
sll
and
and lgico
abs
valor absoluto
srl
or
or lgico
not
negao
sla
nand
nand lgico
multiplicao
sra
nor
nor lgico
diviso
rol
Rotate left
xor
xor lgico
mod
mdulo
rol
Rotate right
xnor
xnor lgico
rem
resto
igual
adio
/=
diferente
subtrao
<
menor que
&
concatenao
<=
>
maior que
>=
Sistemas Digitais
Descrio VHDL
Exemplo usando a nossa entity j definida:
architecture behavior of and_logic is
begin
out1 <= in1 and in2;
end behavior;
in1
out1
in2
Sistemas Digitais
Descrio VHDL
Exemplo usando a nossa entity j definida:
architecture behavior of and_logic is
begin
out1 <= in1 and in2;
end behavior;
Comeo de
arquitetura
Nome dado
arquitetura
Fim da
arquitetura
Nome da
entidade
Sistemas Digitais
Descrio VHDL
Exemplo usando a nossa entity j definida:
architecture behavior of and_logic is
begin
out1 <= in1 and in2;
end behavior;
Sinal de
atribuio
Operador and
Sistemas Digitais
Descrio VHDL
Exemplo usando a nossa entity j definida:
architecture behavior of and_logic is
begin
out1 <= in1 and in2;
end behavior;
O final de uma
atribuio exige o
;
O fim de uma
arquitetura tambm
exige o ;
Sistemas Digitais
Descrio VHDL
Cdigo completo para nossa lgica and:
library IEEE;
use IEEE.std_logic_1164.all
use IEEE.std_logic_arith.all
use IEEE.std_logic_signed.all
entity and_logic is
port(
in1 : in std_logic;
in2 : in std_logic;
out1 : out std_logic);
end and_logic;
architecture behavior of and_logic is
begin
out1 <= in1 and in2;
end behavior;
Sistemas Digitais
Descrio VHDL
Cdigo completo para nossa lgica and:
library IEEE;
use IEEE.std_logic_1164.all
use IEEE.std_logic_arith.all
use IEEE.std_logic_signed.all
entity and_logic is
port(
in1 : in std_logic;
in2 : in std_logic;
out1 : out std_logic);
end and_logic;
architecture behavior of and_logic is
begin
out1 <= in1 and in2;
end behavior;
Bibliotecas
Entidade
Arquitetura
Sistemas Digitais
Descrio VHDL
E se quisssemos uma lgica or:
library IEEE;
use IEEE.std_logic_1164.all
use IEEE.std_logic_arith.all
use IEEE.std_logic_signed.all
entity and_logic is
port(
in1 : in std_logic;
in2 : in std_logic;
out1 : out std_logic);
end and_logic;
architecture behavior of and_logic is
begin
out1 <= in1 or in2;
end behavior;
Bastaria mudar o
operador
in1
out1
in2
Sistemas Digitais
Descrio VHDL
Condicionais:
O VHDL permite o uso de condicionais, muito semelhante as
linguagens de programao.
Os condicionais sero utilizadas dentro da parte de architecture
do cdigo.
Sistemas Digitais
Descrio VHDL
Condicionais: if-then-elsif-then-else-end if
Exemplo em pseudo-cdigo VHDL:
if (condio) then
{executa alguma ao};
elsif (outra condio) then
{executa outra ao};
elsif (outra condio ainda) then
{executa outra ao};
else
{executa a ltima opo de ao};
end if;
Sistemas Digitais
Descrio VHDL
Condicionais: if-then-elsif-then-else-end if
Exemplo em pseudo-cdigo VHDL:
if (condio) then
{executa alguma ao};
elsif (outra condio) then
{executa outra ao};
elsif (outra condio ainda) then
{executa outra ao};
else
{executa a ltima opo de ao};
end if;
O if e o elsif sempre
necessitam de uma
condio. Essa
condio pode ou no
estar entre parnteses
(opcional)
Sistemas Digitais
Descrio VHDL
Condicionais: if-then-elsif-then-else-end if
Exemplo em pseudo-cdigo VHDL:
if (condio) then
{executa alguma ao};
elsif (outra condio) then
{executa outra ao};
elsif (outra condio ainda) then
{executa outra ao};
else
{executa a ltima opo de ao};
end if;
O else no necessita
condio (ele
pressupe que todas as
demais condies
possveis foram
testadas.)
Sistemas Digitais
Descrio VHDL
Condicionais: if-then-elsif-then-else-end if
Exemplo em pseudo-cdigo VHDL:
if (condio) then
{executa alguma ao};
elsif (outra condio) then
{executa outra ao};
elsif (outra condio ainda) then
{executa outra ao};
else
{executa a ltima opo de ao};
end if;
O else no necessita de
then.
A sequncia de condicionais
se encerra em um end if
seguido de ;
Sistemas Digitais
Descrio VHDL
Condicionais: if-then-elsif-then-else-end if
Exemplo em pseudo-cdigo VHDL:
if (condio) then
{executa alguma ao};
elsif (outra condio) then
{executa outra ao};
elsif (outra condio ainda) then
{executa outra ao};
else
{executa a ltima opo de ao};
end if;
Testa-se a
primeira
condio
Sistemas Digitais
Descrio VHDL
Condicionais: if-then-elsif-then-else-end if
Exemplo em pseudo-cdigo VHDL:
if (condio) then
{executa alguma ao};
elsif (outra condio) then
{executa outra ao};
elsif (outra condio ainda) then
{executa outra ao};
else
{executa a ltima opo de ao};
end if;
Se a primeira
condio no
foi satisfeita,
testa-se a
segunda
Sistemas Digitais
Descrio VHDL
Condicionais: if-then-elsif-then-else-end if
Exemplo em pseudo-cdigo VHDL:
if (condio) then
{executa alguma ao};
elsif (outra condio) then
{executa outra ao};
elsif (outra condio ainda) then
{executa outra ao};
else
{executa a ltima opo de ao};
end if;
Se a primeira
nem a segunda
condio no
foram satisfeitas,
testa-se a
terceira
Sistemas Digitais
Descrio VHDL
Condicionais: if-then-elsif-then-else-end if
Exemplo em pseudo-cdigo VHDL:
if (condio) then
{executa alguma ao};
elsif (outra condio) then
{executa outra ao};
elsif (outra condio ainda) then
{executa outra ao};
else
{executa a ltima opo de ao};
end if;
Se nenhuma
condio foi
satisfeita, a
condio do
else prevalecer
Sistemas Digitais
Descrio VHDL
Condicionais: if-then-elsif-then-else-end if
A construo de condicional pode ser tambm como a seguir:
Um if sem else
if (condio) then
{executa alguma ao};
end if;
Sistemas Digitais
Descrio VHDL
Condicionais: if-then-elsif-then-else-end if
A construo de condicional pode ser tambm como a seguir:
Um if sem else
if (condio) then
{executa alguma ao};
end if;
Sistemas Digitais
Descrio VHDL
Condicionais: case - when - end case
Exemplo em pseudo-cdigo VHDL:
case sinal is
when valor1 =>
{ao1};
when valor2 =>
{ao2};
when others =>
{ao3};
end case;
Sistemas Digitais
Descrio VHDL
Condicionais: case - when - end case
Exemplo em pseudo-cdigo VHDL:
case sinal is
when valor1 =>
{ao1};
when valor2 =>
{ao2};
when others =>
{ao3};
end case;
O case sempre
vai se referir a
um sinal
determinado
Sistemas Digitais
Descrio VHDL
Condicionais: case - when - end case
Exemplo em pseudo-cdigo VHDL:
case sinal is
when valor1 =>
{ao1};
when valor2 =>
{ao2};
when others =>
{ao3};
end case;
Cada when se
refere a um
possvel valor
que sinal pode
assumir
Ou seja quando
sinal tiver o valor
igual a valor1, a
ao1 ir ocorrer
Sistemas Digitais
Descrio VHDL
Condicionais: case - when - end case
Exemplo em pseudo-cdigo VHDL:
case sinal is
when valor1 =>
{ao1};
when valor2 =>
{ao2};
when others =>
{ao3};
end case;
Sistemas Digitais
Descrio VHDL
Condicionais: case - when - end case
Exemplo em pseudo-cdigo VHDL:
case sinal is
when valor1 =>
{ao1};
when valor2 =>
{ao2};
when others =>
{ao3};
end case;
Sistemas Digitais
Descrio VHDL
Condicionais: case - when - end case
Recomenda-se usar sempre o when => others ao fim do case:
A justificativa a mesma para o else no caso do if: pode gerar
problemas quando se trata de lgicas combinacionais.
Sistemas Digitais
Resumo
Origem e significado da linguagem VHDL
Objetivo de se usar linguagens de descrio de hardware.
Tipos de dados;
Tipos de operadores;
Diviso de cdigo VHDL
Bibliotecas
Entidade
Arquitetura
Sistemas Digitais
Resumo
Condicionais em VHDL: semelhantes aos usados em
linguagens de programao:
If-then-elsig-then-else-end if
Case-when-end case