Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
O QUE É UM SISTEMA?
L
Descrito de forma Hierarquizada, em
mas Digita
camadas,
d a partir
ti dde ffunções
õ mais
i
elementares
ho, J.P. @ Sistem
Modelação
M d l ã com dif
diferentes
t níveis
í i dde
abstracção
Coelh
Equações Diferenciais
hardwaredescriptionlanguage:HDL
2
SISTEMA GENÉRICO...
sub-sistemas ou MÓDULOS
L
Sistema Digital como caso particular
de um sistema.
mas Digita
-Melhoram
Melhoram a produtividade
Coelh
VHSIC-HDL
Very High Speed Integrated Desenvolvido nos
Circuit Hardware Description
Language meados dos anos 80
pelo DoD e IEEE
ais : Y2007/08
L
Começou por ser uma linguagem para
modelação e documentação.
VHDL Presentemente existem ferramentas de
síntese baseadas em VHDL.
mas Digita
simuladas
hardwaredescriptionlanguage:HDL
4
ENTIDADE vs. ARQUITECTURA
L
mas Digita
Em VHDL a cada
módulo é dado o
nome de entidade
ho, J.P. @ Sistem
(ENTITY)
Entidade Arquitectura
ais : Y2007/08
declaração das
entradas/saídas de descrição detalhada da
L
um módulo estrutura interna
i d
do
módulo e seu
comportamento
mas Digita
ho, J.P. @ Sistem
L
L IB R A R Y IE E E ;
U S E IE E E .S T D _ L O G IC _ 1 1 6 4 .a ll; P A C K A G E
U S E IE E E .S T D _ L O G IC _ U N S IG N E D .a ll; (B IB L IO T E C A S )
mas Digita
E N T I T Y e x e m p lo I S
P O R T (
< d e s c r iç ã o d o s p in o s d e e n t r a d a e s a íd a > E N T IT Y
(P IN O S D E I/O )
ho, J.P. @ Sistem
);
E N D e x e m p lo ;
A R C H I T E C T U R E t e s t e O F e x e m p lo I S
B E G IN
P R O C E S S ( < p in o s d e e n t r a d a e s ig n a l > )
B E G IN A R C H IT E C T U R E
(A R Q U IT E T U R A )
< d e s c r iç ã o d o c ir c u it o in t e g r a d o >
Coelh
E N D P R O C E S S ;
E N D te s te ;
hardwaredescriptionlanguage:HDL
7
LIBRARY IEEE;
ARCHITECTURE
((ARQUITETURA)
Q )
USE IEEE.STD_LOGIC_1164.all;
PROCESSOS USE IEEE
IEEE.STD_LOGIC_UNSIGNED.all;
STD LOGIC UNSIGNED ll
entity placa is
port (
a : in bit_vector( 6 downto 0);
b : outt bit
bit_vector(
t ( 7 downto
d t 0)
n ENTITY );
ais : Y2007/08
(ENTIDADE)
PINOS DE I/O end placa;
architecture TTL of placa is
L
signal
i l pino_1
i 1 bit bit;
signal pino_2 bit;
signal pino_3 bit;
signal pino_4 bit;
mas Digita
signal pino_5
pino 5 bit;
begin
CI_X : process( a )
ho, J.P. @ Sistem
b i
begin
<descrição do processo>
end process CI_Y;
CI_Y : process( a )
begin
<descrição do processo>
end process CI_Z;
Coelh
end TTL;
hardwaredescriptionlanguage:HDL
8
Package
Os pacotes (biblioteca) contém uma coleção de elementos incluindo
descrição do tipos de dados.
ais : Y2007/08
L
IEEE td l i
IEEE.std_logic_signed
i d – Funções
F õ Aritméticas
A it éti com Si
Sinall
IEEE.std_logic_unsigned – Funções Aritméticas sem Sinal
std_logic
IEEE.std og c_1164
6 – Ope
Operações
ações lógicas
óg cas
mas Digita
Entity
Descrição
ç da interface de I/O do sistema com a p
placa.
ho, J.P. @ Sistem
ENTITY <nome> IS
IN, OUT, INOUT, BUFFER
PORT(
sinal controlo: IN <tipo>;
sinal_controlo:
entrada: IN <tipo>; <tipo> : bit,
bit_vector,
saída: OUT <tipo>; std_logic_vector,
Coelh
); real,
END <nome>; inteiro, etc.
hardwaredescriptionlanguage:HDL
9
Architecture
ais : Y2007/08
L
mas Digita
ho, J.P. @ Sistem
Uma ARQUITECTURA p
possui:
L
mas Digita
ho, J.P. @ Sistem
Coelh
hardwaredescriptionlanguage:HDL
11
Tipos de Dados
LIBRARY std
td
BIT: assume valores ‘0’ e ‘1’ PACKAGE standard
BIT_VECTOR:
_ é um conjunto
j de bits. Ex.: “010001”
ais : Y2007/08
L
REAL: sempre com ponto decimal. Ex.: -3.2, 4.56, 6.0, -2.3E+2
x <
<= '1'; --x
x é um sinal de 1 bit cujo valor é '1‘
(MSB='1').
Pelica p
para bit e aspas
p para
p vector!!!
L
LIBRARY ieee
i
PACKAGE ieee.std_logic_1164
STD_LOGIC e STD_LOGIC_VECTOR
mas Digita
‘H’
H Weak high
‘–’ Don’t care
‘U’ Unresolved
hardwaredescriptionlanguage:HDL
13
x0 <= '0'; -- bit, std_logic, ou std_ulogic com valor '0'
x1 <= "00011111"; -- bit_vector, std_logic_vector,
-- std_ulogic_vector,
std ulogic vector signed
signed, or unsigned
x2 <= "0001_1111"; -- underscore allowed to ease visualization
x3 <= "101111" -- binary representation of decimal 47
x4 <= B"101111" -- binary representation of decimal 47
x5 <= O"57" -- octal representation of decimal 47
ais : Y2007/08
L
IF ready THEN... -- Boolean, executed if ready=TRUE
y <= 1.2E-5; -- real, not synthesizable
q <= d after 10 ns; -- physical, not synthesizable
mas Digita
SIGNAL a: BIT;
SIGNAL b: BIT_VECTOR(7 DOWNTO 0);
SIGNAL c: STD_LOGIC;;
ho, J.P. @ Sistem
Physical:
y representam
p uma medida física: voltagem,
g , capacitância,
p ,
tempo
Tipos pré-definidos: fs, ps, ns, um, ms, sec, min, hr.
determinado tipo.
range <valor_menor> to <valor_maior>
L
range <valor_maior> downto <valor_menor>
t d do
todos d mesmo tipo.
ti
Operadores
ho, J.P. @ Sistem
• Operadores de atribuição:
<= Usado para atribuir um valor a um SIGNAL.
SIGNAL
:= Usado para atribuir um valor a uma VARIABLE, CONSTANT, ou
GENERIC. Usada também para estabelecer os valores iniciais
de sinais
Coelh
L
menor ou igual (<=), maior do que (>), maior
ou igual (>=)
mas Digita
• operadores de deslocamento: sll (shift left logical), srl (shift right logical),
sla (shift left arithmetic), sra (shift
right arithmetic), rol (rotate left logical),
ho, J.P. @ Sistem
5
6 p ro c e s s ( A , B , E , F , G , J )
7
L
8 v a ria b le C , D , H , Y : b it_ v e c to r(1 d o w n to 0 );
9 v a ria b le W : b it_ v e c to r(3 d o w n to 0 );
10 v a ria b le Z : b it_ v e c to r(7 to 0 );
11 v a ria b le X : b it;
mas Digita
16 E < = ‘0 ’, F < = ‘1 ’;
17 C := “0 1 ”;
18 X := E n a n d F ;
19 Z (0 to 3 ) := C & D ;
20 Z (4 to 0 ) := (n o t A ) & (A n o r B );
21 D := (‘1 ’, ‘0 ’);
22 W := (2 d o w n to 1 = > G , 3 = > ‘1 ’, o th e rs = > ‘0 ’);
23 DATA := (3 1 d o w n to 2 8 = > ‘1 ’, o th e rs = > ‘0 ’);
Coelh
24 e n d p ro c e s s ;
25 e n d to p o lo g ia _ a rq u ite tu ra ;
hardwaredescriptionlanguage:HDL
17
• Atribuição de Sinais
1 a rc h ite c tu re to p o lo g ia _ a rq u ite tu ra o f te s te is
2 i n a l A , B , C : b it;
s ig it
3 s ig n a l D : in te g e r;
4 b e g in
5
6 p ro c e s s ( A , B , C , D )
7
ais : Y2007/08
8 va ria b le L , M , N , Q b it;
9
L
10 b e g in
11 A <= ‘0 ’, ‘1 ’ a fte r 2 0 n s , ‘0 ’ a fte r 4 0 n s
12 B <= not L;
13 C <= ((
((L a n d M ) x o r ((N n a n d Q ));
mas Digita
A setta a verm
D <= 2;
p r o c e ss (C , D ) p r o c e ss (C , D ) p r o c e ss (C , D )
v a ria b le A v , B v , E v : in te g e r := 0 ; v a r ia b le A v , B v , E v : in te g e r := 0 ; v a ria b le A v , B v , E v : in te g e r := 0 ;
b e g in b e g in b e g in
A v := 2 ; A v := 2 ; A v := 2 ;
B v := A v + C ; B v := A v + C ; B v := A v + C ;
A v := D + 1 ; A v := D + 1 ; A v := D + 1 ;
melho mo
E v := A v * 2 ; E v := A v * 2 ; E v := A v * 2 ;
A <= A v; A <= A v; A <= A v;
ais : Y2007/08
L
A = 1 A = 1 Av = 2
p r o c e ss (C , D ) p r o c e ss (C , D ) p r o c e ss (C , D )
v a ria b le A v , B v , E v : in te g e r := 0 ; v a ria b le A v , B v , E v : in te g e r := 0 ; v a ria b le A v , B v , E v : in te g e r := 0 ;
b e g in b e g in b e g in
A v := 2 ; A v := 2 ; A v := 2 ;
B v := A v + C ; B v := A v + C ; B v := A v + C ;
A v := D + 1 ; A v := D + 1 ; A v := D + 1 ;
ho, J.P. @ Sistem
E v := A v * 2 ; E v := A v * 2 ; E v := A v * 2 ;
A <= A v; A <= A v; A <= A v;
B <= B v; B <= B v; B <= B v;
E <= E v; E <= E v; E <= Ev;
end p r o c e ss; end p r o c e ss; e n d p r o c e ss;
A = 1 Av = 2 A = 1 Av = 3 A = 1 Av = 3
B = 1 Bv = 3 B = 1 Bv = 3 B = 1 Bv = 3
C = 1 C = 1 C = 1
D = 2 D = 2 D = 2
E = 1 Ev = 0 E = 1 Ev = 0 E = 1 Ev = 6
…
Coelh
hardwaredescriptionlanguage:HDL
19
A setta a verm
D <= 2;
melho mo
E <=
< A * 2; E <=
< A * 2; E <=
< A * 2; E <=
< A * 2;
end process; end process; end process; end process;
ais : Y2007/08
L
ostra a exxecução passo-a-passo…
C=1 C=1 C=1 C=1
D=1 D=2 D=2 D=2
E=1 E=1 E=1 E=1
process (C, D) process (C, D) process (C, D) process (C, D)
mas Digita
b i
begin b i
begin b i
begin b i
begin
A <= 2; A <= 2; A <= 2; A <= 2;
B <= A + C; B <= A + C; B <= A + C; B <= A + C
A <= D +1; A <= D +1; A <= D +1; A <= D +1;
E <= A * 2; E <= A * 2; E <= A * 2; E <= A * 2;
ho, J.P. @ Sistem
…
Coelh
hardwaredescriptionlanguage:HDL
20
Atributos dos Dados
‘LOW: Retorna o índice inferior do vector
‘HIGH Retorna
‘HIGH: R t o í
índice
di superior
i d
do vector
t
‘LEFT: Returna o índice mais à esquerda
‘RIGHT: Returna o índice mais à direita
‘LENGTH: Returna a dimensão do vector
‘RANGE: Returna a gama do vector
ais : Y2007/08
L
SIGNAL d : STD_LOGIC_VECTOR
STD LOGIC VECTOR (7 DOWNTO 0)
0);
d'LOW=0, d'HIGH=7, d'LEFT=7, d'RIGHT=0, d'LENGTH=8,
d'RANGE=(7 downto 0), d'REVERSE_RANGE=(0 to 7).
mas Digita
VHDL
Circuitos Lógico Sequenciais
L
PROCESS => Código Sequencial
SEQUENCIAL FUNCTION
mas Digita
PROCEDURE
CONCORRENTE: WHEN
ho, J.P. @ Sistem
Coelh
Coelh
ho, J.P. @ Sistem
mas Digita
ais : Y2007/08
22
hardwaredescriptionlanguage:HDL
L
hardwaredescriptionlanguage:HDL
23
SEQUENCIAL: PROCESS
ais : Y2007/08
L
no código principal.
sinal,
i l na sua lilista
t dde sensibilidades
ibilid d
L
2 wait on <signal_list>; wait on a, b;
3 wait for <time>; wait for 10ns;
4 wait; wait;
mas Digita
• Comando IF-THEN-ELSE
1 process (A)
2
ais : Y2007/08
3 begin
4 Z <= “0000”;
0000 ;
L
5 for i in 0 to 3 loop
6 if(A = i) then
7 Z(i) <= ‘1’;
mas Digita
8 end if;
9 end loop;
10 end process;
ho, J.P. @ Sistem
Coelh
hardwaredescriptionlanguage:HDL
26
ais : Y2007/08
L
• Comando CASE
mas Digita
digito <=“1011011”;
when “0011” =>
L
digito <=“1001111”;
.....
end case;
mas Digita
.....
end case;
else
hardwaredescriptionlanguage:HDL
28
- Os módulos podem ser descritos de várias formas distintas
- Dependendo da aplicação pode não descrever, internamente, a forma
exacta mas apenas o seu comportamento.
- O VHDL permite que o comportamento seja definido em forma de um
programa executável.
ais : Y2007/08
L
Análise e Simulação
Síntese INTERFACES
mas Digita
COMPORTAMENTO
“Test Bench”
ho, J.P. @ Sistem
MODELAÇÃO DE INTERFACES
ENTIDADE
ais : Y2007/08
L
nome da entidade tipo do sinal
mas Digita
ENTITY porta_and IS
ho, J.P. @ Sistem
As p
palavras em maiúsculas são reservadas.
Coelh
hardwaredescriptionlanguage:HDL
30
MODELAÇÃO DE COMPORTAMENTOS
ARQUITECTURA
- Parte Declarativa
- Parte Descritiva
L
nome da arquitectura nome da entidade
Comp
e um valor a um ssinal
mas Digita
paração de
ARCHITECTURE porta_and_arch OF porta_and IS
Vallor Lógico
BEGIN
ho, J.P. @ Sistem
d um Siinal com um
Z<='1' AFTER 10 ns WHEN A='1' and B='1’
ELSE '0' AFTER 10 ns;
buição de
o
END porta_and_arch
Atrib
Coelh
definição de tempo
hardwaredescriptionlanguage:HDL
31 ENTITY mAND IS
GENERIC(tp:TIME:=10 ns); -- tp - tempo de propagação
PORT(A,B: in BIT; Z: out BIT);
END ENTITY mAND;
ARCHITECTURE mAND_arch of mAND IS
BEGIN
Z<='1' AFTER tp WHEN (A AND B)='1' ELSE '0' AFTER tp;
END mAND_arch;
ENTITY mOR IS
ais : Y2007/08
L
ARCHITECTURE mOR_arch of mOR IS
BEGIN
Z<='1' AFTER tp WHEN (A OR B)='1' ELSE '0' AFTER tp;
END mOR_arch;
mas Digita
ENTITY mNOT IS
GENERIC(tp:TIME:=10 ns); -- tp - tempo de prop.
PORT(A: in BIT; Z: out BIT);
END ENTITY mNOT;
ho, J.P. @ Sistem
L
PORT(A: in BIT; Z: out BIT);
END COMPONENT;
Cria 8 sinais do tipo booleano SIGNAL AA,BB,CC,SI1,SI2,SI3,SI4,ZZ:BIT;
BEGIN
AA<='0';
0 ;
mas Digita
BB<='1';
Comentários após dois hífens -- Instanciar componentes
seguidos porta1: mOR PORT MAP (A=>AA,B=>CC,Z=>SI1);
porta2: mNOT PORT MAP (A=>BB,Z=>SI2);
ho, J.P. @ Sistem
AA<=0, BB<=1
CC=0->1
ais : Y2007/08
L
Uma versão alternativa mais compacta...
mas Digita
ENTITY testbench IS
END testbench;
ARCHITECTURE testbench_arch OF testbench IS
ho, J.P. @ Sistem
hardwaredescriptionlanguage:HDL
L
hardwaredescriptionlanguage:HDL
35
Programa 1 Programa 2
--------------------------------------------------------- ---------------------------------------------------------
-- Arquivo componente_inv.vhd -- Arquivo componente_and.vhd
-- Modelo do inversor -- Modelo da porta AND
--------------------------------------------------------- ---------------------------------------------------------
ais : Y2007/08
L
entity componente_inv is entity componente_and is
port( port(
x : in bit;; a : in bit;;
mas Digita
architecture arquitetura_inv of
componente_inv is architecture arquitetura_and of componete_and is
begin b i
begin
y <= not x; c <= a and b;
end arquitetura_inv; end arquitetura_and;
Coelh
P ro g ra m a 3
hardwaredescriptionlanguage:HDL
36 ------------------------------------------------------
- - A r q u iv o c o m p o n e n t e _ s is t e m a . v h d
- - M o d e lo d a p o r t a A N D
------------------------------------------------------
l ib r a r y I E E E ;
u s e I E E E . s t d _ lo g ic _ 1 1 6 4 . a l l ;
e n t i t y c o m p o n e n t e _ s is t e m a i s
p o rt(
in 1 : i n b it ;
ais : Y2007/08
in 2 : i n b it ;
in 3 : i n b it ;
in 4 : i n b it ;
L
o u t 1 : o u t b it
);
e n d c o m p o n e n t e _ s is t e m a ;
mas Digita
a r c h i t e c t u r e a r q u it e t u r a _ s is t e m a o f c o m p o n e n t e _ s is t e m a i s
c o m p o n e n t c o m p o n e n te _ a n d
p o r t ( a : in b it ; b : i n b it ; c : o u t b it ) ;
e n d c o m p o n e n t;
ho, J.P. @ Sistem
c o m p o n e n t c o m p o n e n t e _ in v
p o r t ( x : i n b it ; y : o u t b it ) ;
e n d c o m p o n e n t;
s i g n a l s 1 , s 2 , s 3 , s 4 : b it ;
b e g in
a n d 1 : c o m p o n e n t e _ a n d p o r t m a p ( a = > in 1 , b = > in 2 , c = > s 1 ) ;
a n d 2 : c o m p o n e n t e _ a n d p o r t m a p ( a = > in 3 , b = > in 4 , c = > s 2 ) ;
Coelh
L
- Modelar a partir das portas lógicas
mas Digita
- Modelar comportamento
Exemplo: Registo de 4 bits
ho, J.P. @ Sistem
(…)
END PROCESS nome_processo
hardwaredescriptionlanguage:HDL
38
Exemplo: Registo de 4 bits (cont)
ais : Y2007/08
L
- Modelar comportamento Latch D
mas Digita
(td=2ns)
- Modelar comportamento gate
(td=2ns)
ho, J.P. @ Sistem
- Modelar registo
- Testar Registo
Coelh
hardwaredescriptionlanguage:HDL
39
Palavras Reservadas em VHDL
ais : Y2007/08
L
mas Digita
ho, J.P. @ Sistem
Coelh
FIM
Ref. LINGUAGEM DE DESCRIÇÃO DE HARDWARE, Prof. Anderson Royes Terroso