Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lekz6_input_output_files.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

2. Практическая организация чтение текстовых данных из файла ос.

2.1 Проект Варианта 0

File: D:\my_designs_ahdl\file_rd1\src\file_rd1.vhd

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use STD.TEXTIO.all;

entity file_rd1 is

port(

clk : in STD_LOGIC;

addr : in natural;

sim_out : out CHARACTER );

end file_rd1;

architecture file_rd1_ar of file_rd1 is

begin

process(clk, addr)

variable read_vec: string(1 to 15); --объявление программного буфера

variable sim: CHARACTER;

variable wid: natural;

file vect_r: TEXT open READ_MODE is –- Организация контейнера и "D:\my_designs_ahdl\file_rd1\src\fi.dat"; --связывание его с

-- файлом ОС

begin

if clk'event and clk='1' then

FILE_OPEN(vect_r,"D:\my_designs_ahdl\file_rd1\src\f1.dat", READ_MODE); --открытие контейнера

READ(vect_r, read_vec, wid);-- оператор вызова подпрогр. READ( )

sim:= read_vec(addr);

sim_out <= sim;

end if;

FILE_CLOSE(vect_r); --Закрытие контейнера

end process;

end file_rd1_ar;

Пояснения к отдельным строкам и переменным в описанной программе приведены ниже:

variable read_vec: string(1 to 15) – программный буфер-приемник данных из контейнера. Эта переменная определяет объем читаемых данных из контейнера;

variable wid: natural; - переменная, контролирующая количество прочитанных данных;

file vect_r: TEXT open READ_MODE is D:\my_designs_ahdl \file_rd1\src\fi.dat"; --объявление переменной Ф.Т. (контейнера) vect_r с

--правами READ_MODE и связывание ее файлом ОС

FILE_OPEN(vect_r,"D:\my_designs_ahdl\file_rd1\src\f1.dat", READ_MODE); --

--оператор вызова подпрограммы открытия файла;

READ(vect_r, read_vec, wid);-- оператор вызова подпрограммы чтения данных;

sim_out <= sim; -- пересылка читаемых данных (символов) на выходной порт;

FILE_CLOSE(vect_r); -- оператор вызова подпрограммы закрытия файла;

variable wid: natural; – указатель (курсор) файла.

Для моделирования работы проекта в файле D:\my_designs_ahdl\file_rd1\src\f1.dat расположен такой текст:

читаем текст из файла!

Рис. 2.В1.1 Содержимое файла, из которого читаем данные.

Примечание: Текстовые данные в файле (на строке) должны располагаться, начиная с пятой позиции.

Временная диаграмма работы проекта сохранена в файле D:\my_designs_ahdl\file_rd1\src\Waveform Editor1.awf и показана на рис.2.В1.2

Рис. 2.В1.2. Временная диаграмма работы проекта file_rd

1.2 Проект Варианта 2

File: D:\my_designs_ahdl\file_rd1\src\file_rd2.vhd

library IEEE;

use IEEE.STD_LOGIC_1164.all;

use STD.TEXTIO.all;

entity file_rd2 is

port(

clk : in STD_LOGIC;

wid_out : out natural;

sim_out : out CHARACTER );

end file_rd2;

architecture file_rd2_ar of file_rd2 is

begin

process(clk)

variable read_vec: string(1 to 6);

variable addr: natural := 1;

variable sim: CHARACTER;

variable wid: natural;

file vect_r: TEXT open READ_MODE is "fi.dat"; -- Сокращенный путь к файлу

begin

if clk'event and clk='1' then

FILE_OPEN(vect_r,"f1.dat");

READ(vect_r, read_vec, wid);

sim:= read_vec(addr);

sim_out <= sim;

addr:=addr+1;

end if;

FILE_CLOSE(vect_r);

end process;

end file_rd2_ar;

Некоторые комментарии к данной программе приведены после текста программы Варианта 1.

--Текст в .dat файле начат с 5-й позиции.

--Контейнер read_vec содержит 6 позиций.

File: D:\my_designs_ahdl\file_rd1\src\Waveform Editor2.awf

Рис. 2.В2.1. Временная диаграмма работы проекта file_rd

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]