Читайте также:
|
|
Прикладная программа не требует её установки или дополнительной отладки. Для запуска программы необходимо перейти в директорию расположения папки и открыть файл «Эмулятор.exe».
Исходными данными для работы программы являются: разрядность адресного и информационного пространства запоминающего устройства, количество портов и режим работы эмулятора.
На рисунке 1 представлена структурная схема эмулятора многопортного ЗУ.
Рисунок 1 – Структурная схема эмулятора многопортового запоминающего устройства
Доступ к ячейкам осуществляется как через левую, так и через правую группу шин, причем если Л- и П- адреса различны, никаких конфликтов не возникает.
Помимо возможности доступа к ячейкам с двух направлений, двухпортовая память снабжается средствами для обмена сообщениями между подключенными к ней устройствами: системой прерывания и системой семафоров. Первую из них называют аппаратной, а вторую – программной. В системе прерываний двухпортового ЗУ две последние ячейки микросхемы (с наибольшими адресами) используются в качестве «почтовых ящиков» для обмена сообщениями между устройствами, подключенными к Л- и П- портам.
Система семафоров – это арбитры, регулирующие очередность обращения двух или более независимых активных устройств к общему ресурсу. Механизм действия семафоров в двухпортовом ЗУ основан на том, что несколько ячеек памяти, не входящих в рабочее пространство, используются как указатели занятости определенных сегментов (банков) памяти. Нулевой код в семафоре соответствует занятому банку, а ненулевой – свободному.
Алгоритм программного арбитража характеризуется следующей последовательностью действий [1]:
- активное устройство формирует запрос на обращение к банку памяти путем записи «0» в соответствующую ячейку, используемую как семафор;
- активное устройство считывает состояние семафора, сравнивает полученный код с нулевым кодом и, если банк занят (код ненулевой) переходит в состояние ожидания;
- если банк свободен, активное устройство получает доступ к его содержимому;
- активное устройство заканчивает обмен и освобождает занимаемый банк памяти путем записи «1» в соответствующий семафор.
На рисунке 2 показано отличие синхронного двухпортового ЗУ от асинхронного. Операции обращения к ячейкам асинхронной памяти могут выполняться в произвольные моменты времени при условии соблюдения необходимых временных соотношений между сигналами установки адреса, управления, чтения/записи данных.
Отличительными особенностями синхронной памяти являются: синхронный интерфейс с раздельными сигналами синхронизации «CLK_R» и «CLK_L» и внутренние счетчики (Internal counters) для организации пакетного режима передачи данных [1, 2]. Поскольку обязательным условием доступа активных устройств к пространству такой памяти является их взаимная синхронизация от одного системного таймера, никакой дополнительной логики (арбитраж, семафоры или прерывания) для разрешения конфликтных ситуаций не требуется.
а – синхронный тип; | б – асинхронный тип |
Рисунок 2 – Структурные схемы двухпортового ЗУ |
Архитектура синхронного двухпортового ЗУ оптимизирована для применения в вычислительных сетях и системах беспроводной телефонии (базовые станции), обеспечивая следующие синхронные режимы работы памяти: «Pipelined» (конвейерный), «Flow-through» (сквозной) и «Burst» (пакетный).
Режимы «Pipelined» и «Flow-through» отличаются структурой выходного устройства. В первом случае дополнительный буферный регистр-защелка по выходу (Output register) позволяет организовать конвейерный доступ к данным (одновременно с чтением по предыдущему адресу осуществляется запрос по следующему).
Режим «Burst» предназначен для выполнения операций над последовательными потоками параллельных данных (например, потоки речевых сообщений) и имеет некоторое сходство с работой памяти FIFO. Работа в этом режиме начинается с параллельной загрузки начального значения внутреннего счетчика через внешнюю шину адреса. В дальнейшем при каждом обращении к памяти состояние внутреннего счетчика циклически инкрементируется. Наличие в синхронном двухпортовом ОЗУ счетчиков адреса позволяет освободить ресурсы управляющего процессора для других операций [2].
На рисунке 3 представлена схема алгоритма программного эмулятора многопортового ЗУ.
Рисунок 3 – Схема алгоритма программного эмулятора
|
«procedure FormCreate(Sender: TObject)» – процедура, которая создаёт и выводит рабочее окно программы.
«procedure Button3Click(Sender: TObject)» – процедура, которая при нажатии на кнопку «Заполнить память» заполняет память случайными данными.
«procedure Button4Click(Sender: TObject)» – процедура, которая при нажатии на кнопку «Start/Stop» включает или отключает программный таймер.
«procedure Timer1Timer(Sender: TObject)» – процедура, в которой выполняется эмуляция процессов: чтение-чтение, чтение-запись, запись-запись.
«procedure N641Click(Sender: TObject)» – процедура, которая задаёт объём памяти равный 64 килобайт.
«procedure ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer)» – процедура, посредством которой происходит прокрутка диаграмм работы программы.
«procedure N3Click(Sender: TObject)» – процедура, которая при нажатии на кнопку «Выход» закрывает программу.
«procedure N2Click(Sender: TObject)» – процедура, которая при нажатии на кнопку «Открыть» выводит диалоговое окно, с возможностью выбора текстового файла.
«procedure N9Click(Sender: TObject)» – процедура, которая переводит программу в режим запись-запись.
«procedure N7Click(Sender: TObject)» – процедура, которая переводит программу в режим чтение-чтение.
«procedure N8Click(Sender: TObject)» – процедура, которая переводит программу в режим чтение-запись.
«procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState)» – процедура, которая раскрашивает ячейки памяти в определённый цвет.
«p» – переменная типа Integer, которая хранит число, прочитанное из текстового файла.
«h» – переменная типа Integer, которая хранит значение ползунка горизонтальной прокрутки.
«i» – переменная типа Integer, в которую заносятся числа от 1 до 65536.
«j» – переменная типа Integer, в которую заносятся числа от 1 до 8.
«f» – переменная типа TextFile, в которую заносится текстовый файл.
«r1» – переменная типа Integer, в которую заносится адрес строки к которой обращается процесс во время чтения.
«r2» – переменная типа Integer, в которую заносится адрес строки к которой обращается процесс во время чтения.
«w1» – переменная типа Integer, в которую заносится адрес строки к которой обращается процесс во время записи.
«w2» – переменная типа Integer, в которую заносится адрес строки к которой обращается процесс во время записи.
«Buf» – переменная типа string, в которую заносится строка с числами, прочитанная из текстового файла.
«Random» – функция, которая генерирует случайные числа из заданного диапазона.
«Length» – функция, позволяющая получить число символов в строке.
«Copy» – функция, позволяющая копировать символы из строки.
«Refresh» – процедура перерисовки содержимого памяти.
«Volume» – процедура задающая размеры памяти.
«FillRect» – процедура перерисовки содержимого ячеек памяти.
«TextOut» – процедура вывода значений в ячейки памяти.
3.2 Руководство пользователя
Прикладная программа «Эмулятор многопортового запоминающего устройства» позволяет исследовать режимы: чтения/записи многопортовых асинхронных и синхронных запоминающих устройств произвольного объема; сокрытия/извлечения сообщений в стеганографических системах.
Внешний вид программы представлен на рисунке 4.
Рисунок 4 – Внешний вид программы
В верхнем левом углу программы область для просмотра содержимого регистров «АХ» и «ВХ». В нижнем левом углу программы находится временная диаграмма. В правой части программы находится область памяти. Чтобы заполнить память данными необходимо нажать по кнопке «Заполнить память» или в меню «Файл» выбрать пункт «Открыть» и в появившемся диалоговом окне (см. рисунок 5) выбрать нужный файл.
После открытия файла эмулятор заполнит память автоматически (см. рисунок 6).
Задание объёма памяти осуществляется в меню «Сервис» → «Настройки» → «Объём памяти» и в выпадающем списке выбрать требуемый значение (см. рисунок 7).
Рисунок 5 – Диалоговое окно для открытия файла
Рисунок 6 – Внешний вид заполненного адресного и информационного пространства запоминающего устройства
Рисунок 7 – Меню выбора объёма памяти
Для того чтобы выбрать требуемый режим работы эмулятора необходимо в меню «Сервис» выбрать пункт «Эмулятор» и в выпадающем списке выбрать требуемый режим (см. рисунок 8).
Рисунок 8 – Меню выбора режима работы эмулятора
Достоинствами разработанной программы является:
- адаптивность к произвольной архитектуре и типу многопортового запоминающего устройства;
- возможность демонстрации в графическом режиме обращений к ячейкам ЗУ и отображения результатов на временной диаграмме;
- возможность модификации исходного кода прикладной программы с учетом появления на рынке новых типов запоминающих устройств.
Прикладная программа ориентирована для наглядного представления архитектуры и режимов работы многопортовых запоминающих устройств, режимов сокрытия/извлечения сообщений в цифровые изображения с использованием многоканального (многослойного) способа записи кодов объектов.
4 Условия передачи программной документации или ее продажи
Передача электронного ресурса и прилагаемой к нему сопровождающей документации осуществляется в соответствии с лицензионным договором о передаче неисключительных прав на использование произведения.
Дата добавления: 2015-07-16; просмотров: 48 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Назначение программы | | | Ключи к успеху |