A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Ney Laert Vilar Calazans

Apresentações semelhantes


Apresentação em tema: "Ney Laert Vilar Calazans"— Transcrição da apresentação:

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

2 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.

3 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

4 VHDL é uma linguagem de programação?
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++!!) Estrutura Geral de um Testbench Geração de estímulos e Captura de saídas Circuito (RTL) Comparação Resultados esperados Resultados

5 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 Esquemático: Tabela Verdade A B Sum Carry 1 Código VHDL da entidade: entity halfadd is port (A, B: in std_logic; Sum, Carry: out std_logic); end halfadd;

6 Sumário de Descrição de Hardware (2/2)
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) Código VHDL da entidade: architecture comp of halfadd is begin Sum <= A xor B; Carry <= A and B; end comp;

7 Descrição Completa do Somador
library IEEE; use IEEE.Std_Logic_1164.all; entity halfadd is port (A, B: in std_logic; Sum, Carry: out std_logic); end halfadd; architecture comp of halfadd is begin 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!)

8 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.

9 Exemplo de Testbench para o Somador
library ieee; use ieee.std_logic_1164.all; entity halfadd_tb is end halfadd_tb; architecture TB_ARCHITECTURE of halfadd_tb is signal aa,bb,soma,vaium : std_logic; begin UUT : entity work.halfadd port 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) Nome do projeto (entidade) Instanciação do projeto, conectando pinos do projeto a fios do testador Geração dos estímulos, dizendo como fios do testador se comportam

10 Usando o Simulador Active-HDL
Abrir o Active-HDL Executar o comando Create New Workspace Definir o nome do Workspace

11 Usando o Simulador Active-HDL
Criar projeto vazio (Empty) Dar Next na próxima janela (seleção de VHDL) Definir o nome do Projeto dentro do Workspace

12 Usando o Simulador Active-HDL
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)

13 Usando o Simulador Active-HDL
Compilar até não haver mais erros de sintaxe

14 Usando o Simulador Active-HDL
Uma vez concluído o processo de compilação sem erros, inicializar a simulação:

15 0. Certifique-se de escolher a aba Structure do Projeto
1. Abrir a hierarquia para visualizar o módulo que está sendo testado 2. Abrir uma janela de formas de onda 3. Definir o tempo de simulação: 40 ns 4. Selecionar e arrastar os sinais que se deseja verificar o comportamento desta janela para a janela de formas de onda

16 Usando o Simulador Active-HDL
Botão para disparar a execução Estes valores correspondem ao valor dos sinais no instante onde está o cursor vermelho!! Botões de Zoom da janela de simulação O comportamento é o esperado? Explicar.

17 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 is port (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

18 Dicas para uso do Simulador
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 Se a licença do simulador permitir, pode-se ter: File  New Design  Empty, com nome soma. No browser do simulador ter-se-á: Workspace criado no início da aula Projeto inicial Novo projeto

19 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: (testar outros valores no seu testbench) O comportamento é o esperado? Explicar.

20 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.

21 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 (Acréscimos do trabalho estão disponíveis na aula seguinte)


Carregar ppt "Ney Laert Vilar Calazans"

Apresentações semelhantes


Anúncios Google