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 Segunda-feira, 27/01/2014 – 09h55min Página 1 Aula 15 Registradores de Deslocamento no Ambiente Quartus II Introdução e Objetivo O objetivo desta aula é aprender a projetar e implementar registradores de deslocamento e os dois tipos de contadores que podem ser construídos a partir deles: contadores em anel e contadores Johnson (ou contadores em anel torcido). PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aula Elaborado por: Prof. Dilmar M. Meira Segunda-feira, 27/01/2014 – 09h55min Página 2 Experimentos de Laboratório Crie uma pasta denominada A15dddhhmmGx, 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 sua bancada (I, II, III, IV) Usando o software Quartus II, crie um projeto (“project”) denominado aula_15 na pasta criada no item a. O nome da entidade de mais alto nível de seu projeto é automaticamente escolhido pelo Quartus II como “aula_15”, mesmo nome do projeto criado e poderá ser alterado sempre que necessário. Levando em consideração que o projeto será implementado fisicamente no kit Altera DE2, é obrigatório que se escolha, como alvo da compilação, a família de dispositivos Cyclone II e o dispositivo EP2C35F672C6. Siga os mesmos passos descritos no guia da Aula 9 para projetar os circuitos a seguir e implementá-los no kit Altera DE2. Após implementar cada circuito, comprove praticamente o seu adequado funcionamento. Para entradas dos circuitos escolha chaves e botões do kit DE2. Para as saídas, escolha LEDs verdes e/ou vermelhos. Lembre-se de que cada um dos quatro botões do kit DE2 (KEY[0], KEY[1], KEY[2] e KEY[3]) já possui um circuito para eliminação do efeito de trepidação (“bounce”). PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aula Elaborado por: Prof. Dilmar M. Meira Segunda-feira, 27/01/2014 – 09h55min Página 3 Experimento 1 Projete e implemente o registrador de deslocamento correspondente à seguinte descrição (em VHDL): library ieee; use ieee.std_logic_1164.all; ----------------------------------------------------- entity Reg_desloc is port (R : in std_logic_vector(7 downto 0); -- Entrada de dados paralela clock : in std_logic; L : in std_logic; -- Comando para entrada de dados paralela síncrona w : in std_logic; -- Entrada de dados serial Q : buffer std_logic_vector(7 downto 0)); end entity Reg_desloc; ----------------------------------------------------- architecture comportamento of Reg_desloc is begin process begin wait until clock'event and clock='1'; if L='0' then Q <= R; else Q(0) <= Q(1); Q(1) <= Q(2); Q(2) <= Q(3); Q(3) <= Q(4); Q(4) <= Q(5); Q(5) <= Q(6); Q(6) <= Q(7); Q(7) <= w; end if; end process; end comportamento; R[7..0] clock L w Q[7..0] Reg_desloc inst PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aula Elaborado por: Prof. Dilmar M. Meira Segunda-feira, 27/01/2014 – 09h55min Página 4 Modifique o projeto do Experimento 1 para obter um contador em anel. Em seguida, modifique- o para obter um contador Johnson. Observe os circuitos gerados pelo Quartus II e crie um símbolo para cada circuito. Experimento 2 -- Contador em Anel library ieee; use ieee.std_logic_1164.all; ----------------------------------------------------- entity Cont_anel is port (clock : in std_logic; Inic : in std_logic; -- Comando para inicialização do contador Q : buffer std_logic_vector(7 downto 0)); end entity Cont_anel; ----------------------------------------------------- architecture comportamento of Cont_anel is begin process variable temp: std_logic; begin wait until clock'event and clock='1'; if Inic='0' then Q <= "10000000"; else temp := Q(0); Q(0) <= Q(1); Q(1) <= Q(2); Q(2) <= Q(3); Q(3) <= Q(4); Q(4) <= Q(5); Q(5) <= Q(6); Q(6) <= Q(7); Q(7) <= temp; end if; end process; end comportamento; clock Inic Q[7..0] Cont_anel inst PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aula Elaborado por: Prof. Dilmar M. Meira Segunda-feira, 27/01/2014 – 09h55min Página 5 Experimento 3 -- Contador Johnson library ieee; use ieee.std_logic_1164.all; entity Cont_Johnson is port (clock : in std_logic; Inic : in std_logic; -- Comando para inicialização do contador Q : buffer std_logic_vector(7 downto 0)); end entity Cont_Johnson; architecture comportamento of Cont_Johnson is begin process variable temp: std_logic; begin wait until clock'event and clock='1'; if Inic='0' then Q <= "00000000"; else if Q(0)='1' then temp := '0'; else temp := '1'; end if; Q(0) <= Q(1); Q(1) <= Q(2); Q(2) <= Q(3); Q(3) <= Q(4); Q(4) <= Q(5); Q(5) <= Q(6); Q(6) <= Q(7); Q(7) <= temp; end if; end process; end comportamento; Para casa: Nos experimentos de laboratório, a entrada serial do contador de deslocamento contém apenas um bit. Combinando adequadamente quatro registradores de deslocamento de cinco bits cada um, construa um registrador de deslocamento cuja entrada serial seja uma palavra de quatro bits. Inclua um recurso para resetar o contador, armazenando o código hexadecimal “0” em cada uma de suas cinco posições. Efetue todas as etapas necessárias à construção do circuito no kit DE2. clock Inic Q[7..0] Cont_Johnson inst
Compartilhar