Anda di halaman 1dari 26

21/10/2013

PCS 2215 - Sistemas Digitais I

Mdulo 06 Linguagens de Descrio


de Hardware HDL Introduo
Margi, Cntia Borges
Professora Responsvel

verso: 1.0 (outubro de 2.013)

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

Contedo

Perspectiva Histrica
O que uma
linguagem de
descrio de
Hardware?
Como e por que
utilizar HDLs?

VHDL
Histrico
Requisitos
Componentes
Tipos de dados e
operadores
Bancada de testes
Modelo de tempo
Exemplo

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

21/10/2013

Perspectiva Histrica

H + de 30 anos:
Lpis, papel, gabarito

Anos 80:
Editor de esquemticos;
Introduo de HDL.

Anos 90: crescimento do uso de HDL


Maior disponibilidade e menor custo de dispositivos
programveis (PLD, CPLDs, FPGAs);
Aumento da densidade de componentes ASICs
(Application-Specific Integrated Circuit): + 1 milho de
componentes.

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

33

O que uma linguagem de


descrio de Hardware?

Linguagem para:
Modelar circuitos eletrnicos;
Descrever circuitos;
Testar circuitos;
Descrever lista de ligaes de um circuito.

Posteriormente, suporte a sntese de circuitos


digitais.

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

21/10/2013

Como estas linguagens so usadas?

Para a especificao de projetos em qualquer


nvel de abstrao.
Para a descrio de projetos.
Para modelagem funcional e detalhada de
timing.
Para a documentao de projetos.
Como uma interface padronizada para
ferramentas de projeto.

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

55

Nveis de abstrao
Architectural

Behavioral

Structural

Algorithmic
Processor
Functional Block
Systems
Hardware Modules
Algorithms
Logic
ALUs, Registers
Register Transfer
Gates, FFs
Circuit
Logic
Transistors
Transfer Functions
Rectangles
Cell, Module Plans
Floor Plans
Clusters
Physical Partitions
Physical/Geometry
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

66

21/10/2013

Nveis de abstrao

Especificao funcional: descrio mais abstrata


possvel.
Algoritmo: descrio do algoritmo lgico executado
pelo sistema.
Transferncias entre Registradores (RTL):
descrio do algoritmo, porm em etapas que
envolvam transferncia de dados entre registradores.
Chaveamento: descrio do algoritmo como uma
mquina de estados.
Circuito lgico: descrio do algoritmo atravs de
elementos lgicos mapeveis em componentes
fsicos existentes numa dada tecnologia.

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

77

Possibilidades de Uso
Descrio

Sntese

Descrio de Teste

Simulao funcional

Mapeamento

Andrade, Corra, Gomi e Margi 2.013

Simulao de tempo

<HDL>

PCS 2215

Sistemas Digitais I

88

21/10/2013

Por que usar VHDL?

Aumentar a produtividade (mas no na


primeira vez!).
Aumentar a capacidade de reutilizao
de componentes.
Ter acesso a ferramentas avanadas de
projeto.
Facilitar futuras migraes de projeto.
linguagem padronizada!

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

99

VHDL

VHDL = VHSIC Hardware Description


Language

VHSIC = Very High Speed Integrated Circuit

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

10

21/10/2013

VHDL - Datas

1981: Requisitos iniciais (DoD)


1983-1985: Especificao da VHDL
(Intermetrics, IBM, TI)
1987: IEEE Standard 1076-1987
1991: IEEE Standard 1164 (padronizao de
uma lgica de 9 valores)
1993: IEEE Standard 1076-1993
1995: IEEE Standards 1076.3, 1076.4

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

11

VHDL - Requisitos

Projetos podem ser decompostos hierarquicamente (estabelecidos pelo DoD).


Elementos devem ter interface bem definida e
especificao funcional precisa.
Especificao funcional pode ser comportamental ou estrutural.
Modelar concorrncia, temporizao e clock.
Simulao de operaes lgicas e comportamento temporal.

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

12

21/10/2013

Componentes

Entidades (entities)
Arquiteturas (architectures)
Configuraes (configurations)
opcional
Bibliotecas de funes/procedimentos
(packages) opcional

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

13

Declarao de Entidade

Especifica o nome da entidade.


Especifica tipo e direo de todas as
portas.
Define completamente a interface da
entidade.
utilizada para caracterizar um
elemento real do projeto.

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

14

21/10/2013

Exemplo: Entidade
entity entity-name is
port (signal-names: mode signal-type;
signal-names: mode signal-type;
....
signal-names: mode signal-type);
end entity-name;
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

