Exercício 15.5.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 |
ENTITY forma_5e IS![]() PORT (s0, s1 : OUT BIT_VECTOR(1 DOWNTO 0); n0, n1 : OUT INTEGER); END forma_5e; ARCHITECTURE teste OF forma_5e IS TYPE sinais IS RECORD nt : INTEGER; dt : BIT_VECTOR(1 DOWNTO 0); END RECORD; TYPE conjunto_sinais IS ARRAY (natural RANGE <>) OF sinais; CONSTANT vet : conjunto_sinais := ((1,"01"),(3,"11"),(2,"10"),(0,"00")); BEGIN -- valor atribuido em: -- t=t+0ns t=t+20 ns t=t+50 ns t=t+100ns xyz: PROCESS BEGIN s0 <= vet(0).dt, vet(1).dt AFTER 20 ns, vet(2).dt AFTER 70 ns, vet(3).dt AFTER 100 ns; n0 <= vet(0).nt, vet(1).nt AFTER 20 ns, vet(2).nt AFTER 70 ns, vet(3).nt AFTER 100 ns; WAIT FOR 140 ns; -- tranferencias agendadas em t=t+0ns, e aguarda 140 ns para repetir ciclo END PROCESS; abc: PROCESS BEGIN -- iteracao ocorre na execucao da decl. WAIT s1 <= vet(0).dt; n1 <= vet(0).nt; WAIT FOR 20 ns; -- s1 =01, n1=1 em t+0ns, e aguarda 20ns s1 <= vet(1).dt; n1 <= vet(1).nt; WAIT FOR 50 ns; -- s1 =11, n1=3 em t+0+20ns, e aguarda 50ns s1 <= vet(2).dt; n1 <= vet(2).nt; WAIT FOR 30 ns; -- s1 =10, n1=2 em t+20+50ns, e aguarda 30ns s1 <= vet(3).dt; n1 <= vet(3).nt; WAIT FOR 0 ns; -- s1 =00, n1=0 em t+70+30ns, e aguarda 0 ns; WAIT FOR 40 ns; -- aguarda 30 ns, reiniciando em t+140ns; END PROCESS; 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 |
-- versao VHDL-1993![]() -- gera arquivo binario contendo os estimulos para o teste de tes_ex6 ENTITY tes_ex4 IS GENERIC(ini_a : INTEGER := 0; -- valor inicial do estimulo entrada a max_a : INTEGER := 15; -- valor final do estimulo entrada a ini_b : INTEGER := 0; -- valor inicial do estimulo entrada b max_b : INTEGER := 7; -- valor final do estimulo entrada b arquivo_dados : STRING := "dados.dat"); -- nome do aquivo de dados END tes_ex4; ARCHITECTURE teste OF tes_ex4 IS BEGIN escreve: PROCESS TYPE arq_int IS FILE OF INTEGER; FILE arquivo_wr : arq_int OPEN Write_Mode IS arquivo_dados; BEGIN FOR va IN ini_a TO max_a LOOP FOR vb IN ini_b TO max_b LOOP WRITE(arquivo_wr, va); WRITE(arquivo_wr, vb); END LOOP; END LOOP; FILE_CLOSE(arquivo_wr); WAIT; END PROCESS escreve; END teste; |