Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Waveform Editor1

Тема: VHDL проектирование криптографических процессоров с использованием файлового ввода/вывода | FILE_CLOSE (Имя файлового объекта (контейнера)). | Практическая организация ЧТЕНИЕ текстовых ДАННЫХ из ФАЙЛА ОС. | Читаем текст из файла! | Форматированные операции ввода-вывода (чтения-записи) с символами ASCII. | Процедуры записи данных в файл для стандартных типов данных | Проиллюстрируем примерами методологию применения процедур чтения/записи стандартных типов данных, определенных в пакете TEXTIO библиотеки STD. |


Рис. 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) для осуществления операции записи.

Он содержит три фактических аргумента:

  1. Первый аргумент vect_wr – это имя переменной Файловой переменной, которая играет роль контейнера, в который помещаются добавляемые данные перед физическим занесением их в файл ОС.
  2. Имя файла ОС, в который мы желаем добавить данные (этот файл должен уже существовать, т. е. он должен уже предварительно быть создан пользователем).
  3. Третий аргумент определяет режим доступа к файлу. Слово APPEND_MODE является зарезервированным идентификатором, описание которого имеется в базовой версии языка VHDL.

 

Процедура физического добавления (до записи) данных в файл ОС реализуется с помощью подпрограммы процедуры WRITE(). Описание этой подпрограммы имеется в ядре языка VHDL.

Для запуска (вызова) этой подпрограммы в нашем проекте мы должны предусмотреть оператор вызова подпрограммы- процедуры WRITE(…);, которая представлен в нашем проекте строкой, имеющей вид:

 

 

 
 

 


перенесение

WRITE(vect_wr, write_vec);

       
   


1 2

(Ф.П.- (контейнер)) Программный буфер

 
 


результат работы: данные добавленные в файл

 

 

Оператор вызова подпрограммы- процедуры WRITE(…);, содержит два аргумента:

  1. Первый аргумент представляет собой файловую переменную (контейнер), куда мы предварительно помещаем данные из программного буфера, Затем данные, которые мы желаем добавить в файл ОС, автоматически переносятся из контейнера в файл ОС.
  2. Второй аргумент фактически является источником тех данных, которые мы желаем добавить в файл.

 

Примечание:

После вызова описания подпрограммы процедуры 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 проекта оперирующего с файлами ОС

mybiblioteka.su - 2015-2024 год. (0.012 сек.)