Exercício 12.10.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 |
LIBRARY ieee;![]() USE ieee.std_logic_1164.ALL; USE ieee.numeric_std.ALL; ENTITY memor_4 IS PORT (ce, wr : IN BIT; endereco : IN UNSIGNED (3 DOWNTO 0); dado : INOUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END memor_4; ARCHITECTURE teste OF memor_4 IS TYPE matriz_dados IS ARRAY (0 TO 2**endereco'LENGTH-1) OF STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL memoria : matriz_dados; BEGIN mem: PROCESS (ce, wr) BEGIN IF ce'EVENT AND ce ='1' THEN IF wr = '0' THEN memoria(to_integer(endereco)) <= dado; -- escrita do dado END IF; END IF; END PROCESS mem; tri: PROCESS (ce, wr, endereco) BEGIN IF ce ='0' AND wr ='1' THEN dado <= memoria(to_integer(endereco)); -- leitura do dado ELSE dado <= (OTHERS => 'Z'); END IF; END PROCESS tri; END teste; |
|
|
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 |
ENTITY rec_tes IS![]() END rec_tes; ARCHITECTURE teste OF rec_tes IS TYPE instante IS RECORD hora : INTEGER RANGE 0 TO 23; minuto : INTEGER RANGE 0 TO 59; segundo : INTEGER RANGE 0 TO 59; END RECORD; CONSTANT inicio_operacao : instante := (7,30,00); -- exemplo vide linha 29 SIGNAL temp_opr : instante; BEGIN abc: PROCESS VARIABLE tempo : instante; BEGIN WAIT FOR 1 sec; IF tempo.segundo < 59 THEN tempo.segundo := tempo.segundo +1; ELSE tempo.segundo := 0; IF tempo.minuto < 59 THEN tempo.minuto := tempo.minuto +1; ELSE tempo.minuto := 0; IF tempo.hora < 23 THEN tempo.hora := tempo.hora +1; ELSE tempo.hora := 0; END IF; END IF; END IF; temp_opr <= tempo; END PROCESS; --temp_opr <= inicio_operacao; -- exemplo END teste; |