Soluções do capítulo 14

Exercício 14.6.1


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
32
33
34
LIBRARY ieee;capa_1ra
USE ieee.std_logic_1164.ALL;
USE STD.TEXTIO.ALL;

ENTITY asser_2 IS
  PORT (d : IN std_logic_vector(3 DOWNTO 0));   
END asser_2;

ARCHITECTURE teste OF asser_2 IS

FUNCTION para_string(d_std : std_logic_vector) RETURN string IS
  VARIABLE d_stg : string(d_std'LENGTH DOWNTO 1); -- acumula dados da iteracao
 
  TYPE std_para_caracter IS ARRAY(STD_LOGIC) OF CHARACTER; -- vetor com tipos character, indice tipo std_logic
                                                           -- limites do vetor 'U' TO '-'
  CONSTANT tabela : std_para_caracter :=                   -- tabela de conversao
  ('-' =>'-', 'Z'=>'Z', 'W' =>'W', 'L'=>'L', 'H' =>'H', '0'=>'0', '1'=>'1','U' =>'U', 'X'=>'X');
 
BEGIN
  -- d_std:  n-1     ...    0                        retorna: d_stg  n     ...     1
  --         |-|H|L|...|U|1|X| std_logic_vector                     |-|H|L|...|U|1|X| string
  FOR i IN 0 TO d_std'LENGTH-1 LOOP  -- valido para mesma ordem
  d_stg(i+1) := tabela(d_std(i));    -- leitura do valor na tabela, tipo_character <= tabela(tipo_std_logic)   
  END LOOP;  
  RETURN d_stg;
END;

BEGIN
  verifica: PROCESS
  BEGIN
    ASSERT FALSE REPORT "Dado convertido: " & para_string(d) SEVERITY NOTE;
    WAIT UNTIL d'ACTIVE;
  END PROCESS;
END teste;


Exercício 14.6.3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-- arquivo conf_e2.vhdcapa_1ra

-- Configuracao da entidade de projeto "xor_3" - "arquivo conf_e1.vhd"
CONFIGURATION ver_77 OF xor_3 IS
  FOR alta                       --{1} FOR nome_arquitetura
    FOR m1: local_xor_2          --{2} FOR identificador_componenete : nome_componente
      USE ENTITY WORK.xor_2;     --     definicao do elo do componente "m1"
      FOR media                  --{3} FOR configuracao_bloco_do_componente       
        FOR u1 : local_xor_1     --{4} FOR identificador_componenete : nome_componente
          USE ENTITY WORK.xor_1; --     definicao do elo do componete "u1", interno de "m1"
        END FOR;                 --    fim configuracao componente de "m1"         {4}
        FOR u2 : local_xor_1     --{5} FOR identificador_componenete : nome_componente
          USE ENTITY WORK.xor_1; --     definicao do elo componete "u2", interno de "m1"
        END FOR;                 --    fim configuracao componente de  "m1"         {5}
      END FOR;                   --    fim configuracao bloco interno ao componente {3}
    END FOR;                     --    fim configuracao componente "m1"             {2}

  END FOR;                       --    fim arquitetura "alta" de "xor_3"            {1}
END ver_77;