VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais
Especificação da Estrutura do Sistema
Instanciação Direta
Especificação da Estrutura do Sistema Instanciação Direta
Especificação da Estrutura do Sistema Instanciação Direta
Especificação da Estrutura do Sistema Componentes
Especificação da Estrutura do Sistema Componentes
Especificação da Estrutura do Sistema Componentes
Especificação da Estrutura do Sistema Componentes
Algumas Práticas que Devem ser Evitadas Maus exemplos: process (a,b) begin if (a = 1) then q <= b; end if; end process; process(c) begin case c is when 0 => q <= 1; z <= 0; when others => q <= 0; end case; end process; Exemplo1 falta else Exemplo2 falta atribuição de z quando c é diferente de 0. Para evitar: atribua valores default as saídas process(inputs,state) begin – outpus <= 0; – case (state) –... – end case; end process;
Teste x Verificação Verificação – usado para verificar se o projeto está de acordo com o desejado – objetivo é verificar a funcionalidade – a ferramenta mais utilizada é o simulador Teste – usado para verificar a fabricação do dispositivo – objetivo não é verificar a funcionalidade – objetivo é exercitar os nós físicos do sistema nós devem ir de 0 para 1 ou de 1 para 0 – usa padrões específicos para exercitar estes nós estes padrões são gerados por ferramenta de ATPG (automatic test pattern generation )
Test Bench UUT testbench geração de estímulos avaliação de respostas referencial
Test Bench
Exemplo:
Geração de estímulos Origem dos estímulos: – formas de onda – de arquivos – de tabelas – aleatória – mista
Estímulos Tipo Forma de Onda process begin s <= 0 ; wait for 20 ns; s <= 1 ; wait for 10 ns; s <= 0 ; wait for 10 ns; s <= 1 ; wait for 20 ns; s <= 0 ; wait for 50 ns; s <= 1 ; wait for 10 ns; s <= 0 ; wait for 20 ns; s <= 1 ; wait for 10 ns; s <= 0 ; wait for 20 ns; s <= 1 ; wait for 40 ns; s <= 0 ; wait for 20 ns; end process;
Estímulos de Arquivos procedure ReadFile() is variable lineAux : line; file PatternFile : TEXT open READ_MODE is inputPattern.txt"; begin for i in 0 to nPolig-1 loop readline(PatternFile, lineAux); read(lineAux,value);... end loop; end procedure; Vantagem: simples implementação para padrões simples Desvantagem: difícil de implementar para padrões complexos aumenta tempo de simulação devido as chamadas de sistema
Estímulos de Tabela type vector is record LD : std_logic; LL : std_logic; RST : std_logic; D : std_logic_vector(7 downto 0); P : std_logic; end record; type vectorArrayType is array (0 to TABLE_SIZE) of vector; constant vectorTable : vectorArrayType := ( -- LD LL RST D P ( 0, 0, 0, xxxxxxxx 0), ( 0, 0, 1, xxxxxxxx 0), ( 1, 0, 0, ), ( 0, 1, 0, ), ( 0, 0, 0, xxxxxxxx 1),... ); Vantagem: menor tempo de simulação que estímulo de arquivo Desvantagem: aumenta tempo de compilação consome memória para muitos padrões
Test Bench - Verificação
Exemplo:
Práticas Básicas Convenções de nomes (sinais, entidades, arquivos, etc) Incluir headers nos fontes – descrição (func, autor, versão, etc) – formato e temp. de entrada e saída – histórico Comentários (inglês) Indentação Instanciação (associação por nomes) Uma linha por comando/declaração Usar tipos baseados nos tipos padrões IEEE – std_logic, std_ulogic Não usar valores fixos na descrição – use generic ou constant DISCIPLINA !!!