Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







И функциональное моделирование





 

9. Вызвать контекстное меню окна "Workspace", щелкнув правой кнопкой мыши в его свободном поле (рис. А.6). Выбрать в этом меню команду "Add to Project\ New File…" ("Добавить в Проект\ Новый Файл …"). В появившемся окне "Create Project File" повторить действия по п. 4, введя имя файла, например "t_*", где * - имя конструкторского файла на языке Verilog (для приведенного выше примера – "t_z_not").

10. Выполнить пп. 6 и 7 для испытательного файла. Его содержание для приведенного выше инвертора может быть, например, таким.

 

module t_z_not; //испытат. модуль testbench для модуля инвертора z_not

reg ina; //вход для тестирующего сигнала, должен быть типа reg

wire outa; //выходная линия для контроля работы устройства

reg times; //вход для задания момента времени смены характера

//тестирующего сигнала

z_not gg1(ina,outa); //объявление экземпляра модуля z_not с именем

//gg1, подключение к входу модуля тести-

//рующего сигнала ina и к выходу модуля

//контрольной линии outa

initial //включение однократно исполняемого блока initial

begin //начало блока

ina = 0; //задание начального значения входн. сигн.

times = 1'b0; //задание начал. знач. управл. однобитного сигнала

#2 ina = 1'b1; //изменен. через 2 единицы времени вх. сигнала на 1

#2 ina = 1'b0; //изменен. через 2 ед. времени вх. сигнала на 0

#2 ina = 1'b1; //изменен. через 2 ед. времени вх. сигнала на 1

#2 ina = 1'b0; //изменен. через 2 ед. времени вх. сигнала на 0

#2 times = 1'b1; //изменен. на 10-й ед. времени управ. сигн. на 1

end //завершение блока моделирования initial

always //включение непрерывно повторяемого блока always

//(начинает работ. одновременно с блоком initial)

begin //начало блока

#5 if (times) //анализ сост. times (через 5 ед.времени)

ina = ~ina; //если times == 1, то инвертирование ina

end //завершение блока

initial //включение еще одного блока initial (начинает работ.

//одновременно с предыд. блоками)

#50 $stop; //остановка моделирования на 50-й ед. времени

endmodule //окончание testbench

 

Листинг А.2. Пример содержания испытательного файла (testbench) – "t_z_not.v"

для модуля инвертора

 

11. Включить компиляцию испытательного файла (см. п. 9) и в случае необходимости устранить синтаксические ошибки. В процессе работы над проектом, в случае если изменения производились сразу в нескольких файлах, при компиляции можно выбирать команду "Compile\ Compile All" ("Компилировать\ Компилировать все файлы").

 

Рис. А.7. Окно параметров моделирования

 

12. Загрузить компилированные модули из библиотеки проекта (work) в симулятор (VSIM), для чего выполнить команду главного меню "Simulate\ Start Simulation…" ("Моделировать\ Начало моделирования…"). В появившемся окне (рис. А.7) "Start Simulation" на закладке "Design" ("Проект") в списке библиотек найти имя "work" и, щелкнув по расположенному слева от имени квадрату со знаком "+", открыть список модулей библиотеки. Выбрать с помощью мыши строку с испытательным модулем – имя модуля, предваряемое именем библиотеки, появится в расположенном ниже текстовом поле "Design Unit(s)" ["Модул(и) Проекта"]. В расположенном справа списке ввода "Resolution" ["Разрешение (по времени)"] выбрать желаемую единицу времени для моделирования, например "ps" ("одна пикосекунда"). Щелкнуть по кнопке "Ok" ("Исполнить").

 

Рис. А.8. Меню добавления сигналов в окно временных диаграмм ("Wave")

 

13. Ввести в окно вывода временных диаграмм "Wave" ["Волна (о форме сигнала)"], для этого, щелкнув правой кнопкой мыши в появившемся в центре экрана окне "Objects" ("Объекты"), вызвать контекстное меню этого окна (рис. А.8) и в нем выбрать команду "Add\ To Wave\ All items in region" ("Добавить \В окно Wave\ Все объекты из выбранной области"). В правой части экрана в окне рабочих файлов появится окно "Wave" с занесенными в его список объектами проекта – портами, соединительными линиями и т.п. Слева у многоразрядных объектов будет расположен квадрат со знаком "+", щелкнув по которому, можно развернуть объект и увидеть все его одноразрядные элементы.

