21
Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

Embed Size (px)

Citation preview

Page 1: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

Parte 1 – Introdução à Simulação em VHDL

LABORGLABORG

Ney Laert Vilar Calazans

24/agosto/2009

Page 2: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

2Ney Calazans

Introdução

• VHDL: Uma linguagem para descrever sistemas digitais

• Outras linguagens de descrição de hardware

– SystemC, VERILOG, Handel-C, SDL, ISP, Esterel, … (existem dezenas)

• Originalmente especificar hardware; hoje simulação e síntese!

• Origem

– Linguagem para descrever hardware, no contexto do programa americano

“Very High Speed Integrated Circuits” (VHSIC), iniciado em 1980.

– VHDL VHSIC Hardware Description Language

– Padrão IEEE em 1987 (Institute of Electrical and Electronics Engineers), revisado

em 1993, 2000, 2002 e 2004

– Linguagem utilizada mundialmente por empresas de CAD (simulação, síntese,

propriedade intelectual). Verilog muito usada nos EUA.

Page 3: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

3Ney Calazans

Benefícios / Desvantagens

• Benefícios (em relação a diagramas de esquemáticos)– Especificação do sistema digital:

• Projetos independentes da tecnologia (implementação física é postergada)

• Ferramentas de CAD compatíveis entre si

• Flexibilidade: re-utilização, escolha de ferramentas e fornecedores

• Facilidade de atualização dos projetos

• Permite explorar, em um nível mais alto de abstração, diferentes alternativas de implementação

• Permite, através de simulação, verificar o comportamento do sistema digital

– Nível físico:• Reduz tempo de projeto (favorece níveis abstratos de projeto)

• Reduz custo do projeto

• Elimina erros de baixo nível (se usado como base de ferramentas automatizadas)

• Conseqüência: reduz “time-to-market” (tempo de chegada de um produto ao mercado)

• Desvantagens (em relação a diagramas de esquemáticos)– Hardware gerado pode ser menos otimizado

– Controlabilidade / Observabilidade de projeto reduzidas

Page 4: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

4Ney Calazans

• Resposta curta: Não, é uma linguagem de descrição de hardware!• Código é executado em um simulador

– Não se enxerga o “compilador” de VHDL, não há um “código executável” visível

• Projeto do usuário– Especificado tipicamente no nível de abstração de transferência em ter registradores (em inglês,

Register – Transfer Level ou RTL), mas não apenas neste nível!

• Testbench: uma descrição em VHDL ou outra linguagem do procedimento de teste de um circuito

– Especificação comportamental do ambiente externo ao projeto (estímulos externos)– Interage com o projeto– Não precisa ser descrito em VHDL (o projeto VHDL pode ser validado em ambiente C/C++!!)

Geração de estímulose

Captura de saídasCircuito (RTL)

Resultados Resultados esperados

Comparação

Estrutura Geral de um Testbench

VHDL é uma linguagem de programação?

Page 5: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

5Ney Calazans

Sumário de Descrição de Hardware (1/2)

• INTERFACE EXTERNA: entity

– Especifica somente a interface entre o hardware e o ambiente

– Não contém definição do comportamento ou da estrutura internos

A B Sum Carry

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1entity halfadd isport (A, B: in std_logic; Sum, Carry: out std_logic);end halfadd;

Código VHDL da entidade:

Tabela Verdade

A

B

Sum

Carry

Esquemático:

Page 6: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

6Ney Calazans

• COMPORTAMENTO : architecture

– Especifica o comportamento e/ou a estrutura internos da entity

– Deve ser associada a uma entity específica

– Uma entity pode ter associada a si várias architecture

(representando diferentes formas de implementar um mesmo módulo)

architecture comp of halfadd isbegin Sum <= A xor B; Carry <= A and B;end comp;

Sumário de Descrição de Hardware (2/2)

Código VHDL da entidade:

Page 7: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

7Ney Calazans

Descrição Completa do Somador

library IEEE;use IEEE.Std_Logic_1164.all;

entity halfadd isport (A, B: in std_logic; Sum, Carry: out std_logic);end halfadd;

architecture comp of halfadd isbegin Sum <= A xor B; Carry <= A and B;end comp;

Esta biblioteca e pacote definem o tipo std_logic (que

não é parte da linguagem VHDL!)

Page 8: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

8Ney Calazans

Validação por Simulação

• Uma forma simples de testar o projeto: testbenches

– Na sua forma mais simples, um testbench 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 ou autônomo.

A

B

Y

Z

PROJETO

Y

Z

A

B

GERADOR DE TESTE

TESTBENCH

Page 9: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

9Ney Calazans

Exemplo de Testbench para o Somador

library ieee;use ieee.std_logic_1164.all;

entity halfadd_tb isend halfadd_tb;

architecture TB_ARCHITECTURE of halfadd_tb is

signal aa,bb,soma,vaium : std_logic;

begin

UUT : entity work.halfaddport map ( A => aa, B => bb,

Sum => soma, Carry => vaium );

