Introdução VHDL Parte 4 - Testbench

Documentos relacionados
VHDL é uma linguagem bastante complexa!

low): Descreve o que o sistema deve fazer utilizando expressões lógicas.

VHDL é uma linguagem bastante complexa!

Introdução ao VHDL. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva. Original por Ayman Wahba

Primeiro Trabalho de Sistemas Digitais

Circuitos/Sistemas Integrados Digitais (CID/SID)

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 18/04/2016 Prof. Alexandre - ELP1DLP1 / DEE

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 10/03/2017 Prof. Alexandre - ELP1DLP1 / DEE

Laboratório sobre Implementação de Sistemas Digitais com VHDL Multiplicação por somas sucessivas

Introdução à Linguagem VHDL

PRÁTICAS PARA DESENVOLVIMENTO DE PROTÓTIPOS DE CIRCUITOS DIGITAIS COM O KIT EDUCACIONAL DE2

FPGA & VHDL. Tutorial

Introdução à Linguagem VHDL

Tutorial Xilinx Somador e Subtrator Ciência da Computação 5º Período. Universidade Federal de Alagoas Campus Arapiraca Disciplina: Sistemas Digitais

LABORG. Parte 1 Introdução à Simulação em VHDL. Fernando Moraes e Ney Laert Vilar Calazans

12/11/13. Obje%vos do laboratório. SST20707 Síntese de Sistemas de Telecomunicações. Síntese de máquinas de estado (FSM) Finite State Machine (FSM)

LABORG. Parte 3 - VHDL: Processos, Paralelismo e o Comando process. Fernando Gehm Moraes Ney Laert Vilar Calazans

SIMULAÇÃO DE CIRCUITOS

Descrição e Projeto de Circuitos Utilizando VHDL

Gustavo G. Parma. Objetivos: O aluno deverá ser capaz de compreender os conceitos básicos de VHDL.

Livro texto: VHDL- Descrição e Síntese de Circuitos Digitais Roberto D Amore Editora LTC

Passos Iniciais para simulação de um projeto utilizando portas lógicas

4.a Aula Prática Projeto de um Somador de 16 bits com a Linguagem VHDL

ROTEIRO 1 INTRODUÇÃO AO QUARTUS II

Eletrônica Digital para Instrumentação

Projeto de Circuito Combinacional

ALTERA Quartus II. Manual

Introdução. VHDL: VHSIC Hardware Description Language. Origem: VHSIC: Very High Speed Integrated Circuits. Departamento de Defesa EUA

O diagrama ASM contém dois elementos básicos: o bloco de estado e o bloco de decisão.

Organização e Arquitetura de Computadores II

Tópicos Especiais 2 Capítulo 3 Introdução ao VHDL, sintaxe básica, tipo de dados e atribuições

Fundamentos de Sistemas Digitais. Lógica Sequencial. Prof. Dr. Alexandre M. Amory Prof. Dr Edson I. Moreno

Registradores. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva

1 Objetivos. 2 Material utilizado. 3 Normas de segurança e conduta no laboratório. 4 Contextualização. Pág 1/6

FPGA & VHDL. Tutorial Aula 1. Computação Digital

Eletrônica Digital para Instrumentação. Herman Lima Jr.

Projeto de Somador com e sem Sinal. Qualificadores

Prof. Leonardo Augusto Casillo

PASSO A PASSO COMO CRIAR UM NOVO PROJETO EM SCHEMATIC NO SOFTWARE QUARTUS II CYCLONE IV

Descreva em VHDL, simule no simulador logico e sintetize usando uma ferramenta de CAD para FPGA :

Como verificar um projeto ou construindo testbenches em VHDL

LABORG. Parte 5 Projeto de um circuito digital de média complexidade Parte 2. Fernando Gehm Moraes Matheus Trevisan

Laboratório Configuração do Backup e da Restauração de Dados no Windows 7 e no Vista

