Soluções do capítulo 5

Exercício 5.6.7


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ENTITY c04_e04 IScapa_1ra
  PORT (ck, d  : IN  BIT;
        q1, q2 : OUT BIT);                    
END c04_e04;

ARCHITECTURE teste OF c04_e04 IS
BEGIN
  p_d1: PROCESS
  BEGIN
    WAIT UNTIL ck'EVENT AND ck = '1';
    q1 <= d;
  END PROCESS;
 
  p_d2: PROCESS
  BEGIN
    WAIT UNTIL ck'EVENT AND ck = '0';
    q2 <= d;
  END PROCESS;
END teste;


Exercício 5.6.10

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
ENTITY atr_usua5 IScapa_1ra
  PORT (clk,     rst,     set     : IN  BIT; -- sinais intenos
        clk_sai, rst_sai, set_sai : OUT BIT); -- sinais de saida

 
  -- atributo: tempo de propagacao de nivel baixo para nivel alto
  -- declaracao do atributo: tempo_lh
  ATTRIBUTE tempo_lh : TIME;
  -- especif. do valor do atributo de clk_sai                                  
  ATTRIBUTE tempo_lh OF clk_sai : SIGNAL IS 20 ns;
  -- especif. do valor do atributo dos itens restantes imediatamente decl.: clk, rst, set, rst_sai e set_sai
  ATTRIBUTE tempo_lh OF OTHERS  : SIGNAL IS 30 ns;                                                  
 
  -- atributo: tempo de subida de nivel alto para nivel baixo
   -- declaracao do atributo: tempo_hl      
  ATTRIBUTE tempo_hl : TIME;
  -- especif. do valor do atributo de todos itens imediatamente decl.: clk, rst, set, clk_sai, rst_sai e set_sai         
  ATTRIBUTE tempo_hl OF ALL : SIGNAL IS 10 ns;  
END atr_usua5;

ARCHITECTURE teste OF atr_usua5 IS
BEGIN                             --    (_____/------  subida de clk)
  clk_sai <= clk AFTER clk_sai'tempo_lh WHEN(clk'EVENT AND clk = '1') ELSE
             clk AFTER clk_sai'tempo_hl;
                                  --    (_____/------  subida de rst)
  rst_sai <= rst AFTER rst_sai'tempo_lh WHEN(rst'EVENT AND rst = '1') ELSE
             rst AFTER rst_sai'tempo_hl;
                                  --    (_____/------  subida de set)
  set_sai <= set AFTER set_sai'tempo_lh WHEN(set'EVENT AND set = '1') ELSE
             set AFTER set_sai'tempo_hl;               
END teste;