aa <= '0', '1' after 10 ns, '0' after 20 ns, '1' after 30 ns;

bb <= '0', '1' after 20 ns;

end TB_ARCHITECTURE;

Testador não tem pinos externos (ports in ou out)

Instanciação do projeto, conectando pinos do projeto a fios do testador

Geração dosestímulos, dizendo como fios do testador se comportam

Nome do projeto (entidade)

Page 10: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

10Ney Calazans

Usando o Simulador Active-HDL

• Abrir o Active-HDL

– Executar o comando Create New Workspace

– Definir o nome do Workspace

Active-HDL 7.2.lnk

Page 11: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

11Ney Calazans

• Criar projeto vazio (Empty)

• Dar Next na próxima janela (seleção de VHDL)

• Definir o nome do Projetodentro do Workspace

Usando o Simulador Active-HDL

Page 12: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

12Ney Calazans

• O próximo passo é colocar o VHDL no projeto:

• Escolher a opção de menu File New VHDL source

• Apenas selecionar um nome para o VHDL, usando no restante das janelas o botão Next. Uma janela é aberta com um template. Desta vez, selecionar todo o texto do template e o apagá-lo.

• Agora, inserir o código das lâminas anteriores (Descrição do Somador e Descrição VHDL do Testbench)

Usando o Simulador Active-HDL

Page 13: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

13Ney Calazans

Usando o Simulador Active-HDL

Compilar até não haver mais erros de sintaxe

Page 14: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

14Ney Calazans

• Uma vez concluído o processo de compilação sem erros, inicializar a simulação:

Usando o Simulador Active-HDL

Page 15: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

15Ney Calazans

2. Abrir uma janela de formas de onda

3. Definir o tempo de simulação: 40 ns

1. Abrir a hierarquia para visualizar o módulo que está sendo testado

4. Selecionar e arrastar os sinais que se deseja verificar o comportamento desta janela para a janela de formas de onda

0. Certifique-se de escolher a aba Structure do Projeto

Page 16: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

16Ney Calazans

• O comportamento é o esperado? Explicar.

Botão para disparar a execução

Botões de Zoom da janela de simulação

Usando o Simulador Active-HDL

Estes valores correspondem ao valor dos sinais no instante onde está o cursor vermelho!!

Page 17: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

17Ney Calazans

Sinais de 1 Bit e Barramentos

• std_logic fio e std_logic_vector vários fios (barramento)

• Escrever um novo código utilizando sinais não de 1 bit mas de 4 bits std_logic_vector(3 downto 0). O efeito é transformar o meio somador de 1 bit em um somador de 4 bits

• A entidade deve ser:entity soma isport (A, B: in std_logic_vector(3 downto 0); Soma: out std_logic_vector(3 downto 0) );end soma;

• O corpo da arquitetura deverá conter apenas “soma <= a + b;”

• Incluir o uso da: use IEEE.std_logic_unsigned.all; (Porquê?)

• Escrever o test bench correspondente e mostrar ao professor a simulação

Page 18: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

18Ney Calazans

Dicas para uso do Simulador

• File New Design Empty, com nome soma. No browser do simulador ter-se-á:

Workspace criado no início da aula

Projeto inicial

Novo projeto

• Na versão atual do simulador, não se pode ter mais de um projeto (design) no mesmo workspace. Assim, o procedimento de criação do novo projeto pressupõe repetir a ação das transparências 10-12.

• Se a licença do simulador permitir, pode-se ter:

Page 19: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

19Ney Calazans

Geração de Estímulos e Resultado Esperado

• 4 bits podem ser representados como um único dígito em hexadecimal. No testbench pode-se escrever:

– aa <= x"4", x"5" after 10 ns, x"A" after 20 ns, x"B" after 30 ns;

– bb <= x"8", x"3" after 20 ns;

– Ao simular este circuito, na simulação aparece algo como:

• O comportamento é o esperado? Explicar.

(testar outros valores no seu testbench)

Page 20: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

20Ney Calazans

TRABALHO A FAZER

• Implemente o circuito de seis portas lógicas abaixo em VHDL;

• Crie um projeto com o simulador Active-HDL que contenha o par entidade-arquitetura correspondente a este circuito;

• Crie um arquivo que instancie este circuito, que gere estímulos para todas suas 4 entradas e os aplique à instância, isto é, crie um testbench para o circuito.

• Simule o testbench e descreva como o circuito funciona.

Page 21: Parte 1 – Introdução à Simulação em VHDL LABORG Ney Laert Vilar Calazans 24/agosto/2009

21Ney Calazans

A ENTREGAR

• Os três projetos Active-HDL (somador de 1 bit, somador de 4 bits, diagrama de esquemáticos de portas lógicas) completos, contendo, para cada circuito:

– VHDL do circuito proposto;– O testbench implementado;– Instâncias de formas de onda geradas, explicando a operação do circuito;– Um texto descrevendo como o circuito funciona.

– Data Final de Entrega: 14/09/2009, até o fim do dia, por e-mail (Acréscimos do trabalho estão disponíveis na aula seguinte)