TUTORIAL DE INSTALAÇÃO E USO DO OWL-S COMPOSER utilizando o Eclipse Galileo Modelling Tools

Exercícios de Laboratório 1

Departamento de Engenharia Electrotécnica e de Computadores Instituto Superior Técnico Universidade Técnica de Lisboa Sistemas Digitais

Como usar o P-touch Transfer Manager

Prototipação em PLDs

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

Solicitação de Serviço

Funções de Lógica Combinacional

MANUAL DE UTILIZAÇÃO DO MÓDULO IMPRESSÃO DE ETIQUETAS

Sistemas Digitais (SD) Lógica Programável

Tutorial do 2º Experimento: Programação do CLP Siemens S7-1200

Como abrir arquivo XML no Excel

Requisitos Mínimos. 1GB de espaço em disco 2GB de memória (recomendável 4GB) Versão mais recente do Java Acesso a Internet

Delphi 7 Aula 03 Progressão Geométrica

UNIVERSIDADE FEDERAL DE ITAJUBÁ. Grupo de Microeletrônica TUTORIAL VHDL

MANUAL DO USUÁRIO. Figura 1: Tela de Apresentação do FaçaCalc.

1 Objetivos. 2 Material utilizado. 3 Normas de segurança e conduta no laboratório. 4 Contextualização. Pág 1/18

Bloco G - Registros 0500 e Janeiro/ 2011

Comunicação IHMs Beijer Electronics com CLPs Altus

Excel Tabela Dinâmica - Incrementando seus conhecimentos e Aperfeiçoando a sua prática Excel 2010 Uso inteligente da Tabela Dinâmica

LABORG. VHDL Máquina de estados finitos

Roteiro para experiências de laboratório. AULA 3: Simuladores de eletrônica. Alunos: 2-3-

Microsoft PowerPoint 2003

Implementação de um Sistema Digital em VHDL Cronômetro para Jogos de Basquete

Tutorial - Xilinx ISE

FUNCIONALIDADE TIME ACTION GOT1000 (GT14) No. DAP-GOT-02. rev. 0

Uma pasta é pouco mais que um contêiner no qual é possível armazenar arquivos. Se

Objetivo. Coletor de Dados Cadastro de Layout no Sismoura. Importar arquivo de coletor para o Sismoura.

Concessão - Aposentadoria

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

UNIVERSIDADE FEDERAL DE ITAJUBÁ Instituto de Engenharia Elétrica Engenharia da Computação

Saiba mais Scribd Carregar um documento Pesquisar Documentos Explorar. gersonjpl

DSP Builder - Altera. MO801 - Tópicos em Arquitetura e Hardware. Michele Tamberlini 05/2006

Tutorial: Programação do CLP Siemens S Ambiente do software TIA Portal V11 da Siemens

Unimed de Araraquara Coop. De Trabalho Médico Manual XML TISS Unimedara

A instalação será feita através do link Setup Magni 2, situado no CD do Rasther.

1 Criptografando arquivos em um arquivo zip com o menu de contexto

Sumário 1. Inicializando o Sistema Arquitetura do Sistema Consulta Rápida de Veículos Informações Gerais...

PRATICANDO VHDL. Delfim Luis Torok Ewerton Artur Cappelatti

Questionário de revisão para AV1 de Informática Aplicada Valor 1,0 ponto - Deverá ser entregue no dia da prova.

O Camguard permite detectar e gravar vídeos facilmente com uma webcam.

Projecto de Sistemas Digitais. Trabalho Prático 1

Instalando o Eclipse e o Android

EPUSP PCS 2355 Laboratório Digital. Contadores em VHDL

PROJETO DE SISTEMAS. DIGITAIS UTILIZANDO FPGAs. Parte 1

MANUAL. Localizador: Página: MN 016 SGI-INFRA- . Informação)

Laboratório Multiusuário de Estudos em Biologia I Universidade Federal de Santa Catarina Centro de Ciências Biológicas

SmartOrder 2 Guia do Usuário

