Escolar Documentos
Profissional Documentos
Cultura Documentos
Prototipao em PLDs
Introduo ao VHDL
Autor: Prof. Rodrigo Marques de Figueiredo
Agenda
Introduo;
-
Histrico;
Caractersticas do VHDL;
Aplicaes do VHDL;
Novas Tecnologias.
Estrutura da Linguagem;
Implementaes de Lgica Assncronas;
ModelSim (Simulador);
Implementao de Lgica Sncrona;
Integrao Entre Mdulos Descritos em VHDL;
Testbenches Descritos em VHDL.
VHDL
Introduo
Histrico
Histrico
Caractersticas do VHDL
Caractersticas:
- Modular;
- Paralelismo entre instrues (comandos);
- Fcil de documentar.
Desvantagens:
- VHDL no gera um hardware otimizado.
Caractersticas do VHDL
Vantagens:
- Intercmbio de projetos entre grupos de pesquisa sem a
necessidade de alterao;
- A linguagem independe da tecnologia atual, ou seja, voc
pode desenvolver um sistema hoje e implement-lo depois;
- Os projetos so fceis de serem modificados;
- O custo de produo de um circuito dedicado elevado,
enquanto que usando VHDL e Dispositivos Programveis,
isto passa a ser muito menor;
- Reduz consideravelmente o tempo de projeto e implementao.
Caractersticas do VHDL
Vantagens:
Caractersticas do VHDL
Vantagens:
Base de Cores
(componentes em VHDL)
Caractersticas do VHDL
Vantagens:
Controlador
de Verso
(Servidor)
Caractersticas do VHDL
Vantagens:
Trabalho Colaborativo
(Colaborao Mltipla)
Aplicaes do VHDL
Controle de Processos;
Instrumentao;
Drivers de Barramentos;
Conversores de Interface;
Novas aplicaes;
Processamento Digital de Sinais:
-
Processamento de udio;
Processamento de Vdeo;
Multiprocessamento de sinais de controle (Controle Multivarivel).
Novas Tecnologias
Tipos de Descries
Descrio Comportamental:
-
Descrio Estrutural:
-
Caractersticas do VHDL
Vantagens:
Controlador
de Verso
(Servidor)
Base de Cores
(componentes em VHDL)
Trabalho Colaborativo
(Colaborao Mltipla)
VHDL
Estrutura
da
Liguagem
Estrutura da Linguagem
Um programa em VHDL possui 3 estruturas bsicas e 1 sub-estrutura:
-
Package;
Entity;
Architecture & Process.
library IEEE;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
Package (Bibliotecas)
entity CIxx is
port (
-- descrio dos pinos de entrada e sada
);
end CIxx ;
architecture comportamento of CIxx is
begin
signal )
end comportamento ;
Estrutura da Linguagem
Package:
Estrutura da Linguagem
Entity:
entity nome_topo_de_hierarquia is
port (
reset
: in std_logic;
clock
: in std_logic;
entrada
: in std_logic_vector(7 downto 0);
saida
: out std_logic_vector(7 downto 0)
);
end nome_topo_de_hierarquia;
Estrutura da Linguagem
Entity:
entity nome_topo_de_hierarquia is
generic(
TAMANHO : integer := 8
);
port (
reset
: in std_logic;
clock
: in std_logic;
entrada
: in std_logic_vector(TAMANHO-1 downto 0);
saida
: out std_logic_vector(TAMANHO-1 downto 0)
);
end nome_topo_de_hierarquia;
Estrutura da Linguagem
Architecture:
architecture Nome_da_Arquitetura of Nome_da_Entidade is
-- Declarao de sinais e tipos prprios (ou variveis)
begin
-- Descrio da funcionalidade (Coportamento) da aplicao
end Nome_da_Arquitetura;
Estrutura da Linguagem
Process:
Nome_do_processo:
process(-- Lista de sensibilidade)
-- Declarao de variveis
begin
-- Descrio da lgica utilizada
end process Nome_do_processo;
Toda lgica descrita fora de um process assncrona;
Lgicas sncronas devem ser descritas obrigatoriamente dentro de um
process;
Todos os sinais analisados pelo processo devem constar na lista de
sensibilidade, sob pena de no ser inferido na implementao.
Estrutura da Linguagem
Implementao:
ia3
ia1
ib1
o1
ia2
ib2
ib3
o3
ia4
ib4
o4
o2
Estrutura da Linguagem
Implementao:
ia3
ia1
ib1
o1
ia2
ib2
ib3
o3
ia4
ib4
o4
o2
Estrutura da Linguagem
Implementao:
ia3
ia1
ib1
o1
ia2
ib2
ib3
o3
ia4
ib4
o4
o2
Estrutura da Linguagem
Implementao:
ia3
ia1
ib1
o1
ia2
ib2
ib3
o3
ia4
ib4
o4
o2
Estrutura da Linguagem
Implementao:
ia3
ia1
ib1
o1
ia2
ib2
ib3
o3
ia4
ib4
o4
o2
Declaraes
Signals, Constants & Variables:
Signals:
- Os signals so declarados antes do incio (begin) da architecture;
- So visveis por todos os processos da architecture;
- Podem ser vistos como os fios que unem os diversos processos;
- Sua prototipao mais estvel.
Declaraes
Signals, Constants & Variables:
Constants:
- As constants so declaradas a exemplo dos signals dentro da
architecture, antes de seu incio (begin);
- So visveis por todos processos a que pertencem;
- Geralmente so utilizadas para facilitar a documentao do cdigo.
Assignments
Signals & Variables:
Signals:
nome_do_sinal <= 1;
Variables:
nome_da_varivel := 0;
Operadores
Operadores Lgicos:
Em VHDL esto disponveis todos os operadores lgicos
existentes em lgica discreta: NOT, AND, NAND, OR, NOR,
XOR e XNOR.
Operadores de Comparao:
Estes operadores so fundamentais para as implementaes
de lgicas computacionais, sendo eles:
=
igual
/=
diferente
>
maior que
>=
<
<=
maior igual a
menor que
menor igual a
Operadores
Operadores Aritmticos:
So operadores muito utilizados para auxiliar na parametrizao de cdigos ou nos testbenches;
Geralmente utilizados em tempo de sntese e no de execuo;
Quando utilizados em tempo de execuo estes operadores
so performados por macros que geram um hardware muito
longe do ideal.
+
Adio
Subtrao
Multiplicao
Diviso
**
potenciao
&
concatenao
mod
mdulo
rem
resto da diviso
abs
valor absoluto
Nmeros
Constantes:
16#ACDC#
letrastring
decimal
Tipos em VHDL
Integer:
A um integer sempre inferido um barramento de 32 bits a
menos que a ele seja dado um range;
o tipo de dados que utilizado pelo VHDL para indexar
seus vetores (barramentos);
O consumo de hardware moderado.
Real:
Possuem um alcance de 64 bits, porm mesmo definindo-se a
ele um range ocupam o mesmo espao em lgica, uma vez
que parte dos bits dada para a parte fracionria;
Possui alto consumo de hardware, principalmente para as
operaes que o utilizam.
Tipos em VHDL
Enumerao:
Fsicos:
Tipos em VHDL
Arrays:
Subtypes:
Atributos
Funcionalidade:
Os atributos exercem funes de anlise de sinais;
Exemplos:
event: retorna true se ocorreu uma transio de borda de clock, caso contrrio
retorna false.
active: retorna true se ocorreu uma transio em uma lgica, caso contrrio
retorna false.
last_event: retorna o tempo que demorou a transio do sinal;
last_active: retorna o tempo que o sinal demorou para realiza a transio
lgica;
last_value: retorna o valor anterior a transio do sinal;
lenght: retorna o tamanho do array do sinal.
Comandos
if:
o comando em VHDL, juntamente ao case mais utilizado;
Geralmente utilizado para limitar a ao de lgicas;
Implementado somente de um process.
Sintaxe:
if Condio_1 then
-- Lgica_1;
elsif Condio_2 then
-- Lgica_2;
else
-- Lgica_3;
end if;
Comandos
if (generate):
Utilizado para criar caminhos de sntese;
Facilita a parametrizao de cdigos em relao a timing,
rea ou performance;
Implementado em qualquer ponto da architecture.
Sintaxe:
if Condio generate
-- Lgica_1;
end generate;
Comandos
case:
Geralmente utilizado para limitar a ao de lgicas;
Muito utilizado para criar tabelas, conversores de barramento
e mquinas de estado;
Implementado somente dentro de um process.
Sintaxe:
case valor_comparado is
when valor_cte_compar_1 =>
-- Lgica_1;
when valor_cte_compar_2 =>
-- Lgica_2;
when valor_cte_compar_3 =>
-- Lgica_3;
when others =>
-- Lgica_padro;
end case;
Comandos
when:
Pode ser utilizado fora de um process;
Geralmente utilizado para triggar sinais em lgicas assncronas.
Sintaxe:
Comandos
for (loop):
Pode ser utilizado tanto em lgica assncrona com em
sncrona;
No prototipvel.
Sintaxe:
label:
for varivel_de_indexao in limite_do_loop loop
-- lgica 1;
-- lgica 2;
end loop label;
Comandos
for (generate):
Utilizado para facilitar a descrio de cdigos em repetio;
No prototipvel.
Sintaxe:
label:
for varivel_de_indexao in limite_do_loop generate
-- lgica 1;
-- lgica 2;
end generate label;
Comandos
Implementao:
ia3
ia1
ib1
o1
ia2
ib2
ib3
o3
ia4
ib4
o4
o2
Comandos
Implementao:
ia3
ia1
ib1
o1
ia2
ib2
ib3
o3
ia4
ib4
o4
o2
Comandos
Implementao:
ia3
ia1
ib1
o1
ia2
ib2
ib3
o3
ia4
ib4
o4
o2
Comandos
Implementao:
ia3
ia1
ib1
o1
ia2
ib2
ib3
o3
ia4
ib4
o4
o2
Comandos
Implementao:
ia3
ia1
ib1
o1
ia2
ib2
ib3
o3
ia4
ib4
o4
o2
Comandos
while:
Comando pouco utilizado por no ser prototipvel e possuir
um controle pouco eficiente;
Geralmente utilizado em testbenches.
Sintaxe:
label:
while expresso_booleana loop
-- lgica 1;
-- lgica 2;
end loop label;
Comandos
wait:
Comando no prototipvel;
Utilizado somente em testbenches.
Sintaxe:
VHDL
Implementao
de Lgica
Assncrona
Implementaes Assncronas
Combinacional:
Portas Lgicas;
Comparadores;
Interligaes.
Computacional:
ULAs;
Conversores de barramento;
Codificadores/Decodificadores;
Multiplexadores/Demultiplexadores.
Implementaes Assncronas
Exemplo:
Portas Lgicas:
o <= ia and ib;
ou
process(ia, ib
begin
x <= ia and ib;
end process;
Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta AND:
Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta AND:
Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta AND:
Bibliotecas utilizadas
Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta AND:
Bibliotecas utilizadas
Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta AND:
Bibliotecas utilizadas
Arquitetura (comportamento)
Implementaes Assncronas
Exemplo:
Portas Lgicas:
Implementaes Assncronas
Exemplo:
ULA (descrio):
Exerccios
Implemente o seguinte circuito combinacional:
Exerccios
Implemente o seguinte decodificador:
Implementaes Assncronas
Exerccio:
Crie mdulos VHDL equivalentes as seguintes CIs:
7404: 6 (seis) portas NOT;
7408: 4 (quatro) portas AND;
7432: 4 (quatro) portas OR.
VHDL
ModelSim
Simulador Computacional
ModelSim
Apresentao:
um simulador computacional para anlise de sistemas digitais;
Possui alta fidelidade de resultados;
Nas verses full inclusive possvel ter-se a simulao do
tempo de porta das ligaes dos circuitos lgicos;
Nas verses student existem limitaes, pricipalmente no que
tange ao tempo de simulao, porm permanece uma poderosa ferramenta de simulao;
Atualmente o simulador de sistemas digitais mais aceito tanto pelo mundo acadmico como pela indstria.
ModelSim
Objetivos:
ModelSim
Caractersticas:
Capacidade de simular desde simples circuitos combinacionais sistemas digitais complexos
Possui uma ampla gama de configuraes que podem ser
personalizadas a qualquer tempo;
Frontend feito totalmente em Tcl/Tk;
Middleend criado em cima do Tcl;
Backend totalmente implementado em Linguagem C;
Alta performance de simulao (tanto qualitativa como quantitativa);
Grande flexibilidade para automatizao de processos (via
scripts) e integrao com outras ferramentas (Gnuplot, Pearl,
Lua, Python, etc);
Baseado em sistema UNIX (cuidado ao instalar com Octave,
SciLab, Cygwin...)
ModelSim
Instalao:
Rodar o aplicativo mti60se.exe;
-
1: mxe5.7g_6.2isp2_simulation_libraries.zip;
2: mxe5.7g_62i_ip1_1_xilinxcorelib.zip.
ModelSim
Configurao:
Adio de libraries
-
File
=> Import
Library
=>
Informar o path
desejada
da
library
ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
-
Nomear o projeto
ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
-
Insero de arquivos.
ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
-
ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
-
ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
-
ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
-
ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
-
ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
-
ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
-
Add
=> Wave
Signals
=>
Select
ModelSim
Funcionamento do Simulador:
ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
-
Rodando a simulao.
Utilizando a IDE
ModelSim
Funcionamento do Simulador:
ModelSim
Funcionamento do Simulador:
Fluxo de execuo da simulao:
-
ModelSim
Funcionamento do Simulador:
ModelSim
Funcionamento do Simulador:
ModelSim
Funcionamento do Simulador:
Automao dos processos:
-
VHDL
Sntese;
Roteamento;
Placement;
Floorplanner;
Power Analyser;
FPGA Editor;
Core Generator.
std_logic;
std_logic;
std_logic
VHDL
Implementao
de Lgica
Sncrona
Implementaes Sncronas
Combinacional:
PLLs;
Comparadores;
Sincronizadores.
Computacional:
CPUs;
Conversores de protocolo;
DSPs (Filtros, espectrmetros, DFTs, DCTs, processamento de imagem, etc).
Implementaes Sncronas
Anlise de bordas:
Para a anlise de bordas de sinais utilizado o atributo
event;
Pode ser utilizado para analisar qualquer sinal do tipo bit ou
std_logic;
Estes sinais podem ser de entrada ou internos, nunca sinais
de sada;
O sintetizador ir sempre inferir um flip-flop para cada sinal
de sada.
Implementaes Sncronas
Anlise de bordas:
Sintaxe:
if clkevent and clk = 1 then
Observao:
Sempre que um sinal precisar ser registrado ele dever passar por uma lgica que
infira um flip-flop.
Implementaes Sncronas
Exemplo:
Flip-Flop D
Reset Assncrono
process(nrst, clk)
begin
if nrst = 0 then
Q <= 0;
elsif clkevent and clk = 1 then
Q <= D;
end if;
end process;
Reset Sncrono
process(clk)
begin
if clkevent and clk = 1 then
if nrst = 0 then
Q <= 0;
else
Q <= D;
end if;
end if;
end process;
Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta Flip-Flop D:
Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta Flip-Flop D:
Bibliotecas utilizadas
Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta Flip-Flop D:
Bibliotecas utilizadas
Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta Flip-Flop D:
Bibliotecas utilizadas
Arquitetura (comportamento)
Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta Flip-Flop D:
Bibliotecas utilizadas
Arquitetura (comportamento)
Implementaes Assncronas
Exemplo:
Cdigo completo para uma porta Flip-Flop D:
Processo
Implementaes Sncronas
Exerccio:
Implementaes Sncronas
Exemplo:
Contadores
Implementaes Sncronas
Exerccio:
VHDL
Integrao entre
Mdulos
Descritos em
VHDL
Integrao de Mdulos
Motivao:
Implementao de Projetos Modular:
- Implementando projetos de maneira modular pode-se isolar erros mais facilmente ;
- Possibilita a diviso de tarefas entre projetistas em um mesmo projeto;
- Facilita documentao de manuteno e upgrade.
Reaproveitamento de cdigos:
- Cdigos descritos anteriormente podem ser reaproveitados, simplesmente agragandoos ao projeto atravs de cdigos de integrao;
- Possibilidade de utilizar macros (instanciar) hardwares especficos de cada dispositivo;
- Capacidade de otimizao de reaproveitamento de elementos de hardware.
Integrao de Mdulos
Diviso em Nveis de Hierarquia:
Todo projeto desenvolvido em VHDL pode possuir n n-veis
hierrquicos;
Os cdigos podem ser divididos em trs nveis bsicos de
hierarquia entre si, inferior, equivalente e superior;
Como conveno normalmente deixa-se o ltimo nvel (Top-Level)
sem nenhum processo corrente, a menos que este seja um
Testbench.
Integrao de Mdulos
Diviso em Nveis de Hierarquia:
Mdulos
MaiorMenor
Processos
Integrao de Mdulos
Diviso em Nveis de Hierarquia:
Implementao Prtica:
Integrao de Mdulos
Diviso em Nveis de Hierarquia:
Implementao Prtica:
Integrao de Mdulos
Declarao do Top-Level:
A declarao do top-level nada mais do que a declarao da entity
do mdulo:
-- libraries
entity nome_da_entidade is
port(
-- declarao das portas da integrao
);
end entity nome_da_entidade;
architecture nome_da_arquitetura of nome_da_entidade is
-- declarao dos sinais (de controle e de integrao)
-- declarao dos componentes
begin
-- port map dos mdulos (componentes)
-- processos
end architecture nome_da_arquitetura;
Integrao de Mdulos
Declarao de um Component:
A declarao de um component nada mais do que a descrio do
prottipo do componente (mdulo) VHDL descrito em outro arquivo;
Este prottipo a descrio de sua entidade.
component nome_do_arquivo is
port(
-- declarao das portas do componente
--Ex.:
rst : in std_logic;
clk: in std_logic;
q : out std_logic
);
end component nome_do_arquivo;
Integrao de Mdulos
Realizao de um Port Map:
Faz a ligao do component com o restante da descrio do
hardware;
Port map convencional (necessita da prvia declarao do
component).
nome_da_integrao : nome_do_arquivo
port map(
-- lista das ligaes com as portas do componente
-- Ex:
rst
=> reset,
clk
=> clock,
q
=> output
);
Observao:
Note que o operador => realiza o mapeamento do sinal e um assingment;
Note tambm que diferentemente da declarao das portas de um componente ou de
uma entidade, uma vrgula que separa as ligaes dos sinais, sendo que o ltimo no
separado por nenhum caractere.
Integrao de Mdulos
Realizao de um Port Map:
Port map otimizado (no necessita da prvia declarao do component).
nome_da_integrao : entity work.nome_do_arquivo
port map(
-- lista das ligaes com as portas do componente
-- Ex:
rst
=> reset,
clk
=> clock,
q
=> output
);
Observao:
Com este tipo de declarao no existe a necessidade de se declarar o componente
previamente.
VHDL
FSM
Finite State Machine
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Motivao:
- Desenvolvida pela Teoria dos Autmatos;
- Racionalizar sistemas complexos de deciso;
- Descrio de sistemas seqenciais.
Tipos:
- Mquina Moore;
- Mquina Mealy.
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Mquina Moore:
Entradas
Funo Prximo
Estado
Prximo Estado
clock
reset
Estado Atual
Registro de
Estado Atual
Funo
de Sada
Sadas
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Mquina Moore:
Condio de Transio 1
Condio
de
Transio 2
Estado 2
Estado 1
Sada 2
Sada 1
Condio de Transio 3
Condio
de
Transio 4
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Mquina Moore (Exemplo):
ch = 1
ch = 0
S2
S1
10
01
ch = 1
ch = 0
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
case estado is
when S1 =>
saida <= 01;
if ch = 1 then
estado <= S2;
else
estado <= S1;
end if;
when S2 =>
saida <= 10;
if ch = 1 then
estado <= S1;
else
estado <= S2;
end if;
when others =>
null;
end case;
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Mquina Mealy:
Entradas
Funo Prximo
Estado
Prximo Estado
clock
reset
Estado Atual
Registro de
Estado Atual
Funo
de Sada
Sadas
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Mquina Mealy:
Condio de Transio 1
Entrada/Sada 4
Entrada/Sada 3
Condio
de
Transio 2
Entrada/Sada 1
Estado 2
Estado 1
Entrada/Sada 2
Condio de Transio 3
Condio
de
Transio 4
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Mquina Mealy (Exemplo):
ch = 1
00
00
ch = 0
01
S2
S1
10
ch = 1
ch = 0
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
case estado is
when S1 =>
if ch = 1 then
estado <= S2;
else
estado <= S1;
end if;
when S2 =>
if ch = 1 then
estado <= S1;
else
estado <= S2;
end if;
when others =>
null;
end case;
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Codificaes de Estados:
- Codificao One Hot;
- Codificao Gray;
- Codificao Binria.
Estado
One Hot
Gray
Binrio
S0
00000001
000
000
S1
00000010
001
001
S2
00000100
011
010
S3
00001000
010
011
S4
00010000
110
100
S5
00100000
111
101
S6
01000000
101
110
S7
10000000
100
111
16
11
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
A implementao da codificao de estados pode ser realizada de
duas maneiras bsicas:
-
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exemplo de descrio utilizando o estilo de enumerao:
.
.
.
architecture fsm of fsm is
type tipo_estado is (S0, S1);
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exemplo de descrio utilizando o estilo de definio:
.
.
.
architecture fsm of fsm is
constant S0 : std_logic_vector(2 downto 0);
constant S1 : std_logic_vector(2 downto 0);
signal estado : std_logic_vector(2 downto 0);
begin
.
.
.
end fsm;
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exemplos:
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exemplos:
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exerccio:
Implemente e simule um
mdulo serializer em VHDL.
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exerccio:
send = 1
send = 0
Tx
Idle
serial
cnt = 0
cnt > 0
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exerccio:
Implemente e simule um
mdulo deserializer em VHDL.
Implementaes Sncronas
Mquinas de Estado Finito (FSM):
Exerccio:
sb= 1
sb= 0
Rx
Idle
serial
cnt = 0
cnt > 0
VHDL
Testbenches
Descritos em
VHDL
Testbench
Motivao:
Criar testes de projeto em software:
- Pode-se desenvolver cdigos de alto nvel (em VHDL) para se testar os mdulos;
- Cria-se uma infinidade de possibilidades de depurao;
- Testes de transiente e de regime permanente;
- Testes de DSP, Computacionais, de interfaceamento, etc.
Testbench
Sintaxe:
A sintaxe de um testbench idntica a de uma integrao, com a
diferena de que existir um processo gerando sinais de teste;
-- libraries
entity nome_da_entidade is
port(
-- declarao das portas da integrao
);
end entity nome_da_entidade;
-- libraries
entity nome_da_entidade is
end entity nome_da_entidade;
Testbench - Software
Gerenciamento de Sinais:
Em um testbench interessante passar para o cdigo VHDL o
mximo de funcionalidades possveis;
Quando utiliza-se o script TCL ou as interfaces grficas de
simuladores o processo de simulao torna-se mais lento pelo
seu maior custo computacional;
Alm disso a possibilidade de tornar o teste autocontido (o prprio
testbench gera os sinais e os avalia) diminui a influncia humana
padronizando os testes*.
* Facilitar a repetibilidade do teste importante para submeter o mdulos
aos mesmos tipos de entradas e distrbios, alm de pode-se sempre
aumentar o espao de testes incrementando o testbench.
Testbench - Software
Gerenciamento de Sinais:
Os principais sinais existentes em um testbench so o clock e o
reset;
Para implementar-se estes sinais existem uma tcnica bastante
simples para gerenci-los;
Utiliza-se constantes com o tipo time e o comando after (pode-se
lanar mo dessas premissas, pois se est lidando com um
cdigo no prototipvel);
Basta ento criar um sinal astvel para o clock utilizando da
mesma premissa utilizada em um oscilador;
E criar um sinal monoestvel para o reset, utilizando a idia de
um timer.
Testbench - Software
Gerenciamento de Sinais:
Gerenciamento do Clock
constant CLK_HALF_PER : time := 10 ns;
signal clk : std_logic := 0;
Atribuio feita normalmente (na descrio comportamental do cdigo)
Gerenciamento do Reset
constant RST_PER : time := 1 us;
signal rst : std_logic := 1;
Atribuio feita normalmente (na descrio comportamental do cdigo)
Testbench - Software
Exerccio:
Faa a integrao dos mdulos descritos a seguir
Testbench - Software
Exerccio:
Crie um testbench para o projeto anterior da seguinte maneira
Prototipao em PLDs
Obrigado!