Soluções do capítulo 6

Exercício 6.12.3


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ENTITY ttl_298 IScapa_1ra
  PORT (da, db   :  IN  BIT_VECTOR(3 DOWNTO 0);    -- dados
        sel, ck  :  IN  BIT;                       -- selecao, relogio               
        q        :  OUT BIT_VECTOR(3 DOWNTO 0));   -- saidas
END ttl_298;

ARCHITECTURE teste OF ttl_298 IS

BEGIN

  abc: PROCESS (ck)
   BEGIN
    IF ck'EVENT AND ck ='0' THEN
      IF sel = '1' THEN q <= da; -- armazena via entrada da
      ELSE              q <= db; -- armazena via entrada db
      END IF;
    END IF;
  END PROCESS abc;

END teste;

Exercício 6.12.7

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
ENTITY ttl_166 IScapa_1ra
  PORT (ck       :  IN  BIT;                      -- clock borda subida
        ld_l     :  IN  BIT;                      -- carrega dados sincrono
        rst_l    :  IN  BIT;                      -- reset assincrono
        ce_l     :  IN  BIT;                      -- habilita ck
        d        :  IN  BIT_VECTOR (7 DOWNTO 0);  -- entrada dados paralela
        ds       :  IN  BIT;                      -- entrada dados serial
        q7       :  OUT BIT);                     -- saida
END ttl_166;

ARCHITECTURE teste OF ttl_166 IS

BEGIN
  abc: PROCESS (ck, rst_l)
  VARIABLE q_v             : BIT_VECTOR (7 DOWNTO 0);
  BEGIN
    IF    (rst_l = '0')          THEN   -- reset assincrono
      q_v := "00000000";
    ELSIF (ck'EVENT AND ck ='1') THEN   -- borda subida ck
      IF ce_l = '0' THEN                -- ck habilitado
        IF ld_l = '0' THEN              -- carrega dados
          q_v := d;
        ELSE                            -- desloca dados
          q_v(7 DOWNTO 0) := q_v(6 DOWNTO 0) & ds;
        END IF;
      END IF;
    q7 <= q_v(7);
    END IF;
 END PROCESS abc;

END teste;