Manual de Utilização do software Colacril Office para criação e impressão de etiquetas. Manual de Utilização

Departamento de Engenharia Electrotécnica e de Computadores Instituto Superior Técnico Universidade Técnica de Lisboa Sistemas Digitais

PROJETO INFORMÁTICA NA ESCOLA

Transcrição:

Introdução VHDL Parte 4 - Testbench Prof. Mário Luiz Rodrigues mario.luiz@ifmg.edu.br Prof. Otávio Gomes otavio.gomes@ifmg.edu.br 1

library IEEE; use IEEE.std_logic_1164.all; entity portae is port( a: in STD_LOGIC; b: in STD_LOGIC; s: out STD_LOGIC); end portae; architecture portae_arch of portae is begin s <= a and b; end portae_arch; 2

3

library IEEE; use IEEE.std_logic_1164.all; entity portaou is port ( a: in STD_LOGIC; b: in STD_LOGIC; s: out STD_LOGIC ); end portaou; architecture portaou_arch of portaou is begin s <= a or b; end portaou_arch; 4

5

library IEEE; use IEEE.std_logic_1164.all; entity inversor is port ( a: in STD_LOGIC; s: out STD_LOGIC ); end inversor; architecture inversor_arch of inversor is begin s <= not a; end inversor_arch; 6

7

library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_arith.all; entity somador4bits is port ( dadoa : in unsigned (3 downto 0); dadob : in unsigned (3 downto 0); result: out unsigned (4 downto 0) ); end somador4bits; architecture arch_soma of somador4bits is begin result(4 downto 0) <= ('0' & dadoa(3 downto 0)) + ('0' & dadob(3 downto 0)); end arch_soma ; 8

9

library IEEE; use IEEE.std_logic_1164.all; entity mux21_conc is port ( a: in bit; b: in bit; s: in bit; z: out bit ); end mux21_conc ; architecture mux21_arch of mux21_conc is signal aok, bok, ns : bit; begin aok <= a and s; bok <= b and ns; ns <= not(s); z <= aok or bok; end mux21_arch; 10

11

library IEEE; use IEEE.std_logic_1164.all; entity mux21_estrut is port ( a: in STD_LOGIC; sel: in STD_LOGIC; ); end mux21_estrut; b: in STD_LOGIC; saida: out STD_LOGIC architecture mux21_arch of mux21_estrut is signal aok,bok,ns : STD_LOGIC; component portae port(a, b : in STD_LOGIC; s : out STD_LOGIC); end component; component portaou port(a,b : in STD_LOGIC; s : out STD_LOGIC); end component; component inversor port(a : in STD_LOGIC; s : out STD_LOGIC); end component; begin u1: portae port map (a,sel,aok); u2: inversor port map(sel,ns); u3: portae port map (ns,b,bok); u4: portaou port map (aok,bok,saida); end mux21_arch; 12

Descrição de Circuitos com VHDL Testbench 13

Teste de código VHDL O código VHDL permite utilizar vários comandos e construções, porém nem todos estes comando ou construções são suportadas pelas ferramentas de síntese. Por exemplo, software Quartus da ALTERA é uma ferramenta utilizada para sintetizar o código VHDL e programar dispositivos PLD s e FPGA s, mas não suporta algumas opções de utilização dos comandos WAIT e AFTER. 14

Teste de código VHDL Comando WAIT O comando Wait possui várias opções de utilização como: wait until, wait on e wait for. As duas primeiras necessitam de uma lista de sensibilidade assim como um processo. Não suportadas por algumas ferramentas de síntese. WAIT ON lista de sensibilidade; WAIT UNTIL expressão booleana; WAIT ON lista de sensibilidade UNTIL condição booleana; 15

Teste de código VHDL Onde é utilizada esta construção? Softwares como Modelsim são programas que testam códigos VHDL sem se preocupar se o código é sintetizável ou não. Portanto todos os comandos utilizados na descrição do código VHDL são aceitos por este software. 16

