Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL (2003), страница 39
Описание файла
DJVU-файл из архива "Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL (2003)", который расположен в категории "". Всё это находится в предмете "микропроцессорные системы (мпс)" из 8 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "микропроцессорные системы" в общих файлах.
Просмотр DJVU-файла онлайн
Распознанный текст из DJVU-файла, 39 - страница
Для хранения содержимого ячеек памяти используется сигнал (не переменная, поскольку сигналы удобнее просматривать на временных диаграммах) лев ат, КОтоРый имеет тип спел аттау, описанный в пакете Епеете141 Описание поведения объекта лепоту в включает в себя 3 процесса. Первый процесс (пел его 211е от ьив) предназначен для загрузки содержимого файла в память (т. е.
установки начальных значений элементов па- МятИ) И дпя ЗаПИСИ В ПаМятЬ даННЫХ С ВХОда с(ата1. ПрОцЕСС аКтИВИЗИруЕтея ПрИ ИЗМЕНЕНИИ СИГНаЛа 1оас( тел ИЛИ СИГНаЛа таКтнраааНИя. Чтение данных из файла и загрузка их в память происходит по восходящему фронту 1оас( ел. Чтение файла осуществляется следующим образом. В процессе реп) егол 211е от ьив описана переменная честит, имеющая тип гптедет. В НЕЕ СЧИтЫВаЮтСя СтрОКИ файЛа, СООтВЕтетВувщИЕ СЛОВаМ ПаМятИ. Переменная сои О используется как счетчик количества слов. Переменная с папе служит для хранения идентификатора образа памяти, который чита- Проектирование на МНО!. 203 ется из файла в текущий момент времени.
Переменная се используется как флаг, она принимает значение 1, если при чтении дошли до места, где расположено начало образа памяти, соответствующего данному блоку памяти. В теле процесса выполняются следующие действия: переменной со присваивается начальное значение О, затем организуется цикл, где происходит считывание образов памяти. Считывание выполняется до тех пор, пока не будет достигнут образ памяти, соответствующий данному блоку, или не будет достигнут конец файла (для этих целей используется конструкция кщте...1оор). Для проверки достижения конца файла используется функНня еосчШе пакета сексво. Первое слово образа памяти содержит идентификатор блока памяти, который проверяется на совпадение с идентификатором текущего блока.
Если совпадение произошло, переменой се присваивается значение !. Обнуляется счетчик элементов памяти. Далее организуется цикл, в котором происходит поэлементное считывание образа блока памяти от первого до последнего слова. Если идентификатор текущего блока совпадает с идентификатором образа памяти, очередная запись файла записывается в очередное слово памяти. Операция чтения из файла осуществляется с помощью стандартной функции кеес!, параметрами которой являются имя логического файла, переменная, в которую прочитывается значение элемента и размер читаемого элемента, если он является вектором.
Номер слова памяти определяется значением счетчика. Данные, читаемые из файла, имеют тип ьоседет. Для того чтобы записать их в элемент массива памяти, имеющий тип ес 1одьс, используется функция преобразования со оееьдоесч (преобразует тип заведет в тип ооеьдоеа), размер результирующего вектора (тед ев ее), а также функция асс! 1одтс еессот (преобразует оке 'деес! в 1одьс оессот того же размера). Воли же сигнал 1оесч еее имеет значение ' о ' или не менял своего значения (процесс инициирован событием изменения сигнала стх), то запись в память данных может быть выполнена с шины песет.
Запись данных с входа аесеь в элемент памяти, номер которого определяется значением сигнала есыт, выполняется по восходящему фронту сигнала тактирования, прн условии, что сигнал разрешения записи ы установлен в 'з '. Сигнал адат имеет тип ессз 1одьс, поэтому он должен быть преобразован в тип сеседет, соответствующий типу индекса массива. Для этого используется функция оеаьдоесч, преобразующая значение типа есс! 1одьс в значение типа оеаьдоес!, а также функция со 'введет, преобразующая значение типа еоездеес! в значение типа заведет, Второй процесс, еет ьееде со свае, предназначен для сохранения образа памяти в файле.
В нем описаны следующие переменные: го4 Глава 4 О чесеох — предназначена для хранения слова памяти, которое будет записано в файл; 0 вегх — строка — идентификатор блока памяти; 1З сои ю — счетчик слов памяти. Процесс записи активизируется по восходящему фронту сигнала зеохе еп. В начале выполняется открытие файла в режиме записи и связывание с физическим файлом 1оацз.чае, для чего используется функция дь1е орел с параметрами: О ~ессохв ю — имя логического файла; 0 1оаж.чае — имя физического файла; 0 арреьсг гаосзе — режим продолжения записи. Использование этого режима позволяет выполнить дозапись образа блока памяти в конец файла, не разрушая предыдущую информацию, после чего в файл записывается идентификатор блока памяти при помощи функции ьггее пакета сехсьо.
После этого в цикле выполняется запись содержимого массива памяти в файл (от первого до последнего слова памяти). В переменную месеог записывается значение каждого элемента массива, предварительно преобразованного к типу ьвседех. Значение переменной записывается в файл. После того, как содержимое памяти полностью записано в файл, он закрывается. Для этого используется процедура гз1е с1сае. В первом процессе не выполняется открытие и закрытие файла, поскольку при описании логического файла производится связывание с физическим файлом, а дальнейшая работа с ним в этом случае осуществляется автоматически. Третий процесс используется для выполнения операции чтения из памяти на шину ааеас.
Чтение выполняется асинхронно, при наличии сигнала разрешения чтения. Активизация процесса выполняется при изменении значения сигнала х или аыг.Если значение сигнала х равно 'з' то на выход сзасас подаются данные элемента массива памяти, соответствующего текущему значению адреса. Пример временной диаграммы работы устройства приведен на рис. 4.18. Эта диаграмма соответствует выполнению следующих действий.
В момент времени з сигнал 1оаа пет меняет значение с о' на 'з', в результате чего в блоки памяти загружаются начальные значения. Далее, с момента времени з по момент времени 4з, сигнал разрешения записи в блок памяти з имеет значение з'. На вход адреса подаются значения о — з, на вход данных— значения з — 4, которые и записываются в первый блок памяти.
Затем, с момента времени дг по момент времени зоо, сигнал разрешения записи во второй блок памяти имеет значение з . На вход адреса подаются значения о — з, на вход данных — значения з — в; которые записываются во второй Прсектирсвание нв 'унО~ блок памяти. С момента времени зв по момент времени зо установлен сигнал разрешения чтения из первого блока памяти. В результате на шину выходных данных с за по со выдается значение из третьей ячейки блока памяти, затем из нулевой ячейки в соответствии с текущим значением адреса. С момента времени во по момент зоо установлен сигнал разрешения чтения яз второго блока памяти. В соответствии со значением адреса выполняется чтение третьей ячейки блока памяти.
В момент времени вс осушествляется запись содержимого блоков памяти в файл. Рис. 4.18. Пример временной диаграммы работы устройства памяти пепсту в Пример использования подпрограмм в поведенческом моделировании При выполнении поведенческого моделирования в проект могут включаться объекты, предназначенные для отладки и контроля функционирования модели. Такие объекты не используются при синтезе и не включаются в физическую реализацию. Например, зто могут быть объекты — источники входных тестовых значений для основной модели.
Рассмотрим, как с использованием подпрограмм может быть создан источник входных значений, являюшихся натуральными числами и равномерно распределенных, согласно случайному закону, на некотором интервале. ЧНОЕ 93 не включает в себя функцию, возврашаюшую псевдослучайные числа. Рассмотрим один из вариантов написания такой функции.
год Глава 4 В настоящее время существует множество алгоритмов генерации случайных чисел. Рассмотрим один из алгоритмов работы генератора псевдослучайной последовательности. Пусть целью алгоритма является генерация случайных трехзначных чисел, равномерно распределенных в интервале от О до 999 включительно. В алгоритме используется два положительных нечетных целых числа, каждое их которых может принимать значения в интервале от О до 999.
Первое из этих чисел (в дальнейшем будем называть его ядром) не меняет своего значения на протяжении всего выполнения алгоритма, значение второго (в дальнейшем будем называть его множителем) меняется. Каждый раз, когда необходимо получить новое случайное число, значение множителя изменяется в соответствии с некоторой последовательностью. Генерация очередного псевдослучайного числа осуществляется следующим образом; ядро умножается на множитель, результатом чего является шестиразрядное целое, на основе которого определяется значение очередного псевдослучайного числа. Это произведение, в свою очередь, используется для получения нового значения множителя, которое будет применено для получения следующего псевдослучайного числа, Пусть, например, значение очередного псевдослучайного числа берется равным значению трех младших разрядов произведения, а значение множителя определяется равным значению 5 — 2 разрядов произведения.
Рассмотрим вариант реализации генератора псевдослучайных последовательностей на ЧНР).. Поместим его описание в пакете тепцов з (листинг 4.28). Собственно формирование случайного числа выполняется с использованием функции еапц з, которая имеет два параметра: ьаае — ядро и вша — множитель. Она возвращает значение типа ец Этот тип так же описан в пакете ~ап зст з и представляет собой вектор размерности 2. Первый его элемент используется для хранения результата (очередного случайного числа), второй — для хранения множителя, используемого при следующей операции получения случайного числа.
В пакете описана так же константа гез з ' ге (разрядность генерируемого случайного числа). Для получения очередного случайного числа переменной рт присваивается значение произведения ядра и множителя. Затем на базе рг в переменной геа формируется значение очередного псевдослучайного числа, для чего используется цикл, который выполняется три раза. Каждый раз определяется значение одного разряда результата — сначала третьего, затем второго, а затем первого.
Для этого используется вспомогательная функция вес роз я, которая имеет два параметра: и — целое число и рса — номер позиции (разряда). Функция возвращает значение указанного разряда десятичного представления числа и. Следующее значение множителя определяется аналогичным образом. Г)роеигироваиие иа Ис(Х 207 Такие функции могут быть использованы для создания объекта, предназначенного для тестирования моделей.