Exercício 7.6.3 |
|
1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
ENTITY som_e1 IS![]() PORT (a, b, ve : IN BIT; s, vs : OUT BIT); END som_e1; ARCHITECTURE teste OF som_e1 IS BEGIN s <= a XOR b XOR ve; -- soma vs <= (a AND b) OR (a AND ve) OR (b AND ve); -- vai um END teste; ENTITY som_e2 IS PORT ( x, y : IN BIT_VECTOR (3 DOWNTO 0); -- entradas do somador s : OUT BIT_VECTOR (3 DOWNTO 0)); -- soma END som_e2; ARCHITECTURE estrutural OF som_e2 IS COMPONENT som_e1 PORT (a, b, ve : IN BIT := '0'; s, vs : OUT BIT); END COMPONENT; SIGNAL v : BIT_VECTOR (3 DOWNTO 1); -- vai um interno BEGIN x0: som_e1 PORT MAP( x(0), y(0), OPEN, s(0), v(1)); x1: som_e1 PORT MAP( x(1), y(1), v(1), s(1), v(2)); x2: som_e1 PORT MAP( x(2), y(2), v(2), s(2), v(3)); x3: som_e1 PORT MAP( x(3), y(3), v(3), s(3), OPEN); END estrutural; |
|
|
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 |
ENTITY loop_n1 IS![]() GENERIC (n : INTEGER := 4); PORT (inteiro_e : IN INTEGER RANGE 0 TO 2**n-1; -- entrada inteiro bit_s : OUT BIT_VECTOR (n-1 DOWNTO 0)); -- saida convertida para bit_vector END loop_n1; ARCHITECTURE teste OF loop_n1 IS BEGIN abc_next: PROCESS (inteiro_e) VARIABLE temp_entrada : INTEGER RANGE 0 TO 2**n-1; VARIABLE temp_saida : BIT_VECTOR (n-1 DOWNTO 0); BEGIN temp_entrada := inteiro_e; loop_1: FOR i IN 0 TO n-1 LOOP IF (temp_entrada MOD 2 = 1) THEN temp_saida(i) := '1'; temp_entrada := temp_entrada /2; NEXT loop_1; ELSE temp_saida(i) := '0'; temp_entrada := temp_entrada /2; NEXT loop_1; END IF; END LOOP; bit_s <= temp_saida; END PROCESS; END teste; |