Testbench Testbench: recurso em VHDL que permite que um circuito sob teste (Unit Under Test UUT) seja submetido a sinais de estímulo e tenha a sua funcionalidade verificada. 17

Testbench Um projeto fica incompleto se não for verificado. Uma das formas de se testar a descrição VHDL é pelo uso de testbench. Testbench é um ambiente onde o projeto, chamado de design ou Unit Under Test (UUT) é verificada através da aplicação de sinais ou estímulos, e da monitoração de suas respostas. Em outras palavras, um testbench substitui o ambiente de projeto, de forma que o comportamento do projeto possa ser observado e analisado. 18

Testbench Uma forma de testar o projeto: Na sua forma mais simples, contém um processo gerador de teste e uma instância do projeto O testbench não contém portas de entrada/saída, é um sistema fechado 19

Consiste de: Uma chamada do componente sob teste (UUT Unit Under Test) ; Geradores de estímulos; Os estímulos são um conjunto de sinais declarados internamente na arquitetura do testbench e passada aos ports da UUT por sua chamada. Os estímulos são definidos como formas de onda em um ou mais processos comportamentais. Ferramentas para monitoramento das respostas do circuito aos estímulos aplicados. TESTBENCH Y Gerador A de Estimulos Z B Unidade A sob Teste Y B Z 20

Testbench Os comandos que descrevem os estímulos não são sintetizáveis. Ex: 21

Formato de um Testbench O test bench é como outra especificação VHDL. Consiste de uma entity e de uma architecture. Uma importante diferença é que a entity de uma descrição de testbench não tem ports. Isto se deve ao fato que a descrição testbench não representa circuito real que precisa se comunicar com o ambiente e, portanto não tem entradas ou saídas. Todos os valores para os ports de entrada da UUT são especificados no testbench como estímulo. 22

Formato de um Testbench As saídas são observadas pelo simulador e podem ser armazenadas em um arquivo. O arquivo a ser testado não precisa de modificações ou comandos adicionais. Assim, qualquer especificação VHDL pode ser testada. A UUT deve ser chamada na arquitetura da test bench. Isto pode ser feito da mesma forma que qualquer especificação estrutural, através de componente. Aos ports da UUT devem ser atribuídos os estímulos. 23

Formato de um Testbench Como os processos e a chamada de componentes são concorrentes, não faz diferença se a UUT ou o estímulo for definido primeiro. A parte principal de um testbench é o conjunto de estímulos. Como o testbench não se comunica com o ambiente por sinais, todos os estímulos devem ser declarados como sinais no cabeçalho da architecture do testbench. Os estímulos podem ser especificados tanto como declarações concorrentes (mudanças nos sinais especificados como formas de onda), ou como processo que contenha declarações de sinais separados por comandos wait e for, introduzindo atrasos entre declarações subseqüentes. 24

Formato de um Testbench 25

Formato de um Testbench 26

Formato de um Testbench 27

Formato de um Testbench Uso de Constantes 28

Formato de um Testbench Uso de Constantes 29

Formato de um Testbench Uso de Constantes 30

Formato de um Testbench Uso de Constantes Exemplo de teste para um flip-flop D utilizando constantes Objetivo: Descrição de sinais que podem ser adaptados para simulações em várias freqüências, alterando apenas o valor de uma constante Periodo de clock alterado para 500 ns - 4. 31

Testbench Ao final de uma verificação tem-se o resultado da simulação e/ou uma listagem de resultados na forma de relatório. Isto é obtido de várias formas; usando aplicativos dos simuladores, como nos exemplos anteriores(listagem das variações dos sinais ao longo do tempo ou telas gráficas), Ou usando o comando report que apresenta na tela do software de simulação ou em um arquivo os resultados de toda a simulação. Esta ultima forma é fácil de usar, e é empregada para mostrar uma mensagem quando há erros. Se esta opção é usada e não há mensagem durante a simulação, então se presume que o UUT tenha funcionado como esperado. 32

