VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais O Comando Generic 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 Operadores de Deslocamento Operadores de Deslocamento sll Multiplicação por 2 srl Divisão por 2 sla sra rll rrl Atribuição de Sinais Atraso Inercial Tempo mínimo que um pulso deve durar para que seja aceito por um circuito. Atraso de Transmissão Atraso no transporte de um sinal. Isto é modelado em VHDL como segue: 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. Comandos Sequenciais 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. Comandos Sequenciais Lista de Sensibilidade em Processos 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. Comandos Sequenciais Lista de Sensibilidade em Processos Comandos Sequenciais Execução Sequencial Execução Conjunta . . . comando abc: PROCESS Comando xyz: PROCESS comando . . . abc: PROCESS BEGIN comando 1 comando 2 . . . comando n END PROCESS abc; Execução Sequencial xyz: PROCESS BEGIN comando 1 comando 2 . . . comando m END PROCESS xyz; Comandos Sequenciais Exemplo: 1 2 3 4 5 6 7 8 9 10 11 12 13 | ENTITY sens_tes | PORT( a, b | sa, sb | END sens_tes; | | ARCHITECTURE | BEGIN | abc: PROCESS (a) | BEGIN | sa <= a; | sb<=b; | END PROCESS abc; | END teste; IS : : IN OUT teste OF BIT; BIT); sens_tes IS -- executado na alteração do valor de “a” 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. Comandos Sequenciais Comandos Sequenciais Comandos Sequenciais Comandos Sequenciais 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. 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 condição_booleana FOR WAIT ON sig_a, sig_b; WAIT UNTIL sig_c = ‘1’; WAIT FOR 100 ns; WAIT ON sig_d=‘0’ booleana por período de tempo UNTIL expressão_de _tempo; -- Lista de sensibilidade -- Condição booleana -- Expressão de tempo FOR 50 ns; -- Condição