15

Arquitetura

Associada a uma entidade pelo nome


Pode definir o comportamento desta.
Pode definir a estrutura interna da
entida-de (mltiplos nveis).
Uma entidade pode ter vrias
arquiteturas associadas a ela.
Comportamento puro;
Estrutura pura;
Mista.

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

16

21/10/2013

Arquitetura (cont.)
architecture architecture-name of entity-name is
type declarations
signal declarations
constant declarations
Opcionais
function definitions
procedure definitions
component declarations
begin
concurrent-statement
Funcionamento
....
concorrente
concurrent-statement
end architecture-name;
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

17

Arquitetura: Nveis de abstrao

Comportamento:
Comandos sequenciais, baseados em
processos (como uma linguagem de
programao) que so uma sequncia de
aes.

Estrutura:
Comandos concorrentes com registradores
explcitos (fluxo de dados e unidade de
controle);
Conectividade: conexo no nvel de componente (netlist).

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

18

21/10/2013

Definio de Processo
architecture arch of ent is
begin
nome_processo: process (clock)
begin
comando sequencial; Um processo deve
comando sequencial; ter uma lista de
wait until (condio); sensibilidade OU ...
comando sequencial;
...
... OU, pelo menos,
wait for (time);
deve ter um
...
comando wait.
end process;
end arch;
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

19

Exemplo: Comportamento
entity reg2 is
port ( d0, d1, en, clk : in bit;
q0, q1 : out bit );
end entity reg2;
architecture behav of reg2 is
begin
storage : process is
variable stored_d0, stored_d1 : bit;
begin
wait until clk = '1';
if en = '1' then
stored_d0 := d0;
stored_d1 := d1;
end if;
q0 <= stored_d0 after 5 ns;
q1 <= stored_d1 after 5 ns;
end process storage;
end architecture behav;
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

20

10

21/10/2013

Exemplo: Estrutura
entity reg2 is
port ( d0, d1, en, clk : in bit;
q0, q1 : out bit );
end entity reg2;
architecture struct of reg2 is
signal int_clk : bit;
begin
bit0 : entity work.d_ff(basic)
port map (d0, int_clk, q0);
bit1 : entity work.d_ff(basic)
port map (d1, int_clk, q1);
gate : entity work.and2(basic)
port map (en, clk, int_clk);
end architecture struct;
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

21

Tipos de Dados

Todos os sinais possuem um tipo.


Tipos so verificados na compilao.
Cada tipo possui um conjunto definido de valores.
Cada tipo possui um conjunto definido de
operadores vlidos.
Tipos podem ser definidos pelos usurios.
Ao iniciar a simulao, os sinais recebem '0'
(default).

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

22

11

21/10/2013

Tipos pr-definidos

bit
bit_vector
boolean
character

Andrade, Corra, Gomi e Margi 2.013

<HDL>

integer
real
severity_level
string
time

PCS 2215

Sistemas Digitais I

23

Tipos Enumerados

Muitos tipos comuns em VHDL so tipos


enumerados:
boolean (TRUE, FALSE);
bit (1, 0)
char (...,A, B, C, ...)
Extenses de usurios:
type estados is
(st0,st1,st2,st3,st4,st5,st6,st7,st8,
st9,st10,st11,st12,st13,st14,st15);

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

24

12

21/10/2013

Tipos - IEEE 1164

Substituem bit e bit_vector.

preciso incluir bibliotecas:


library ieee;
use ieee.std_logic_1164.all;

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

25

25

Tipos - IEEE 1164

std_logic, std_logic_vector
'U' - Uninitialized
'X' - Forcing Unknown
'0' - Forcing 0
'1' - Forcing 1
'Z' - High Impedance
'W' - Weak Unknown
'L' - Weak 0
'H' - Weak '1'
'-' - Don't care

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

26

13

21/10/2013

Operadores
Aritmticos

Booleanos

adio

AND

and

subtrao

OR

or

Multiplicao

NAND

nand

Diviso

NOR

nor

Mdulo

mod

OU exclusivo

xor

Resto da diviso

rem

NOU exclusivo

xnor

Valor absoluto

abs

complementao not

Exponenciao

**

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

27

27

Projeto Simples
Package

Standard Libraries

Package
Entity/Architecture
Entity/Architecture
Entity/Architecture
Arquivo fonte VHDL
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

28

14

21/10/2013

Projeto mais complexo


Package
Standard Libraries
Package
User Libraries

Entity/Architecture
Entity/Architecture

Entity/Architecture

Configuration

Entity/Architecture
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