Testbench Em conjunto com o comando report utiliza-se a declaração assert que verifica uma condição Booleana, que define uma mensagem a ser apresentada quando a condição é falsa O comando assert é por natureza seqüencial e portando usado em um processo. Deve-se usar o par assert-report para cada novo valor esperado do UUT e deve haver uma respectiva condição no conjunto. 33

Testbench É esperado na mensagem que seja especificado no que ocorreu, quando ocorreu e os valores das entradas. Lembre-se que os novos valores só são atribuídos quando o processo é suspenso. Não se deve esperar valores nas saídas imediatamente após a sua atribuição. O comando report consiste da declaração assert que verifica uma condição Booleana, da declaração report que define uma mensagem a ser apresentada quando a condição é falsa, e da declaração severity que informa ao simulador quão severa foi a condição de erro encontrada, variando desde um alerta até uma falha geral no sistema. 34

Testbench Esta ultima forma é fácil de usar, e é empregada para mostrar uma mensagem quando há erros. Se esta opção é usada e não há mensagem durante a simulação, então se presume que a UUT tenha funcionado como esperado. 35

Modelsim - Altera 36

Quartus - Modelsim Instruções para rodar inserindo Formas de Onda a partir do software Quartus 37

Após feito a descrição no Quartus e salvado corretamente, abra o programa Modelsim Altera. 38

Na barra de ferramentas clique em COMPILE e em seguida em COMPILE OPTIONS Nesta janela você vai configurar como deseja que o Modelsim compile sua descrição. 39

Depois de configurado a simulação clique novamente em COMPILE e em seguida em COMPILE... Nesta janela você vai selecionar a descrição que deseja simular. No campo EXAMINAR selecione a pasta e escolha o arquivo (.vhdl) e clique em COMPILE. 40

Observe que na janela TRANSCRIP vai aparecer mensagens mostrando que a entidade e a arquitetura foi carregada e compilada. Ex.: # -- Loading package standard # -- Compiling entity wait_a # -- Compiling architecture teste of wait_a Após isso clique em DONE. 41

Na janela WORKSPACE clique em WORK. Veja que o arquivo está foi compilado para a pasta WORK do modelsim. Clicando no sinal + ao lado da entidade a que irá ser submetida a simulação verá que dentro da entidade wait_a existe uma arquitetura chamada teste onde está estruturado nosso código. Dê duplo clique sobre a entidade wait_a. 42

Veja que na janela WORKSPACE foi listado os processos que existem na entidade e na janela OBJECTS foi listada as entradas e saídas da entidade wait_a. 43

Na barra de ferramentas no menu View habilite a janela Wave para fazermos a simulação por forma de onda. 44

Selecione e arraste as entradas e saídas da janela OBJECTS para a janela WAVE. 45

Na barra de ferramentas no menu Simulate escolha a opção Runtime Options... Aqui você pode definir como quer que os sinais sejam exibidos, tempo padrão de simulação, número de iterações... 46

Na barra de ferramentas no menu Simulate e submenu Run existem seis opções de simulação. Simula até 1us (tempo definido em Runtime Opitions) Simula até completar as 5000 iterações (definido em Runtime Opitions) 47

48

49

50

Para alterar a forma de visualizar o sinal, clique com o botão direito do mouse sobre o sinal, selecione propriedades. Em Radix selecione como deseja ver o sinal. Altere as saídas xa e xb para unsigned. 51

Este software simula o código VHDL sem se importar se ele é sintetizavel ou não. Então é feito no Quartus uma descrição para testar outra descrição. Como assim? As vezes é muito demorado ficar gerando formas de onda para testar uma descrição, ou então um mesmo conjunto de forma de onda é utilizado para testar algumas variações da descrição que possui as mesmas entradas e saídas. Então para isso é utilizado uma descrição para fazer o teste de outra descrição. 52

