parte 1 – introdução à simulação em vhdl laborg ney laert vilar calazans 24/agosto/2009
Post on 17-Apr-2015
112 Views
Preview:
TRANSCRIPT
Parte 1 – Introdução à Simulação em VHDL
LABORGLABORG
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.
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
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?
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:
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:
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!)
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
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)
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
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
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
13Ney Calazans
Usando o Simulador Active-HDL
Compilar até não haver mais erros de sintaxe
14Ney Calazans
• Uma vez concluído o processo de compilação sem erros, inicializar a simulação:
Usando o Simulador Active-HDL
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
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!!
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
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:
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)
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.
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)
top related