Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouTheo Amado Alterado mais de 10 anos atrás
1
VHDL Linguagem de Descrição e Síntese de Circuitos Digitais
Sistemas Digitais
2
O Comando Generic
3
Vetores Definidos Pelo Usuário
Vetores predefinidos são unidimensionais As vezes necessita-se de vetores com dimensões maiores Exemplo: memórias São necessárias duas dimensões para especificar uma memória Número de posições e número de bits Descrição de uma memória de 2kbytes de 8 bits
4
Vetores Definidos Pelo Usuário
Vetores predefinidos são unidimensionais As vezes necessita-se de vetores com dimensões maiores Exemplo: memórias São necessárias duas dimensões para especificar uma memória Número de posições e número de bits Descrição de uma memória de 2kbytes de 8 bits
5
Operadores de Deslocamento
6
Operadores de Deslocamento
sll Multiplicação por 2 srl Divisão por 2 sla sra rll rrl
7
Atribuição de Sinais
8
Atraso Inercial Tempo mínimo que um pulso deve durar para que seja aceito por um circuito.
9
Atraso de Transmissão Atraso no transporte de um sinal. Isto é modelado em VHDL como segue:
10
Comandos Sequenciais Comandos sequenciais ficam contidos em regiões específicas de código como processos ou subprogramas. Uma vez iniciada a execução de comandos em região de código sequencial, os comandos são avaliados na sequência em que são apresentados no código. Veremos a aplicação dos comandos sequenciais IF, CASE e WAIT. Veremos também o modo de operação de um processo e a lista de sensibilidade, além da atribuição de valores a sinais nas regiões de código sequencial.
11
Comandos Sequenciais Lista de Sensibilidade em Processos
Um processo define uma área contendo comandos sequenciais. A palavra reservada PROCESS identifica o comando. O processo é um comando concorrente. Um processo é composto de duas regiões: parte de declaração, e parte de comandos sequenciais. A primeira região é o local para declaração de tipos e subtipos, constantes, variáveis, entre outros. A declaração de sinais não é permitida. A segunda região encontra-se entre as palavras reservadas BEGIN e END.
12
Comandos Sequenciais Lista de Sensibilidade em Processos
Ela contém comandos sequenciais que representam o comportamento de uma parte ou de toda a descrição. A palavra reservada PROCESS pode ser antecedida de um rótulo qualquer, e ser seguida de uma lista de sensibilidade. A lista define para quais sinais que o conjunto de comandos contidos no processo sensível. Isto é, a ocorrência de uma mudança no valor de um dos sinais da lista fará com que o processo seja executado.
13
Comandos Sequenciais Lista de Sensibilidade em Processos
14
Comandos Sequenciais Execução Sequencial abc: PROCESS
BEGIN comando 1 comando 2 . comando n END PROCESS abc; Execução Conjunta . comando abc: PROCESS Comando xyz: PROCESS Execução Sequencial xyz: PROCESS BEGIN comando 1 comando 2 . comando m END PROCESS xyz;
15
Comandos Sequenciais Exemplo:
1 | ENTITY sens_tes IS 2 | PORT( a, b : IN BIT; 3 | sa, sb : OUT BIT); 4 | END sens_tes; 5 | 6 | ARCHITECTURE teste OF sens_tes IS 7 | BEGIN | abc: PROCESS (a) executado na alteração do valor de “a” | BEGIN | sa <= a; | sb<=b; | END PROCESS abc; 13 | END teste; A linha 10 descreve uma parte combinacional A linha 11 descreve um elemento de armazenamento de valor sensível à variação da entrada “a” O circuito é não sintetizável, pois o elemento de memória descrito é ativo tanto na borda de subida quanto de descida de “a”, não havendo uma correspondência com circuitos reais. As ferramentas de síntese não inferem a necessidade de um elemento de memória devido à ausência de um sinal na lista de sensibilidade. Uma mensagem de advertência pode ser gerado.
16
Comandos Sequenciais
17
Comandos Sequenciais
18
Comandos Sequenciais
19
Comandos Sequenciais
20
Comandos Sequenciais O Comando WAIT
Suspende a execução de um processo. A suspensão pode ser condicionada a três clausulas, ou a uma combinação delas: WAIT ON: fornece um mecanismo equivalente à lista de sensibilidade em um processo. Neste caso, após o comando WAIT ON, o processo fica suspenso até a alteração de valor em um dos sinais da lista. WAIT UNTIL: o processo é suspenso enquanto a expressão booleana contida no comando não for satisfeita WAIT FOR: o processo é suspenso por um período de tempo, reiniciando no comando seguinte, após o período de tempo definido.
21
Comandos Sequenciais O Comando WAIT WAIT ON lista_de_sensibilidade;
WAIT UNTIL expressão_booleana; WAIT FOR expressão_de_tempo; WAIT ON lista _de_sensibilidade UNTIL condição_booleana FOR expressão_de _tempo; WAIT ON sig_a, sig_b; -- Lista de sensibilidade WAIT UNTIL sig_c = ‘1’; -- Condição booleana WAIT FOR 100 ns; -- Expressão de tempo WAIT ON sig_d=‘0’ FOR 50 ns; -- Condição booleana por período de tempo
22
Estratégias de Descrição de Circuitos Síncronos
23
Estratégias de Descrição de Circuitos Síncronos
Registrador Sensível a Nível com Reset e Set Assíncronos
24
Estratégias de Descrição de Circuitos Síncronos
reset síncrono process(clk) begin if clk’event and clk = ‘1’ then if rst = ‘1’ then ... else end if; end process; reset assíncrono process(clk,rst) begin if rst = ‘1’ then ... elsif clk’event and clk = ‘1’ then end if; end process;
25
Estratégias de Descrição de Circuitos Síncronos
26
Estratégias de Descrição de Circuitos Síncronos
27
Estratégias de Descrição de Circuitos Síncronos
28
Estratégias de Descrição de Circuitos Síncronos
29
Estratégias de Descrição de Circuitos Síncronos
30
Estratégias de Descrição de Circuitos Síncronos
31
Estratégias de Descrição de Circuitos Síncronos
32
Estratégias de Descrição de Circuitos Síncronos
33
Estratégias de Descrição de Circuitos Síncronos
34
Arquiteturas Multiprocesso
35
Arquiteturas Multiprocesso
36
Arquiteturas Multiprocesso
Processo Simplificado
37
Drivers e Atribuição de Sinais
38
Drivers e Atribuição de Sinais
39
Drivers e Atribuição de Sinais
40
Drivers e Atribuição de Sinais
41
Sinais com mais de um Driver
42
Sinais com mais de um Driver
43
Sinais com mais de um Driver
44
Sinais com mais de um Driver
Resolution Function Valores esperados, porém não são resolvidos!
45
Sinais com mais de um Driver
Resolution Function
46
Especificação da Estrutura do Sistema
47
Especificação da Estrutura do Sistema
48
Especificação da Estrutura do Sistema
49
Especificação da Estrutura do Sistema
50
Especificação da Estrutura do Sistema
51
Especificação da Estrutura do Sistema
52
Especificação da Estrutura do Sistema
Instanciação Direta
53
Especificação da Estrutura do Sistema
Instanciação Direta
54
Especificação da Estrutura do Sistema
Instanciação Direta
55
Especificação da Estrutura do Sistema
Componentes
56
Especificação da Estrutura do Sistema
Componentes
57
Especificação da Estrutura do Sistema
Componentes
58
Especificação da Estrutura do Sistema
Componentes
59
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) case c is when ‘0’ => q <= ‘1’; z <= ‘0’; when others => q <= ‘0’; end case; 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;
60
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 )
61
Test Bench testbench UUT geração de estímulos avaliação de respostas
referencial
62
Test Bench
63
Test Bench
64
Test Bench
65
Test Bench
66
Test Bench
67
Test Bench Exemplo:
68
Geração de estímulos Origem dos estímulos: formas de onda de arquivos
de tabelas aleatória mista
69
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 40 ns; end process;
70
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
71
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’), ( ‘0’, ‘1’, ‘0’, “ ” ‘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
72
Test Bench - Verificação
73
Test Bench - Verificação
Exemplo:
74
DISCIPLINA !!! 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 !!!
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.