Baixe o app para aproveitar ainda mais
Prévia do material em texto
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aula Elaborado por: Prof. Dilmar M. Meira Laboratório de Sistemas Digitais Janeiro 2014 Página 1 Aula 6 Codificadores e decodificadores Codificadores e decodificadores na tecnologia TTL Exemplo de codificador: 74LS148 – Apresenta em sua saída de três bits (A1, A2 e A0) o código binário correspondente à entrada de dados (I0 a I7) que estiver ativada. As entradas de dados de maior número têm prioridade sobre as de menor número. Todas as entradas e todas as saídas são ativas em nível lógico baixo (L). Veja a seguir o diagrama em bloco (com a “pinagem”) e a tabela funcional do componente. Detalhes adicionais sobre componentes da família TTL podem ser vistos nas suas respectivas folhas de dados. L = nível lógico baixo H = nível lógico alto X = qualquer nível lógico EI, GS e EO podem ser utilizadas para expansão do codificador e têm a seguinte funcionalidade: EI – Enable Input: deve ser ativada para que a codificação aconteça EO – Enable Output: estará ativada sempre que EI estiver ativada e nenhuma das oito linhas de entrada estiver ativada. GS – Group Select: Indica que EI está ativada e pelo menos uma das oito linhas de entrada está ativada. PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aula Elaborado por: Prof. Dilmar M. Meira Laboratório de Sistemas Digitais Janeiro 2014 Página 2 Exemplo de decodificador: 74LS138 – Ativa uma de suas oito saídas (O0, O1, O2, O3, O4, O5, O6, O7), de acordo com o código binário presente em seus três bits de entrada de endereço (A0, A1, A2). O circuito dispõe de três entradas de habilitação (E, ou “Enable”), das quais duas são ativas em nível lógico baixo (L) e uma é ativa em nível lógico alto (H). Note que as entradas de endereço são ativas em nível lógico alto, enquanto que as saídas decodificadas são ativas em nível lógico baixo. Veja a seguir o diagrama em bloco (com a “pinagem”) e a tabela funcional do componente. Detalhes adicionais sobre componentes da família TTL podem ser vistos nas suas respectivas folhas de dados. PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aula Elaborado por: Prof. Dilmar M. Meira Laboratório de Sistemas Digitais Janeiro 2014 Página 3 VHDL: Tipo de dados std_logic Bit é adequado para uso em modelos abstratos, quando não se está interessado nos detalhes dos sinais elétricos do sistema digital. O tipo de dados std_logic foi concebido para ser usado quando, na representação dos sinais, deseja-se levar em conta suas propriedades elétricas. Valores possíveis de um sinal do tipo std_logic: ‘0’ : Forcing low ‘1’ : Forcing high ‘L’ : Weak low ‘H’ : Weak high ‘Z’ : High impedance ‘X’ : Forcing unknown ‘W’ : Weak unknown ‘ ‘ : Don’t care. Process Process é uma parte de um código VHDL cujos comandos são executados sequencialmente, a cada vez que um sinal de sua lista de sensibilidade muda de valor, ou a cada vez que as condições de um comando Wait são atendidas. A seguir são apresentados alguns exemplos de descrições de circuitos de codificadores e de decodificadores, na linguagem VHDL. PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aula Elaborado por: Prof. Dilmar M. Meira Laboratório de Sistemas Digitais Janeiro 2014 Página 4 -- Circuito 1: -- Codificador com prioridade, funcionalmente equivalente ao -- Circuito Integrado TTL 74LS148 -- Versão A library IEEE; use IEEE.std_logic_1164.all; entity LS74148A is port ( INPUT : in std_logic_vector(7 downto 0); EI : in std_logic; GS,EO : out std_logic; A : out std_logic_vector(2 downto 0) ); end LS74148A; architecture behavior of LS74148A is begin process ( EI,INPUT ) begin if ( EI = '1' ) then A <= O"7"; GS <= '1'; EO <= '1'; else if ( INPUT = X"FF" ) then A <= O"7"; GS <= '1'; EO <= '0'; else if ( INPUT(7) = '0' ) then A <= O"0"; elsif ( INPUT(6) = '0' ) then A <= O"1"; elsif ( INPUT(5) = '0' ) then A <= O"2"; elsif ( INPUT(4) = '0' ) then A <= O"3"; elsif ( INPUT(3) = '0' ) then A <= O"4"; elsif ( INPUT(2) = '0' ) then A <= O"5"; elsif ( INPUT(1) = '0' ) then A <= O"6"; else A <= O"7"; end if; GS <= '0'; EO <= '1'; end if; end if; end process; end behavior; PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aula Elaborado por: Prof. Dilmar M. Meira Laboratório de Sistemas Digitais Janeiro 2014 Página 5 -- Circuito 2: -- Codificador com prioridade, funcionalmente equivalente ao -- Circuito Integrado TTL 74LS148 -- Versão B library IEEE; use IEEE.std_logic_1164.all; entity LS74148B is port ( INPUT : in std_logic_vector(7 downto 0); EI : in std_logic; GS,EO : out std_logic; A : out std_logic_vector(2 downto 0) ); end LS74148B; architecture behavior of LS74148B is begin GS <= '1' when EI = '1' or INPUT = X"FF" else '0'; EO <= '1' when EI = '1' or INPUT /= X"FF" else '0'; process ( EI,INPUT ) begin if ( EI = '1' ) then A <= O"7"; elsif ( INPUT(7) = '0' ) then A <= O"0"; elsif ( INPUT(6) = '0' ) then A <= O"1"; elsif ( INPUT(5) = '0' ) then A <= O"2"; elsif ( INPUT(4) = '0' ) then A <= O"3"; elsif ( INPUT(3) = '0' ) then A <= O"4"; elsif ( INPUT(2) = '0' ) then A <= O"5"; elsif ( INPUT(1) = '0' ) then A <= O"6"; else A <= O"7"; end if; end process; end behavior; PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aula Elaborado por: Prof. Dilmar M. Meira Laboratório de Sistemas Digitais Janeiro 2014 Página 6 -- Circuito 3: -- Codificador simples, com prioridade entity CODIFICADOR is port ( INPUT : in bit_vector(7 downto 0); A : out integer range 0 to 7; VALIDO: out bit ); end CODIFICADOR; architecture SIMPLES of CODIFICADOR is begin A <= 7 when INPUT(7) = '1' else 6 when INPUT(6) = '1' else 5 when INPUT(5) = '1' else 4 when INPUT(4) = '1' else 3 when INPUT(3) = '1' else 2 when INPUT(2) = '1' else 1 when INPUT(1) = '1' else 0; VALIDO <= INPUT(7) or INPUT(6) or INPUT(5) or INPUT(4) or INPUT(3) or INPUT(2) or INPUT(1) or INPUT(0); end SIMPLES; PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas DigitaisGuia de Aula Elaborado por: Prof. Dilmar M. Meira Laboratório de Sistemas Digitais Janeiro 2014 Página 7 -- Circuito 4: -- Decodificador funcionalmente equivalente ao C.I. TTL 74LS138 -- Versão A Entity LS74138A is port ( a: in bit_vector(5 downto 0); y: out bit_vector(7 downto 0) ); end LS74138A; -- a(5), a(4) e a(3) são as entradas de habilitação. -- a(5) é ativa no nível alto, enquanto que a(4) e a(3) são ativas -- no nível baixo. -- a(2), a(1) e a(0) são as entradas de dados, em binário. -- Y(7) a y(0) são as saídas de dados decodificadas, ativas no nível baixo. Architecture simples of LS74138A is begin with a select y <= "11111110" when "100000", "11111101" when "100001", "11111011" when "100010", "11110111" when "100011", "11101111" when "100100", "11011111" when "100101", "10111111" when "100110", "01111111" when "100111", "11111111" when others; end simples; PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aula Elaborado por: Prof. Dilmar M. Meira Laboratório de Sistemas Digitais Janeiro 2014 Página 8 -- Circuito 5: -- Decodificador funcionalmente equivalente ao C.I. TTL 74LS138 -- Versão B Entity LS74138B is port ( A0, A1, A2, E1, E2, E3: in bit; y: out bit_vector(7 downto 0) ); end LS74138B; -- E1, E2, E3 são as entradas de habilitação. -- E3 é ativa no nível alto, enquanto que E1 e E2 são ativas no nível baixo. -- A0, A1 e A2 são as entradas de dados, em binário, onde A2 é o bit mais significativo. -- y(7) a y(0) são as saídas de dados decodificadas, ativas no nível baixo. Architecture equacoes of LS74138B is begin y(7) <= (E1 or E2 or not E3) or (not A0 or not A1 or not A2); y(6) <= (E1 or E2 or not E3) or ( A0 or not A1 or not A2); y(5) <= (E1 or E2 or not E3) or (not A0 or A1 or not A2); y(4) <= (E1 or E2 or not E3) or ( A0 or A1 or not A2); y(3) <= (E1 or E2 or not E3) or (not A0 or not A1 or A2); y(2) <= (E1 or E2 or not E3) or ( A0 or not A1 or A2); y(1) <= (E1 or E2 or not E3) or (not A0 or A1 or A2); y(0) <= (E1 or E2 or not E3) or ( A0 or A1 or A2); end equacoes; PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aula Elaborado por: Prof. Dilmar M. Meira Laboratório de Sistemas Digitais Janeiro 2014 Página 9 Experimento de Laboratório Cada grupo deverá implementar, no kit DE2, um codificador ou decodificador, conforme o seguinte critério: Grupo I: Circuito 1 Grupo II: Circuito 2 Grupo III: Circuito 5 Grupo IV: Circuito 4 Sequência do experimento: a) Se isso ainda não foi feito, crie, no diretório C:\ do Windows, uma pasta denominada dddhhmmGx, onde: ddd: Dia da semana em que ocorre a aula (seg, ter, qua, qui, sex, sab) hhmm: Horário de início da aula (0700, 0850, 1040, 1330, etc.) x: Número do grupo, conforme o número da bancada correspondente (I, II, III, IV) b) Usando o software Quartus II, crie um projeto (“project”) denominado cod_decod na pasta criada no item a. A entidade de mais alto nível de seu projeto deverá ter o mesmo nome da entidade (“entity”) do código VHDL. Escolha a família de dispositivos Cyclone II e o dispositivo EP2C35F672C6. c) Crie um novo arquivo de entrada de projeto (“design”) em VHDL (New Design Files VHDL file). Copie deste roteiro o código correspondente ao seu grupo e cole-o no arquivo criado. Edite se necessário. d) Salve o código no diretório de seu projeto (“Project”), com a extensão “.vhd” e o mesmo nome da entidade (“entity”) do seu código VHDL. Por exemplo, para o Circuito 1 o arquivo deverá ser salvo como “LS74148A.vhd”. e) Altere o nome da entidade de mais alto nível de seu projeto para o nome do arquivo VHDL que estiver sendo editado (com o arquivo aberto na tela, faça: Project Set as Top Level Entity). f) Compile seu “design” (Processing Start Compilation). Caso ocorram mensagens de erro, corrija-os editando seu “design” e compilando novamente, até que não ocorram mais erros. g) Leia cuidadosamente as mensagens de aviso (“Warning”), pois algumas dessas mensagens podem ser muito importantes. h) Caso ocorra o aviso: “Warning: The Reserve All Unused Pins setting has not been specified, and will default to 'As output driving ground'”, deve-se obrigatoriamente mudar para: “As input tri-stated”, para evitar o risco de causar danos ao kit DE2. (Assignments Device Device and Pin Options Unused Pins As input tri-stated OK OK). Compile novamente o “design”, assegurando-se de que o aviso não aparece mais. PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aula Elaborado por: Prof. Dilmar M. Meira Laboratório de Sistemas Digitais Janeiro 2014 Página 10 i) Os avisos “Warning: Feature LogicLock is only available with a valid subscription license. Please purchase a software subscription to gain full access to this feature” e “Warning: Found 5 output pins without output pin load capacitance assignment” não são importantes para nosso projeto. j) Quando o projeto foi criado, pode ser que tenha sido informado ao Quartus II que a entidade de mais alto nível era “cod_decod”. Posteriormente, o nome da entidade de maior nível foi alterado e a entidade “cod_decod” passou a não existir mais em nosso projeto. Se isso ocorreu, pode ocorrer o aviso “Warning: Ignored assignments for entity "cod_decod" -- entity does not exist in design”, que deverá ser desconsiderado. k) Se desejado, o Quartus II pode mostrar um diagrama do circuito que ele gerou a partir da descrição do circuito compilada, que corresponde à entidade de mais alto nível do projeto (Tools Netlist Viewers RTL Viewer). Esse diagrama poderá conter diversos símbolos de circuitos que ainda não foram estudados nesta disciplina, tais como multiplexadores. Conforme será visto em aulas seguintes, os multiplexadores são um tipo de circuitos “coringa”, que podem ser utilizados como peças na montagem de circuitos mais complexos l) Também poderá ser feita uma simulação do funcionamento do circuito, através da observação de formas de onda de saída geradas pelo Quartus II a partir das formas de onda de entrada desenhadas pelo projetista (New Verification/Debugging Files Vector Waveform Files). Com a prática, o usuário poderá tornar-se hábil na edição de formas de onda adequadas para a simulação de um circuito. m) Nos experimentos deste laboratório que envolvem FPGA, os circuitos utilizarão, como entradas e como saídas, os recursos físicos disponíveis no kit DE2 (chaves, botões, LEDs, displays, etc.). Deve-se lembrar que esses recursos já estão fisicamente conectados a pinos muito bem definidos do FPGA. Portanto, neste momento é indispensável decidir quais os recursos do kit DE2 serão usados na implementação. Como exemplo, na implementação de um codificador compatível com o C.I. TTL 74LS148 poderíamos decidir da seguinte forma: Entradas: INPUT[7] – INPUT[0]: SW7 – SW0 EI: SW17 Saídas: EO: LEDR[17] GS: LEDG[0] A[2] – A[0]: LEDR[2] – LEDR[0] n) As tabelas mostrando como os recursos do kit DE2 estão ligados aospinos do FPGA podem ser encontradas no documento DE2 User Manual. No exemplo, a entrada INPUT[7] deverá ser vinculada ao pino “PIN_C13” do FPGA, a entrada INPUT[6] deverá ser vinculada ao pino “PIN_AC13”, e assim por diante. PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aula Elaborado por: Prof. Dilmar M. Meira Laboratório de Sistemas Digitais Janeiro 2014 Página 11 o) Para vincular os “pinos” de entrada e de saída do projeto aos pinos físicos do FPGA: (Assignments Pins). Dar um clique duplo em “Location”, na linha correspondente a cada pino (“node”), e digitar o nome do pino correspondente no FPGA. Compile novamente o projeto. p) Configuração (“programação”) do kit DE2. 1. Certifique-se de que a chave RUN/PROG do kit DE2 esteja na posição RUN. Ligue a entrada “USB Blaster” do kit DE2 ao computador, utilizando para isso um cabo USB. Conecte o kit DE2 a uma fonte de energia 127V A.C. e ligue-o (botão vermelho). 2. O FPGA pode agora ser configurado, utilizando o módulo de programação do Quartus II (Tools Programmer) e selecionando o arquivo de configuração adequado, com a extensão “sof” (SRAM Object File). q) Concluída a configuração, o circuito desenvolvido já poderá ser utilizado. Trabalho para casa: a) Utilizando PLD, o ambiente Quartus II a e linguagem VHDL, projete e simule o funcionamento de um codificador decádico (ou seja, com dez linhas de entrada). Não é necessário fazer a implementação física do circuito no kit DE2. b) Utilizando PLD, o ambiente Quartus II a e linguagem VHDL, projete e simule o funcionamento de um decodificador para códigos BCD. Entradas inválidas não deverão ativar qualquer saída. Não é necessário fazer a implementação física do circuito no kit DE2.
Compartilhar