14. Пользуясь инструментом "Run Length" ("Продолжительность моделирования") на панели инструментов, установить подходящий промежуток времени однократного моделирования после запуска. Его желательно выбирать несколько большим, чем максимальное время формирования испытательных сигналов в испытательном файле. Подходящим вариантом является установленная по умолчанию величина "100 ps" ("100 пикосекунд").

 

 

Рис. А.9. Меню запуска моделирования и инструменты "Run Length" и "Zoom In"

 

15. Пользуясь инструментом "Zoom In" ("Увеличить") установить необходимый предел на оси времени окна Wave, например 100 ps.

16. Запустить моделирование в течение выбранного в п. 15 промежутка времени, для этого выполнить команду главного меню (рис. А.9) "Simulate\ Run \ Run 100" ("Моделирование\ Запуск\ Запустить на установленный промежуток времени"). На закладке "Wave" в окне рабочих файлов напротив имен входных портов и линий появятся сформированные в испытательном файле сигналы, а напротив выходных портов и линий – сигналы, сформированные в результате моделирования.

Если требуется внести изменения в какие-либо входные сигналы, это можно сделать для очередного запуска на выбранный промежуток времени, не изменяя содержимого испытательного файла, а с помощью команд среды. Для этого в окне "Wave" в поле для имен сигналов необходимо щелкнуть правой кнопкой мыши по имени интересующего сигнала и в появившемся контекстном меню выбрать:

- "Force" ("Принудительно") – для установки нового требуемого постоянного значения сигнала;

- "NoForce" ("Без Воздействия") – для сохранения прежнего значения сигнала;

- "Clock" ("Синхросигнал") – для формирования сигнала в виде прямоугольных импульсов.

При выборе команды "Force …" появляется окно "Force Selected Signal" ("Задать значение Выбранному сигналу"), в котором в поле "Value" ("Значение") следует ввести требуемое значение. Для входных сигналов, присваиваемых переменным типа reg, в поле "Kind" ("Способ задания") можно использовать только первый вариант – "Freeze" ("Неизменный"). В поле "Delay For:" ("с Задержкой До") можно ввести величину задержки в единицах времени, по прошествии которой после запуска моделирования произойдет установка сигнала в указанное значение.

При выборе команды "Clock …" появляется окно "Define Clock" ("Определить параметры синхросигнала"), в котором можно:

- в поле "Offset" ("Смещение") установить задержку начала синхроимпульсов относительно начала выбранного промежутка времени моделирования (не более половины периода синхросигнала);

- в поле "Duty" ("Скважность") установить скважность импульсов в процентах;

- в поле "Period" ("Период") установить период импульсов;

- в поле "Cancel" ("Отменить") установить момент времени, в который последовательность синхроимпульсов перестанет вырабатываться;

- в поле "First Edge" ("Первый Фронт") активизация кнопки "Rising" ("Возрастающий") обеспечивает начало синхроимпульсов с положительного фронта, а кнопки "Falling" ("Падающий") – с отрицательного фронта.

При необходимости измерения положения фронтов сигналов на диаграммах можно воспользоваться вертикальным курсором, который появляется в нужном месте временных диаграмм при щелчке мыши. Курсор можно произвольно перемещать с помощью мыши, а также устанавливать на фронт выделенного сигнала (сигналов), расположенный слева от курсора, с помощью инструмента "Find Previous Transition" ("Найти Предыдущий фронт"), на фронт справа от курсора - с помощью инструмента "Find Next Transition" ("Найти Следующий Фронт").

Для измерения временного интервала между двумя фронтами необходимо использовать два курсора. Для создания второго (третьего, и т. д.) курсора необходимо щелкнуть правой кнопкой мыши в нижней части поля временных диаграмм, под временной шкалой. В появившемся контекстном меню следует выбрать команду "New Cursor" ("Новый Курсор").

При наличии нескольких курсоров перемещение от фронта к фронту с помощью инструментов (см. выше) реализуется только для выделенного курсора, изображаемого в виде жирной линии. Выделение курсора можно осуществить щелчком мыши по нему или с помощью команды "Activate Cursor N" ("Активизировать Курсор N") контекстного меню, вызываемого щелчком правой кнопки мыши по рамке с указанием времени под интересующим курсором (N – номер курсора).

При необходимости любой курсор можно "привязать" к определенной точке на диаграмме, выполнив команду "Lock Cursor N" ("Фиксировать Курсор N") контекстного меню этого курсора, а также удалить курсор, выполнив команду "Delete Cursor N" ("Удалить Курсор N").







Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом...

Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.