Exercício 13.4.2 |
|
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 35 36 37 |
-- versao VHDL-1993![]() -- ENTITY arqv_j IS GENERIC(n : INTEGER := 2); PORT(dado_lido : OUT STRING(1 TO n); tamanho : OUT NATURAL); -- END arqv_j; ARCHITECTURE teste OF arqv_j IS TYPE vetor_2d IS ARRAY(0 TO 7) OF STRING(1 TO 3); CONSTANT dado_escrito : vetor_2d := ("abc","def","ghi","jkl","mno","pqr","stu","vxz"); TYPE arquivo_u IS FILE OF STRING; -- limites do vetor nao definidos "unconstrained array type" FILE arq_rd : arquivo_u; TYPE arquivo_c IS FILE OF STRING(1 TO 3); -- limites definidos FILE arq_wr : arquivo_c; BEGIN escreve_le: PROCESS VARIABLE dado_lido_v : STRING(1 TO n); VARIABLE tamanho_v : NATURAL; BEGIN FILE_OPEN(arq_wr, "\vhd\dado_j.dat",Write_Mode); FOR i IN 0 TO 7 LOOP WRITE(arq_wr, dado_escrito(i)); -- escreve END LOOP; -- FILE_CLOSE(arq_wr); -- fecha o arquivo FILE_OPEN(arq_rd, "\vhd\dado_j.dat",Read_Mode); WHILE NOT ENDFILE(arq_rd) LOOP -- testa fim do arquivo READ(arq_rd, dado_lido_v, tamanho_v); -- le os valores na forma binaria dado_lido <= dado_lido_v; -- argumento do procedimento tipo variavel tamanho <= tamanho_v; WAIT FOR 10 ns; -- aguarda 10 ns para proxima leitura END LOOP; WAIT; END PROCESS escreve_le; 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 33 34 35 36 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 |
-- versao VHDL-1993![]() USE STD.TEXTIO.ALL; ENTITY arq_cnv1 IS END arq_cnv1; ARCHITECTURE teste OF arq_cnv1 IS BEGIN converte: PROCESS FILE arq_texto : TEXT OPEN READ_MODE IS "dad_txt.dat"; -- arquivo formato: VARIABLE linha : LINE; -- | | | | | | | | | VARIABLE ck_v, rst_v : BIT; -- 0 1 1 0 VARIABLE d_v, q_v : BIT; -- 0 0 1 0 VARIABLE car : CHARACTER; -- 1 1 0 0 TYPE arq_tipo_bit IS FILE OF BIT; FILE arq_bin : arq_tipo_bit OPEN Write_Mode IS "dad_bin.dat"; BEGIN WHILE NOT ENDFILE(arq_texto) LOOP READLINE(arq_texto, linha); -- leitura de uma linha READ(linha, car); READ(linha, ck_v); -- leitura dos dados, espaco e valor READ(linha, car); READ(linha, rst_v); -- " READ(linha, car); READ(linha, d_v); -- " READ(linha, car); READ(linha, q_v); -- " WRITE(arq_bin, ck_v); -- esqueve dados WRITE(arq_bin, rst_v); -- " WRITE(arq_bin, d_v); -- " WRITE(arq_bin, q_v); -- " END LOOP; FILE_CLOSE(arq_texto); FILE_CLOSE(arq_bin); WAIT; END PROCESS converte; END teste; -- versao VHDL-1993 -- verifica conteudo do arquivo criado pela entidade arq_cnv1 ENTITY arq_cnv2 IS PORT (ck_s, rst_s, d_s, q_s : OUT BIT); END arq_cnv2; ARCHITECTURE teste OF arq_cnv2 IS BEGIN verifica: PROCESS TYPE arq_tipo_bit IS FILE OF BIT; FILE arq_bin : arq_tipo_bit OPEN Read_Mode IS "dad_bin.dat"; VARIABLE ck_v, rst_v : BIT; VARIABLE d_v, q_v : BIT; BEGIN WHILE NOT ENDFILE(arq_bin) LOOP READ(arq_bin, ck_v); ck_s <= ck_v; -- le dados; tranfere sinal READ(arq_bin, rst_v); rst_s <= rst_v; -- " READ(arq_bin, d_v); d_s <= d_v; -- " READ(arq_bin, q_v); q_s <= q_v; -- " WAIT FOR 10 ns; -- tempo para apresentacao dos dados END LOOP; FILE_CLOSE(arq_bin); WAIT; END PROCESS verifica; END teste; |