vhdl linguagem de descrição e síntese de circuitos digitais sistemas digitais

74
VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Upload: internet

Post on 17-Apr-2015

182 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

VHDLLinguagem de Descrição e

Síntese de Circuitos Digitais

Sistemas Digitais

Page 2: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

O Comando Generic

Page 3: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

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

Page 4: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

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

Page 5: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Operadores de Deslocamento

Page 6: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Operadores de Deslocamento

sll

srl

sla

sra

rll

rrl

Multiplicação por 2

Divisão por 2

Page 7: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Atribuição de Sinais

Page 8: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Atraso InercialTempo mínimo que um pulso deve durar para que seja aceito por um circuito.

Page 9: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Atraso de TransmissãoAtraso no transporte de um sinal. Isto é modelado em VHDL como segue:

Page 10: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Comandos SequenciaisComandos 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.

Page 11: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Comandos SequenciaisLista 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.

Page 12: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Comandos SequenciaisLista 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.

Page 13: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Comandos SequenciaisLista de Sensibilidade em Processos

Page 14: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Comandos Sequenciais

Execução Conjunta abc: PROCESSBEGIN comando 1 comando 2 . . . comando nEND PROCESS abc;

. . . comandoabc: PROCESSComandoxyz: PROCESScomando . . .

xyz: PROCESSBEGIN comando 1 comando 2 . . . comando mEND PROCESS xyz;

Execução Sequencial

Execução Sequencial

Page 15: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Comandos SequenciaisExemplo:

1 | ENTITY sens_tes IS2 | PORT( a, b : IN BIT;3 | sa, sb : OUT BIT);4 | END sens_tes;5 |6 | ARCHITECTURE teste OF sens_tes IS7 | BEGIN8| abc: PROCESS (a) -- executado na alteração do valor de “a”9| BEGIN10| sa <= a;11| sb<=b;12| END PROCESS abc;13 | END teste;

A linha 10 descreve uma parte combinacionalA 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.

Page 16: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Comandos Sequenciais

Page 17: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Comandos Sequenciais

Page 18: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Comandos Sequenciais

Page 19: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Comandos Sequenciais

Page 20: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Comandos SequenciaisO 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.

Page 21: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Comandos SequenciaisO 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 sensibilidadeWAIT UNTIL sig_c = ‘1’; -- Condição booleanaWAIT FOR 100 ns; -- Expressão de tempoWAIT ON sig_d=‘0’ FOR 50 ns; -- Condição booleana por período de tempo

Page 22: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Estratégias de Descrição de Circuitos Síncronos

Page 23: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Estratégias de Descrição de Circuitos Síncronos

Registrador Sensível a Nível com Reset e Set Assíncronos

Page 24: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Estratégias de Descrição de Circuitos Síncronos

reset síncronoprocess(clk)begin

if clk’event and clk = ‘1’ thenif rst = ‘1’ then...else...end if;

end if;end process;

reset assíncronoprocess(clk,rst)begin

if rst = ‘1’ then...

elsif clk’event and clk = ‘1’ then...

end if;end process;

Page 25: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Estratégias de Descrição de Circuitos Síncronos

Page 26: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Estratégias de Descrição de Circuitos Síncronos

Page 27: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Estratégias de Descrição de Circuitos Síncronos

Page 28: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Estratégias de Descrição de Circuitos Síncronos

Page 29: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Estratégias de Descrição de Circuitos Síncronos

Page 30: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Estratégias de Descrição de Circuitos Síncronos

Page 31: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Estratégias de Descrição de Circuitos Síncronos

Page 32: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Estratégias de Descrição de Circuitos Síncronos

Page 33: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Estratégias de Descrição de Circuitos Síncronos

Page 34: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Arquiteturas Multiprocesso

Page 35: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Arquiteturas Multiprocesso

Page 36: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Arquiteturas MultiprocessoProcesso Simplificado

Page 37: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Drivers e Atribuição de Sinais

Page 38: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Drivers e Atribuição de Sinais

Page 39: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Drivers e Atribuição de Sinais

Page 40: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Drivers e Atribuição de Sinais

Page 41: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Sinais com mais de um Driver

Page 42: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Sinais com mais de um Driver

Page 43: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Sinais com mais de um Driver

Page 44: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Sinais com mais de um DriverResolution Function

Valores esperados, porém não são resolvidos!

Page 45: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Sinais com mais de um DriverResolution Function

Page 46: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Especificação da Estrutura do Sistema

Page 47: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Especificação da Estrutura do Sistema

Page 48: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Especificação da Estrutura do Sistema

Page 49: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Especificação da Estrutura do Sistema

Page 50: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Especificação da Estrutura do Sistema

Page 51: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Especificação da Estrutura do Sistema

Page 52: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Especificação da Estrutura do SistemaInstanciação Direta

Page 53: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Especificação da Estrutura do SistemaInstanciação Direta

Page 54: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Especificação da Estrutura do SistemaInstanciação Direta

Page 55: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Especificação da Estrutura do SistemaComponentes

Page 56: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Especificação da Estrutura do SistemaComponentes

Page 57: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Especificação da Estrutura do SistemaComponentes

Page 58: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Especificação da Estrutura do SistemaComponentes

Page 59: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Algumas Práticas que Devem ser Evitadas

Maus exemplos:process (a,b)begin

if (a = ‘1’) thenq <= b;

end if;end process;

process(c)begin

case c iswhen ‘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;

Page 60: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

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 )

Page 61: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Test Bench

UUT

testbench

geração de estímulos

avaliação de respostas

referencial

Page 62: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Test Bench

Page 63: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Test Bench

Page 64: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Test Bench

Page 65: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Test Bench

Page 66: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Test Bench

Page 67: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Test BenchExemplo:

Page 68: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Geração de estímulos

• Origem dos estímulos:– formas de onda– de arquivos– de tabelas– aleatória– mista

Page 69: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Estímulos Tipo Forma de Ondaprocessbegin

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;

Page 70: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

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

Page 71: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Estímulos de Tabelatype 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’),( ‘0’, ‘0’, ‘1’, “xxxxxxxx” ‘0’),( ‘1’, ‘0’, ‘0’, “00000101” ‘0’),( ‘0’, ‘1’, ‘0’, “11010100” ‘0’),( ‘0’, ‘0’, ‘0’, “xxxxxxxx” ‘1’),( ‘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

Page 72: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Test Bench - Verificação

Page 73: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

Test Bench - VerificaçãoExemplo:

Page 74: VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais

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 !!!