Quartus - Modelsim Instruções para rodar um TestBench a partir do software Quartus 53

library IEEE; use IEEE.std_logic_1164.all; entity ffdr is port ( d: in STD_LOGIC; clk: in STD_LOGIC; rst: in STD_LOGIC; saida: out STD_LOGIC ); end ffdr; architecture ffdr_arch of ffdr is signal q : STD_LOGIC; begin ffdr: process (d,clk,rst) begin if rst='1' then q <= '0'; elsif rising_edge(clk) then q <= d; end if; end process ffdr; saida <= q; end ffdr_arch; 54

Ferramenta Altera Quartus Criando um projeto novo 55

Ferramenta Altera Quartus Criando um projeto novo 56

Ferramenta Altera Quartus Criando um projeto novo 1 2 3 4 57

Ferramenta Altera Quartus Criando um projeto novo Carregando um arquivo existente 58

Ferramenta Altera Quartus Criando um projeto novo Carregando um arquivo existente 59

Ferramenta Altera Quartus Criando um projeto novo Carregando um arquivo existente 60

Ferramenta Altera Quartus Criando um projeto novo Carregando um arquivo existente 61

Ferramenta Altera Quartus Criando um projeto novo - Escolha da família (Cyclone II) e do modelo (EP2C20F484C7) da FPGA 1 2 3 62

Ferramenta Altera Quartus Criando um projeto novo 63

Ferramenta Altera Quartus Criando um projeto novo 64

Ferramenta Altera Quartus Projeto novo criado com sucesso 65

66

67

Test bench Verificar o arquivo fornecido Test bench. OBS: Não adicionar o arquivo ao projeto. O software QUARTUS não sintetiza as descrições deste arquivo. Será utilizado o software MODELSIM (Mentor Graphics) para simulação e analise. 68

LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY vetor_teste IS END vetor_teste; ARCHITECTURE sinais OF vetor_teste IS SIGNAL dado SIGNAL clk SIGNAL rst SIGNAL sinal_saida : STD_LOGIC; : STD_LOGIC; : STD_LOGIC; : STD_LOGIC; COMPONENT ffdr port ( d: in STD_LOGIC; clk: in STD_LOGIC; rst: in STD_LOGIC; saida: out STD_LOGIC); END COMPONENT; (...) 69

BEGIN UUT: ffdr PORT MAP( d clk rst saida => dado, => clk, => rst, => sinal_saida); signal_clk: PROCESS BEGIN clk<= '0'; WAIT FOR 50 ns; clk<= '1'; WAIT FOR 50 ns; END PROCESS; signal_rst: PROCESS BEGIN rst<= '1'; WAIT FOR 100 ns; rst<= '0'; WAIT FOR 10000 ns; END PROCESS; signal_dado: PROCESS BEGIN dado<= '0'; WAIT FOR 200 ns; dado<= '1'; WAIT FOR 200 ns; END PROCESS; END sinais; 70

Ir no menu Assignments / Settings e editar o campo Simulation, clicando sobre o botão TestBenches e em seguida clicar em New. 71

Ir no menu Assignments / Settings e editar o campo Simulation, clicando sobre o botão TestBenches e em seguida clicar em New. 72

Ir no menu Assignments / Settings e editar o campo Simulation, clicando sobre o botão TestBenches e em seguida clicar em New. 73

Preencher os campos Test bench Name, Top level module in test bench, e o nome da instância criada no arquivo de test bench, a seguir, selecionar o arquivo de testbench e clicar em add. 74

75

76

No Menu Tools / Run Simulation Tool / RTL Simulation, e a seguir o ModelSim irá abrir e executar a simulação. Simulação Funcional Simulação considerando atrasos das células e roteamento Inicio da simulação 77

Abaixo são mostrados os resultados obtidos apresentados no ModelSim. Simulação Funcional por este test bench 78

Abaixo são mostrados os resultados obtidos apresentados no ModelSim. Simulação Funcional por este test bench 79