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

Файл Lekz6_input_output_files.doc

Лекция №6 (5-тый курс)

Тема: vhdl проектирование криптографических процессоров с использованием файлового ввода/вывода

Вопросы по теме:

  1. Вводные замечания

  2. Практическая организация ЧТЕНИЕ текстовых ДАННЫХ из ФАЙЛА ОС.

  3. Практическая организация ЗАПИСИ текстовых ДАННЫХ в ФАЙЛ ОС.

  4. Практическая организация ДОБАВЛЕНИЯ текстовых ДАННЫХ в ФАЙЛ ОС.

  5. Пример VHDL проекта оперирующего с файлами ОС

  6. Приложение №1: Процедуры пакета TEXTIO обеспечивающих запись/чтение стандартных типов данных

  7. Приложение №2: Общая структурная схема процесса записи/чтения файловых данных

Примечание: Материалы Лекции изучать целесообразно совместно с одновременным рассмотрением общей структурной схемы процедур записи/чтения данных (Смотри Приложение №2)

  1. Вводные замечания

При разработке суперпроектов криптографических процессоров на языке VHDL возникает вопрос: «Где хранить исходные шифруемые данные, предназначенные для моделирования работы проекта (предназначенные для проверки функциональной работоспособности проекта) и где хранить результаты криптографических преобразований, полученные в результате процесса моделирования?» Такие данные, в силу их большого объема, часто целесообразно хранить в отдельных файлах Операционной системы.

В языке VHDL для работы с файлами Операционной системы имеется специальный тип программных объектов, которые получили название объекты файлового типа (файловые величины-переменные). Такие объекты неразрывно связаны с ключевым словом file. То, что в языке VHDL имеется возможность обрабатывать информацию, хранимую в файлах ОС, а также сохранять результаты работы проектов в файлах ОС существенно улучшает переносимость проектов, а также существенно сокращает аппаратные затраты при реализации проектов.

Пользовать, при разработке VHDL проекта, имеет возможность ввести в проект свои собственные объекты файлового типа. Однако он обязан предварительно объявить тип для формируемого им программного файлового объекта. Конструкция оператора дающего возможность пользователю объявить тип формируемого им файлового объекта имеет такой вид:

Type Имя пользовательского типа для будущего файлового объекта is file of Тип данных хранимых/записываемых в файл;

Имея в своем распоряжении такое объявление пользовательского типа, предоставляется возможность объявить сам объект файлового типа. Конструкция объявления объекта файлового типа имеет такой вид:

File Имя файлового объекта : Имя предварительно объявленного пользовательского типа для файлового объекта open Режим доступа is «Полный путь к физическому файлу ОС к которому требуется получить доступ ;

Примечание: Объявить объект файлового типа можно в таких местах:

  • В подразделе объявлений оператора process;

  • В пакете;

  • В подразделе объявлений тела архитектуры.

Важно помнить, в языке VHDL, объект файлового типа (Имя объекта файлового объекта) играет роль промежуточного звена (контейнера) между VHDL проектом и физическим файлом ОС.

В языке VHDL поддерживаются три режима доступа к файлу ОС через объект файлового типа (через файловую программную величину - контейнер): чтение данных из файла, запись данных в файл, добавление данных в файл.

Режим доступа чтение данных из файла имеет идентификатор READ_MODE (Этот режим взаимодействует со специальной подпрограммой-процедурой read(…)).

Режим доступа для записи данных в файл имеет идентификатор WRITE_MODE (Этот режим взаимодействует со специальной подпрограммой-процедурой write(…))..

Режим доступа для добавления данных в файл имеет идентификатор APPEND_MODE (Этот режим взаимодействует со специальной подпрограммой-процедурой write(…))..

Важное примечание: Режимы доступа к файлу гарантируют только право на обращения к файлу ОС, а не фактический доступ к его информации.

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

Операция открытия файла реализуется при помощи специальной подпрогаммы-процедуры FILE_OPEN(…). Конструкция объявления подпрограммы-процедуры FILE_OPEN(…) с указанием наименований ее фактических параметров имеет такой вид:

FILE_OPEN (Имя файлового объекта (контейнера), «Полный путь к физическому файлу ОС который требуется открыть, Режим доступа) ;

Когда обмен данными между файлом и проектом закончен, следует позаботиться также о закрытии доступа к файлу ОС. Операция закрытия доступа к файлу ОС реализуется с помощью специальной подпрограммы-процедуры FILE_CLOSE(…). Конструкция вызова подпрограммы-процедуры FILE_CLOSE(…) с указанием наименования ее фактического параметра имеет такой вид:

FILE_CLOSE (Имя файлового объекта (контейнера)).

Действие, способствующее фактическому чтению данных из файла ОС реализуется с помощью специальных подпрограмм процедур read(…). Эти подпрограммы процедуры определены в package TEXTIO библиотеки STD (Смотри приложение №1).

Одна из конструкций объявления подпрограммы процедуры read(…) для чтения текстовых данных из файла имеет такой вид:

Procedure READ (file Имя файлового объекта (контейнера) : TEXT; variable value(Имя специального программного буфера): out string(1 to N) ; variable width(Имя переменной индицирующей количество прочитанных символов) : out natural);

Как видно из конструкции объявления этой подпрограммы, она способна только переместить данные из контейнера в специальный программный буфер, который следует организовать в проекте. Для последующего доступа к специальному программному буферу и, следовательно, достижения видимости прочитанных из контейнера данных в проекте, требуется дополнительно (посредством операции присвоения) перенести данные из специального программного буфер в специально организованный массив. Только после переноса читаемых данных из специального программного буфера в массив они становятся видимыми в теле архитектуры проекта.

Для фактического свершения переноса (операции чтения) данных из файла ОС в контейнер в разделе выполняемых операторов оператора process(…) следует организовать оператор вызова подпрограммы процедуры read(…). Конструкция оператора вызова подпрограммы процедуры read(…) с наименование идентификаторов фактических аргументов имеет такой вид:

READ (Имя файлового объекта (контейнера), Имя специального программного буфера, Имя переменной индицирующей количество прочитанных символов);

Примечание: Примеры VHDL проектов, где практически организованы процедуры чтения данных из файла ОС, приведены в параграфе 2 настоящей лекции.

Процедура записи данных в файл ОС реализуется с помощью специальных подпрограмм процедур write(…). Эти подпрограммы процедуры определены в package TEXTIO библиотеки STD (Смотри приложение №1).

Одна из конструкций объявления подпрограммы процедуры write (…) для записи текстовых данных в файл ОС имеет такой вид:

Procedure WRITE (file Имя файлового объекта (контейнера) : TEXT; variable value(Имя специального программного буфера): out string(1 to N)) ;

Как видно из конструкции объявления этой подпрограммы она способна только переместить данные из программного буфера в контейнер. Для размещения данных (записываемых в файл ОС) в программном буфере требуется (посредством операции присвоения) перенести данные из массива в программный буфер. Только после переноса данных из массива в специальный программный буфер они смогут попасть в контейнер и затем в файл ОС.

Для фактического свершения операции записи данных в файл ОС в разделе выполняемых операторов оператора process(…) следует организовать оператор вызова подпрограммы процедуры write (…). Конструкция оператора вызова подпрограммы процедуры write (…) с наименование идентификаторов фактических аргументов имеет такой вид:

WRITE (Имя файлового объекта (контейнера), Имя специального программного буфера, Имя переменной индицирующей количество прочитанных символов);

Примечание: Примеры VHDL проектов, где практически организованы процедуры чтения данных из файла ОС, приведены в параграфе 3 настоящей лекции.

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