Baixe o app para aproveitar ainda mais
Prévia do material em texto
15 1 Prof. Ederson Cichaczewski Lógica Programável Aula 4 15 2 Conversa Inicial 15 3 Linguagem VHDL – Projeto de circuitos integrados 15 4 Tema 1 Unidade lógica e aritmética Tema 2 Circuitos codificadores e multiplexadores 15 5 Tema 3 Contadores em VHDL Tema 4 Registradores de deslocamento em VHDL Tema 5 Geradores de sinais em VHDL 15 6 A linguagem de descrição de hardware VHDL permite implementar qualquer circuito digital, sem mesmo se preocupar quais são as primitivas de base para configuração ou como conectá-las Após a síntese é possível ver como ficará o circuito final 15 7 Unidade lógica e aritmética 15 8 Realiza todas as operações lógicas e aritméticas de um sistema computacional As operações são realizadas de acordo com instruções provenientes da unidade de controle O dados utilizados nas operações são binários e provenientes da memória do sistema ULA 15 9 Exemplo básico de uma ULA de 1 bit, que realiza apenas 4 operações lógicas As entradas ‘d1’ e ‘d0’ definem a operação executada entre os bits das entradas ‘a’ e ‘b’. O resultado é apresentado na saída ‘s’ Fon te: D’ AM OR E, RO BE RT O. VH DL De scr içã o e Sí nte se de Cir cui tos Di git ais . 2ª ed. Ri o d e Jan eir o: LTC , 2 01 2. Ca pít ulo 7. Pg . 1 01 15 10 Em VHDL podem-se usar as estruturas IF ELSE e CASE WHEN com e sem aninhamento em uma codificação sequencial 15 11 Exemplos sem aninhamento: IF ELSE CASE WHEN 15 12 Exemplo de uma ULA que realiza 8 operações, entre lógicas e aritméticas 15 13 Na entrada, o barramento ‘opr' define a operação a ser realizada entre os dados ‘rs’ e ‘ss’, ‘ci’ é uma entrada de carry. A saída ‘ov’ significa overflow, ‘zr’ indica resultado nulo, e ‘ts’ o resultado da operação 15 14 Para os barramentos de dados de entrada e saída pode-se usar a definição de sinal com o padrão STD_LOGIC_VECTOR Observações sobre a codificação 15 15 O bit MSB da entrada de controle pode definir se a operação será lógica ou aritmética, e as operações em si são definidas pelos demais bits A estratégia de codificação concorrente também pode ser utilizada, por meio da estrutura WITH SELECT 15 16 Exemplo de ULA com barramento de dados de 8 bits, 8 operações lógicas e 8 operações aritméticas em código concorrente 15 17 15 18 Circuitos codificadores e multiplexadores 15 19 Um codificador monitora várias entradas, quando uma é ativada produz um código na saída Quando mais de uma entrada é ativada ao mesmo tempo, o codificador de prioridade ignora a entrada menos significativa Codificador de prioridade 15 20 Descrição VHDL com construção concorrente WHEN ELSE 15 21 É um dispositivo que atua comouma chave seletora para sinais digitais As entradas de seleção são usadas para especificar o canal de entrada que vai transferir os dados para a saída Multiplexador 15 22 Descrição VHDL de MUX com 4 bits usando construção concorrente WITH SELECT 15 23 Circuito usado para receber uma entrada no código BCD de 4 bits (D3, D2, D1, D0) e gerar 7 saídas (a, b, c, d, e, f, g) que acionam os segmentos de um display de LEDs Decodificador BCD para 7 segmentos 15 24 Tabela verdade para a configuração anodo comum Entrada D3 D2 D1 D0 Saída (segmentos) h g f e d c b a Dígito decimal 0000 11000000 0 0001 11111001 1 0010 10100100 2 0011 10110000 3 0100 10011001 4 0101 10010010 5 0110 10000010 6 0111 11111000 7 1000 10000000 8 1001 10010000 9 15 25 Descrição VHDL usando PROCESS 15 26 Contadores 15 27 Podem ser descritos como uma máquina de estados, em que o código de cada estado corresponde ao valor da contagem Não é necessário preocupar-se em como conectar flip-flops na descrição 15 28 É importante considerar algumas características Entrada de clock ativo por borda Entrada de reset assíncrona A saída é atualizada sincronamente à ocorrência de uma borda ativa (subida ou descida) no clock 15 29 Exemplo de um contador de 0 a 9 (4 bits) 15 30 Descrição VHDL usando PROCESS e estrutura sequencial IF ELSE 15 31 Este código adiciona uma entradaque controla a operação de cargade dados, chamada ‘ld’ (load) O incremento se dá poruma operação de soma A borda ativa é a de subida no clock Para armazenar o valor da contagemusa-se uma variável, ao invésde sinal, como registrador Caso ocorra um incremento acimade 9, a contagem vai para 0 15 32 Síntese: a ferramenta associa aprimitiva de um módulo contador conter_up_sload_sclear_aclear_clock4 15 33 Registradores de deslocamento 15 34 Realizam a transferência de dados, podendo realizar conversões de dados em formato serial e paralelo Em VHDL utilizam-se vetorespara descrever os dados O deslocamento de dados significaque cada bit é transferido para a posição imediatamente à direita nos índices do vetor O novo bit é armazenado na posiçãomais à esquerda, já o último bit naposição mais à direita é perdido 15 35 Processo de deslocamento de bits para a direita O novo bit entra na posição Q3 O bit da posição Q0 é perdido 15 36 Utiliza-se um vetor de bits como registrador O deslocamento se dá por uma operação de concatenação (&) Uma entrada chamada shift permite habilitar a operação de deslocamento, caso contrário, mantém-se na saída os dados atuais (que já estão guardados lá) Registrador de entrada serial/ saída serial (SISO) 15 37 Descrição VHDL do registrador SISO com PROCESS e estrutura sequencial IF 15 38 Este registrador possui entradas de controle distintas para: Carga (load) paralela Deslocamento (shift) serial Operação de concatenação usada para o deslocamento de bits Vetor de bits como registrador Registrador de entrada paralela/ saída serial (PISO) 15 39 Descrição VHDL do registrador PISO 15 40 Geradores de sinais 15 41 A partir de um sinal de clock podemos obter sinais com formatos específicos (arbitrários) e frequências diferentes Uma estratégia para implementação é utilizar máquina de estados A base para definir o formato do sinal arbitrário é um contador Pode-se implementar circuitos monoestáveis, que mantêm sua saída ativa por um tempo definido 15 42 Exemplo Máquina de 8 estados Contador de 0 a 7 Detecção da borda de subida do clock Sinal a ser gerado: Gerador de sinal arbitráriocom máquina de estados 15 43 Descrição VHDL do gerador 15 44 Gerador de sinal arbitrário sem máquina de estados, usando a construção CASE WHEN 15 45 Exemplo Contador de 0 a 7 Detecção da borda de subida do clock Resultado da simulação: 15 46 Descrição VHDL do gerador 15 47 Monoestável Um sinal de disparo (trigger) carrega um contador descrescente A saída fica em nível alto enquanto o contador não chega em zero Abordagem não redisparável 15 48 Descrição VHDL do monoestável 15 49 Simulação do monoestável A saída é ativada apenas na borda de subida do clock quando o trigger está ativado Eventos de trigger durante a contagem são ignorados 15 50 Referências 15 51 COSTA, C. Projetos de circuitos digitais com FPGA. 3. ed. São Paulo: Érica, 2014. cap. 3. D’AMORE, R. VHDL Descrição e síntese de circuitos digitais. 2. ed. Rio de Janeiro: LTC, 2012. cap. 3, 4, 6, 11. PEDRONI, V. A. Eletrônica digital moderna e VHDL. Rio de Janeiro: Elsevier, 2010. cap. 5, 9. TOCCI, R.; WIDMER, N. S. Sistemas Digitais –princípios e aplicações. 11. ed. São Paulo: Pearson, 2011. cap. 7, 9. 15 52
Compartilhar