Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Estadual de Campinas Faculdade de Tecnologia TT-411 Circuitos Digitais 2 Wellington Renan Gonçalves Relatório 7 Aula 7 Estratégias de Descrição de Circuitos Síncronos Introdução à Apostila 5 Atividades de laboratório 1. Fazer a descrição de um código VHDL que implemente a máquina de estado do ThunderBird68. O código implementado para a executação da seta do ThunderBird68 é apresentado logo abaixo: O código descrito acima é um modelo para a máquina de estados do thunderbird68. Foi declarada a entrada ck que no modelo faz com que o processo seja executado em bordas de súbida, as entradas s1 e s0 que fazem a seleção entre direita e esqueda, e a saída at que representa o conjunto das lâmpadas. Quando s1&s0 = “01” DIREITA Quando s1&s0 = “10” ESQUERDA 2- Executar os códigos propostos em aula e descrever o seu funcionamento. ENTITY maq_est2 IS PORT (ck : IN BIT; -- relogio borda subida sobe : IN BIT; -- sobe=1, q=00,01,11,10,00... iniciar : IN BIT; -- iniciar=1, q=00 q : OUT BIT_VECTOR (1 DOWNTO 0)); -- saida END maq_est2; ARCHITECTURE teste OF maq_est2 IS -- q=2 q=3 q=1 q=0 TYPE st IS (caso_d, caso_c, caso_b, caso_a); -- novo tipo definido SIGNAL estado : st; -- sinal estado tipo "st" BEGIN abc: PROCESS (ck, iniciar) BEGIN IF iniciar = '1' THEN -- estado inicial estado <= caso_a; -- q=0 ELSIF (ck'EVENT and ck ='1') THEN -- ciclo de estados CASE estado IS WHEN caso_a => -- q=0 IF sobe = '1' THEN estado <= caso_b; -- q=1 ELSE estado <= caso_d; -- q=2 END IF; WHEN caso_b => -- q=1 IF sobe = '1' THEN estado <= caso_c; -- q=3 ELSE estado <= caso_a; -- q=0 END IF; WHEN caso_c => -- q=3 IF sobe = '1' THEN estado <= caso_d; -- q=2 ELSE estado <= caso_b; -- q=1 END IF; WHEN caso_d => -- q=2 IF sobe = '1' THEN estado <= caso_a; -- q=0 ELSE estado <= caso_c; -- q=3 END IF; END CASE; END IF; END PROCESS abc; WITH estado SELECT -- decodifica estado q <= "00" WHEN caso_a, -- q=0 "01" WHEN caso_b, -- q=1 "11" WHEN caso_c, -- q=3 "10" WHEN caso_d; -- q=2 END teste; O código descrito acima também uma máquina de estado, um caso mais geral, em que o valor assumido pelo estágio atual não corresponde diretamente o valor da saída; ele é codificado a partir do estado atual. SOBE = 0 SOBE = 1 ENTITY cnt_dec2 IS PORT (ck : IN BIT; -- relogio ld : IN BIT; -- carrega dados sincrono rst : IN BIT; -- rst=1 leva q=0000 assincrono d : IN INTEGER RANGE 15 DOWNTO 0; q : OUT INTEGER RANGE 15 DOWNTO 0); END cnt_dec2; ARCHITECTURE teste OF cnt_dec2 IS BEGIN abc: PROCESS (ck, rst) VARIABLE qv : INTEGER RANGE 15 DOWNTO 0; BEGIN IF (rst = '1') THEN -- q=0000 independente de ck qv := 0; ELSIF (ck'EVENT AND ck = '1') THEN -- condicao do sinal relogio IF (ld = '1') THEN qv := d; -- carrega dados ELSE IF qv >= 9 THEN qv := 0; -- retorna a zero ELSE qv := qv +1; -- incrementa END IF; END IF; END IF; q <= qv; END PROCESS abc; END teste; O código descrito acima é um contador. O código foi descrito como uma máquina de estados em que o código de cada estado corresponde ao valor da contagem. O código reliza uma contagem entre os valores 0 e 9, com reset assíncrono e carga de dados paralela síncrona. A opreção de carga é controlada pelo sinal ld. 3- Apresente a descrição de registrador com 4 bits e duas entradas de 4 bits, da e db. O sinal de seleção sel define de qual entrada o dado será armazenado na borda de descida do sinal de relógio ck. A operação do circuito é similar ao registrador 74298 da família TTL. 4 – Apresente a descrição de um contador de 4 bits crescente / decrescente com a opção para carga de dados paralela e reset assíncrono. O contador deve contar entre os valores 0 a 11. A figura a seguir ilustra o contador. O terminal ld permite o armazenamento do dado d na borda de subida do sinal de relógio ck. O terminal crs define se a contagem é crescente ou descrescente, e rst executa uma operação de reset assíncrona. Os sinais d e q são do tipo INTEGER, e os sinais restantes do tipo BIT. Código Decrescente Código Crescente 5 – Apresente a descrição de um registrador de deslocamento equivalente ao circuito TTL 74166. O registrador contém 8 bits, possibilidade de carga paralela através das entradas d0 a d7 e uma entrada serial (terminal ds). O terminal rst_l leva a saída de todos os registradores ao nível lógico baixo de modo assíncrono. O terminal ld_l permite a carga dos dados presentes nas entradas de d0 a d7 na borda de subida do sinal ck. O terminal ce_l habilita as operações síncronas: deslocamento e carga paralela. A figura a seguir ilustra simplificadamente o componente e uma tabela contendo os modos de operação do registrador. Conclusão: Na aula foi dado continuação a Estratégias de Descriçao de Circuitos Síncronos. Na atividade 1 foi implementado, executado e simulado um código que simulasse a seta do ThunderBird68. Na atividade 2 foi implementado, executado e simulado os códigos propostos em aula, onde o primeiro simulava uma máquina de estado geral, e o segundo um contador descrito como uma máquina de estados. Na atividade 3 foi implementado o código de um registrador de 4 bits. Na atividade 4 foi implementado o código crescente/descrente de um contador de 4 bits. Na atividade 5 foi implementado um registrador de desclocamento equivalente ao circuitos TTL 74166. � EMBED PBrush ��� � EMBED PBrush ��� � EMBED PBrush ��� � EMBED PBrush ��� � EMBED PBrush ��� � EMBED PBrush ��� _1476899904/ole-[42, 4D, 5E, B8, 07, 00, 00, 00] _1476902676/ole-[42, 4D, 5E, B4, 05, 00, 00, 00] _1476903042/ole-[42, 4D, 56, 55, 09, 00, 00, 00] _1476903806/ole-[42, 4D, 9A, D9, 0A, 00, 00, 00] _1476900044/ole-[42, 4D, 76, E9, 14, 00, 00, 00] _1476899825/ole-[42, 4D, DE, 86, 17, 00, 00, 00]
Compartilhar