29

Bancadas de teste

Ou testbenchs.
Semelhante bancada de laboratrio.
Descrita usando comandos de
comportamento (sequencial) do VHDL.
Use uma descrio de estrutura para
incluir o componente em teste.
Em geral, utilizada para gerar testes
automticos.

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

30

15

21/10/2013

Bancadas de teste: Circuitos


Virtuais

Data

Load

Aplica os
Estmulos

Clk

Verifica
Resultados

Rst
A

EQ

Dispositivo em Teste
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

31

Exemplo de bancada de teste


entity testbnch is
end testbnch;
architecture behavior of testbnch is
component rotcomp is
port(Clk, Rst, Load: std_ulogic;
Init: std_ulogic_vector(0 to 7);
Test: std_ulogic_vector(0 to 7);
Limit: out std_ulogic;
end component;
signal s_Clk, s_Rst, s_Load: std_ulogic;
signal s_Init: std_ulogic_vector(0 to 7);
signal s_Test: std_ulogic_vector(0 to 7);
signal s_Limit: std_ulogic;
begin
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

32

16

21/10/2013

Exemplo de bancada (cont.)


begin
DUT: rotcomp port map -- Mapeamento
(s_Clk, s_Rst, s_Load, s_Init, s_Test, s_Limit);
clock: process
begin
s_Clk <= '0';
s_Rst <= '0';
s_Load <= '1';
s_Init <= "00001111";
s_Test <= "11110000";
wait for 10 ns;
s_Clk <= '1';
wait for 10 ns;
s_Load <= 0';
...
end process;
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

33

Lendo Vetores de Teste (1)

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

34

17

21/10/2013

Lendo Vetores de Teste (2)


stimulus: process
file vecFile : text is in "test4.vec";
variable vecLine : line;
variable vecString : string;
begin
while not endfile(vecFile) loop
readline(vecFile, vecLine);
read(vecLine, r, good => good_number);
read (file_line,vecString);
- - Converte os dados de entrada em estmulos
- - Aplica os estmulos, espere algum tempo, etc.
end loop;
assert false report "Teste completo";
wait;
end process;
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

35

Modelo de tempo do VHDL

O tempo em VHDL uma varivel contnua,


assncrona, porm que varia em intervalos
discretos.
As atribuies podem especificar um instante
onde elas devem acontecer.
Por exemplo:
ready <= 1 after 10 ns;

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

36

18

21/10/2013

Ciclo de Simulao

O tempo de simulao avana at o tempo do


prximo evento na lista de eventos;
Todas as transaes escalonadas para este
tempo so executadas;
Isto pode incluir novos eventos para serem
executados neste instante ou em instantes
posteriores;

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

37

Ciclo de Simulao (cont)

Durante a execuo de um processo, atribuies


a sinais so definidas e escalonadas para o
instante atual ou instantes posteriores;
Quando todos os processos que foram reativados
forem suspensos, o ciclo de simulao se encerra
e podemos iniciar um novo ciclo;
Quando se atinge um estgio onde no existe
nenhuma transao escalonada a simulao
termina.

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

38

19

21/10/2013

Exemplo: Somador de 4 bits

Equao para somador de 1 bit :


sum <= a xor b xor ci;
co <= (a and b) or (ci and (a or b));

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

39

Sistemas Digitais I

39

Exemplo: Somador de 4 bits [1/2]


library ieee;
use ieee.std_logic_1164.all;
entity adder4bit is
port ( a,b: in std_logic_vector(3 downto 0);
cin : in std_logic;
cout: out std_logic;
sum: out std_logic_vector(3 downto 0)
);
end adder4bit;
architecture bruteforce of adder4bit is
-- temporary signals for internal carries
signal c : std_logic_vector(4 downto 0); .
begin
process (a, b, cin, c)
begin
c(0) <= cin;
-- full adder 0
sum(0) <= a(0) xor b(0) xor c(0);
c(1)
<= (a(0) and b(0)) or (c(0) and (a(0) or b(0)));
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

40

20

21/10/2013

Exemplo: Somador de 4 bits [2/2]


-- full adder 1
sum(1) <= a(1) xor b(1) xor c(1);
c(2) <= (a(1) and b(1)) or (c(1) and
(a(1) or b(1)));
-- full adder 2
sum(2) <= a(2) xor b(2) xor c(2);
c(3) <= (a(2) and b(2)) or (c(2) and
(a(2) or b(2)));
-- full adder 3
sum(3) <= a(3) xor b(3) xor c(3);
c(4) <= (a(3) and b(3)) or (c(3) and
(a(3) or b(3)));
cout <= c(4);
end process;
end bruteforce;
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

41

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

42

21

21/10/2013

Formas de onda para simulao


do somador de 4 bits

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

43

Testbench: Somador de 4 bits [1/2]


LIBRARY ieee;
USE ieee.std_logic_1164.all;
use ieee.NUMERIC_STD.all;
entity tb is
end tb ;
architecture struct of tb is
signal s_a : std_logic_vector(3 downto 0);
signal s_b : std_logic_vector(3 downto 0);
signal s : std_logic_vector(3 downto 0);
signal s_cout : std_logic;
component adder4bits
port ( a : in std_logic_vector (3 downto 0);
b : in std_logic_vector (3 downto 0);
cin : in std_logic;
cout : out std_logic;
sum : out std_logic_vector (3 downto 0) );
end component;
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

44

22

21/10/2013

Testbench: Somador de 4 bits [2/2]


begin
proc_test: process
begin
for x in 0 to 15 loop
for y in 0 to 15 loop
s_a <= std_logic_vector(to_unsigned(x, 4));
s_b <= std_logic_vector(to_unsigned(y, 4));
wait for 10 ns;
end loop;
end loop;
wait;
end process;
i_adder4bits : adder4bits port map (s_a, s_b, '0', s_cout, s);
end struct;
Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

45

Exerccio 1

Desenhe o circuito digital


quivalente a descrio em
VHDL, indicando os sinais

library IEEE;
use IEEE.std_logic_1164.all;
entity caixa is
port(
x : in STD_LOGIC;
y : in STD_LOGIC;
z : in STD_LOGIC;
f : out STD_LOGIC
);
end caixa;

Andrade, Corra, Gomi e Margi 2.013

<HDL>

architecture caixa_arch of caixa is


signal NotX : STD_LOGIC;
signal NotY : STD_LOGIC;
signal NotZ : STD_LOGIC;
signal F1 : STD_LOGIC;
signal F2 : STD_LOGIC;
signal F3 : STD_LOGIC;
signal F4 : STD_LOGIC;
begin
NotX <= not(x);
NotY <= not(y);
NotZ <= not(z);
F1 <= z and NotY and NotX;
F2 <= NotZ and y and NotX;
F3 <= NotZ and NotY and x;
F4 <= z and y and x;
f <= F4 or F3 or F2 or F1;
end caixa_arch;
PCS 2215

Sistemas Digitais I

46

23

21/10/2013

Exerccio 2

library IEEE;

Desenhe o circuito use IEEE.std_logic_1164. all;


entity funcaoF is
digital
port(a : in STD_LOGIC_VECTOR(1 downto 0);
b : in STD_LOGIC_VECTOR(1 downto 0);
correspondente.
eq : out STD_LOGIC );
Qual a tabela da
end funcaoF;
verdade
architecture funcaoF of funcaoF is
signal eq1 : STD_LOGIC;
correspondente a
signal eq2 : STD_LOGIC;
funo F?
begin
<= not (b(1) xor a(1));
Qual uma aplicao eq1
eq2 <= not (b(0) xor a(0));
eq <= eq2 and eq1;
para a funo F?
end funcaoF;

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

47

Exerccio desafio 1
Instale a ferramenta Altera Quartus II, que
utilizada em Lab. Digital, disponvel em
http://www.pcs.usp.br/~labdig/download.html
Tutoriais e manuais disponveis em
http://www.pcs.usp.br/~labdig/apostilas.2sem
.html

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

48

24

21/10/2013

Exerccio desafio 1 (cont.)


Crie um worksite para o somador de 4 bits,
mostrado como exemplo em slides anteriores.
Execute a simulao do mdulo adder4bit e
gere formas de onda para pelo menos 3
valores diferentes de entrada.

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

49

Lio de Casa
Leitura

Obrigatria:
Captulo 5, seo 5.1 e 5.3 do Livro
Texto.

Exerccios:

Captulo 5 do Livro Texto.

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

50

25

21/10/2013

Bibliografia

Wakerly, John F. Digital Design:


Principles and Practices. Prentice-Hall, 4th
edition, 2006.
Peter J. Ashenden VHDL Tutorial.
Elsevier, 2004. Disponvel no Ae.
Carto de referncia de VHDL http://www.vhdl.org/rassp/vhdl/guidelines/
vhdlqrc.pdf

Andrade, Corra, Gomi e Margi 2.013

<HDL>

PCS 2215

Sistemas Digitais I

51

26

Anda mungkin juga menyukai