|
Рис. 3.2 Временная диаграмма работы проекта write1_file.
Результаты работы проекта показаны в файле TextFile2.txt.Содержимое файла TextFile2.txt после того, как в него будет записана новая информация. Показано на Рис.3.3.
!!!SUN IS SHINING!!!
Рис.3.3. Содержимое файла TextFile2.txt после записи в него данных
4. Практическая организация ДОБАВЛЕНИЯ текстовых ДАННЫХ в ФАЙЛ ОС.
Общий процесс добавления текстовых данных в файл ОС можно проиллюстрировать такой блок-схемой Рис.4.1:
Рис.4.1
Проект entity WRITE2_file демонстрирует возможности языка VHDL и САПР Active HDL 5.1 при выполнении операции добавления данных в файл.
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use STD.TEXTIO.all;
entity WRITE2_file is
port(
clk: in STD_LOGIC
);
end WRITE2_file;
architecture WRITE2_file_ar of WRITE2_file is
signal massiv10: string(1 to 10):= "paredigman"; --исходный
--источник данных
begin
process(clk)
variable write_vec: string(1 to 10);
file vect_wr: TEXT open APPEND_MODE is "f2_wr.dat";
begin
if clk'event and clk='1' then
write_vec:=massiv10;
FILE_OPEN(vect_wr,"f2_wr.dat", APPEND_MODE);
WRITE(vect_wr, write_vec);
end if;
FILE_CLOSE(vect_wr);
end process;
end WRITE2_file_ar;
Пояснения к отдельным строкам и переменным в описанной программе приведены ниже:
write_vec –буфер источник данных, подлежащих добавлению в файл (источник данных);
vect_wr –Файловая переменная (контейнер);
"D:\my_designs_ahdl\Write_file\TextFile2.txt" - полный путь к файлу;
Важные замечания:
1. Очень желательно указывать полный путь к файлу, в который мы желаем добавить информацию.
2. Однако, чтобы просмотреть изменения (добавления) необходимо переключиться с закладки Waveform Editor на закладку с именем файла ОС и подтвердить кнопкой ОК свое желание внести дополнение. Это подтверждение нужно сделать в запросе, который выдаст Active HDL при выборе закладки с файлом ОС.
Этот проект демонстрирует процедуру работы с файлами ОС, в частности, как добавить в уже существующий (созданный ранее) файл некоторые текстовые данные.
Исходные текстовые данные (символьная строка) хранятся в одномерном массиве massiv10, имеющий тип string. Символьная строка содержит 10 символов, поэтому массив massiv10 объявлен типом string(1 to 10), т. е. помещающий в себя 10 элементов.
Массив massiv10 объявлен программным типом signal в разделе объявлений тела архитектуры. Такое объявление сделает сигнал видимым в любом месте тела архитектуры, включая и тело оператора process().
Для того, чтобы реализовать процедуру добавления данных в файл ОС в разделе объявлений оператора process() объявлена типом string(1 to 10) дополнительная буферная переменная write_vec, в которую сначала переписываем данные, хранящиеся в массиве massiv10. В разделе объявлений оператора process() содержится объявление специальной переменной с именем vect_wr. Эта переменная является переменной файлового типа (или контейнером). Обратите внимание, что перед именем этой переменной стоит ключевое слово file. Эта переменная имеет тип TEXT. Под термином «переменная файлового» типа следует понимать:
Ø Что эта переменная жестко связывается с файлом ОС (в нашем примере этот файл имеет имя f2_wr.dat) и является специальным контейнером, куда предварительно помещаются данные перед реальной операцией их записи в физический файл.
Ø Эта переменная непосредственно участвует в процессах получения доступа к физическому файлу.
Обратите внимание, что после ключевого слова TEXT имеется дополнительная запись вида:
open APPEND_MODE is f2_wr.dat.
Эта дополнительная запись означает, что файловая переменная vect_wr получает права доступа к файлу ОС f2_wr.dat. Режим добавления данных (APPEND_MODE) и эти права будут практически реализованы после выполнения дополнительных процедур, связанных с физическим открытием файла ОС и реальной записью в него данных подпрограммой процедурой Write(...);
Процедура физического открытия файла ОС выполняется подпрограммой FILE_OPEN(), описание которой содержится в ядре языка VHDL. Для запуска подпрограммы FILE_OPEN() (она реализована как подпрограмма процедура) нужно в VHDL – проекте предусмотреть оператор вызова этой подпрограммы процедуры. Оператор вызова подпрограммы процедуры FILE_OPEN()представлен в нашем проекте строкой, которая имеет вид:
FILE_OPEN(vect_wr,"f2_wr.dat", APPEND_MODE);
1 2 3
результат работы: сигнал разрешение (ENABLE) для осуществления операции записи.
Он содержит три фактических аргумента:
Процедура физического добавления (до записи) данных в файл ОС реализуется с помощью подпрограммы процедуры WRITE(). Описание этой подпрограммы имеется в ядре языка VHDL.
Для запуска (вызова) этой подпрограммы в нашем проекте мы должны предусмотреть оператор вызова подпрограммы- процедуры WRITE(…);, которая представлен в нашем проекте строкой, имеющей вид:
перенесение
WRITE(vect_wr, write_vec);
1 2
(Ф.П.- (контейнер)) Программный буфер
результат работы: данные добавленные в файл
Оператор вызова подпрограммы- процедуры WRITE(…);, содержит два аргумента:
Примечание:
После вызова описания подпрограммы процедуры WRITE(), она перепишет данные из переменной-источника (программного буфера) в контейнер (в файловую переменную) и затем автоматически перешлет добавленные данные в файл ОС.
Процедура закрытия файла (снятия разрешения на добавление в него данных) реализуется подпрограммой FILE_CLOSE и соответствующим оператором вызова этой подпрограммы FILE_CLOSE(vect_wr);
Временная диаграмма работы Проекта WRITE2_file, реализующего процедуру добавления данных в файл показана на Рис.4.2
Waveform Editor2
Рис. 4.2 Временная диаграмма работы проекта WRITE2_file.
Содержимое файла ОС D:\my_designs_ahdl\FILE_APPEND\ f2_wr.dat, после выполнения нескольких добавлений данных в файл ОС, показано на Рис.4.2.
paredigman
paredigman
paredigman
paredigman
Рис. 4.2. Содержимое файла f2_wr.dat после того, как в него будет добавлена новая информация.
Дата добавления: 2015-08-27; просмотров: 48 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Практическая организация ЗАПИСИ текстовых ДАННЫХ в ФАЙЛ ОС. | | | ПримерVHDL проекта оперирующего с файлами ОС |