В этом руководстве приведены основные шаги для настройки приложения HDL- Verifier™, которое использует Simulink® и Симулятор HDL для проверки HDL- проекта, используя модель Simulink в качестве испытательного стенда. В этом руководстве вы выполняете шаги, чтобы косимулировать Simulink и Симулятор HDL, чтобы проверить простой фильтр приподнятого косинуса, написанный в Verilog®.
Примечание
Для этого руководства требуются Simulink, HDL Verifier, Fixed-Point Designer™ и ModelSim® или резьбовое® Симулятор HDL. В этом руководстве предполагается, что вы прочитали Import HDL Code для HDL Cosimulation Block.
В этом руководстве вы выполняете следующие шаги:
Чтобы помочь другим получить доступ к копиям обучающих файлов, настройте папку для вашей собственной учебной работы, следуя этим инструкциям:
Создайте папку вне возможностей MATLAB® папка установки, в которую можно скопировать файлы учебника. Папка должна быть доступной для записи. Это руководство предполагает, что вы создаете папку с именем MyTests
.
Скопируйте все файлы, расположенные в следующей директории, в созданную вами папку:
matlabroot\toolbox\edalink\foundation\hdllink\demo_src\tutorial
где matlabroot
- корневая директория MATLAB в вашей системе.
Теперь у вас есть все следующие файлы в рабочей директории, хотя, для этого руководства, вам понадобится только два из них:
filter_tb.v
(не используется для этого руководства)
mycallback_solution.m
(не используется для этого руководства)
rcosflt_beh.v
(не используется для этого руководства)
rcosflt_rtl.v
rcosflt_rtl.vhd
rcosflt_tb.mdl
Запустите MATLAB.
Установите директорию, созданный вами в Tutorial: Set Up Tutorial Files (Simulink), в качестве текущей директории в MATLAB.
В командной строке MATLAB введите следующее:
>>cosimWizard
Команда запускает Cosimulation Wizard.
В этом руководстве приведены следующие страницы мастера, призванные помочь вам в создании блока HDL Cosimulation.
На странице Тип косимуляции выполните следующие шаги:
Оставьте HDL cosimulation with опцию равной Simulink
.
Если вы используете ModelSim, оставьте HDL Simulator опцию следующим ModelSim
.
Если вы используете Incisive, измените HDL Simulator опции на Incisive
.
Оставьте опцию Use HDL simulator executables on the system path по умолчанию, если Симуляторы HDL исполняемые файлы появляются в вашем системном пути.
Если эти исполняемые файлы не появляются в пути, задайте путь к Симулятору HDL, как описано в Cosimulation Type - Блок Simulink.
Нажмите кнопку Next, чтобы перейти на страницу HDL- Файлов.
На странице Файлов HDL выполните следующие шаги:
Добавьте HDL-файлы в список файлов.
Нажмите Add и перейдите в директорию, созданный в Tutorial: Set Up Tutorial Files (Simulink).
Для Verilog выберите rcosflt_rtl.v
. Для VHDL®, выберите rcosflt_rtl.vhd
.
Проверьте файл в списке файлов с типом файла, указанным как вы ожидали.
Нажмите кнопку Next, чтобы перейти на страницу компиляции HDL.
В Cosimulation Wizard перечислены команды по умолчанию в окне Compilation Commands. Вам не нужно изменять эти команды для этого руководства.
При запуске Cosimulation Wizard с собственным кодом можно добавить или изменить команды компиляции в этом окне. Для примера можно добавить -vlog01compat
переключатель.
Пользователи ModelSim: Панель HDL-компиляции будет выглядеть аналогично той, которая представлена на этом рисунке:
Резкие пользователи: Ваша панель HDL компиляции будет выглядеть так же, как на следующем рисунке.
Нажмите кнопку Next, чтобы перейти к панели HDL-модулей.
На консоли MATLAB отображается журнал компиляции. Если ошибка возникает во время компиляции, эта ошибка появляется в области Status. Измените все параметры настройки, чтобы удалить ошибку перед переходом к следующему шагу.
На панели Опции симуляции (Simulation Options) выполните следующие шаги:
Укажите имя модуля/объекта HDL для косимуляции.
В раскрывающемся списке выберите rcosflt_rtl
. Этот модуль является модулем Verilog/VHDL, который вы используете для косимуляции.
Если вы не видите rcosflt_rtl
в раскрывающемся списке можно ввести имя файла вручную.
Для Connection method выберите Shared Memory
если политика межсетевого экрана не разрешает обмен данными между сокетами TCP/IP.
Опции симуляции теперь выглядят аналогично показанным на следующем рисунке.
Резкие пользователи: Ваши опции HDL-модуля выглядят аналогично следующему рисунку
Щелкните Next, чтобы перейти к панели Порты Simulink.
Cosimulation Wizard запускает Симулятор HDL в фоновой консоли с помощью заданного HDL-модуля и опций симуляции. После запуска Симулятора HDL мастер заполняет порты входа и выхода в модели Verilog/VHDL rcosflt_rtl
и отобразит их на следующем шаге.
На этом шаге Cosimulation Wizard отображает две таблицы, содержащие входные и выходные порты rcosflt_rtl
, соответственно.
Этот Cosimulation Wizard пытается идентифицировать тип порта для каждого порта. Если мастер неправильно определяет порт, можно изменить тип порта с помощью этих таблиц.
Для входных портов можно выбрать из Clock
, Reset
, Input
, или Unused
. HDL Verifier соединяет только отмеченные входные порты Input
для Simulink во время косимуляции.
HDL Verifier соединяет выходные порты, отмеченные Output
с Simulink во время косимуляции. Мастер и Simulink игнорируют отмеченные выходные порты Unused
во время косимуляции.
Можно изменить параметры для сигналов, идентифицированных как Clock
и Reset
на более позднем шаге.
Примите типы портов по умолчанию и щелкните Next, чтобы перейти на страницу Output Port Details.
На странице «Сведения о выходе» выполните следующие шаги:
Установите шаг расчета filter_out
в -1, чтобы наследовать через распространение назад.
Из кода Verilog видно, что Cosimulation Wizard представляет выход в S34,29 формате. Измените следующие поля:
Тип данных для Fixedpoint
Знак к Signed
Длина дроби в 29
. Теперь ваши результаты выглядят аналогично следующему изображению.
Нажмите кнопку Next, чтобы перейти на страницу Clock/Reset Details.
Для этого руководства установите Period (ns) часов на 20. Из кода Verilog вы знаете, что сброс является синхронным, и активное значение равно 1. Вы можете сбросить весь HDL проект в момент 1 нс, вызванный поднимающимся фронтом часов. Используйте длительность 15 нс для сигнала сброса.
На странице Clock/Reset Details выполните следующие шаги:
Установите тактовый период равным 20.
Оставьте или установите активное ребро равным Rising
.
Оставьте или установите начальное значение сброса равным 1.
Установите длительность сигнала сброса равную 15.
Теперь часы и сброс совпадают с сигналами, показанными на следующем рисунке.
Нажмите кнопку Next, чтобы перейти на страницу Start Time Alignment.
На странице Start Time Alignment отображается график для форм сигналов синхронизации и сброса. На Cosimulation Wizard показано время HDL для начала косимуляции с красной линией. Время запуска также является временем, в которое Simulink получает первый вход выборки от Симулятора HDL.
Установите или подтвердите выравнивание по времени начала
Активное ребро наших часов - это приподнимающееся ребро. Таким образом, в 20 нс в симуляторе HDL зарегистрированный выход фильтра приподнятого косинуса является стабильным. Никаких условий гонки не существует, и время по умолчанию HDL для начала косимуляции (20 нс) - это то, что мы хотим для этой симуляции. Вам не нужно вносить какие-либо изменения во время запуска.
Щелкните Next, чтобы перейти к генерации блоков.
Прежде чем вы сгенерируете блок HDL Cosimulation, у вас есть опция определить шкалу времени до завершения Cosimulation Wizard. Также можно поручить HDL Verifier вычислить шкалу времени позже. Вычисление шкалы времени программным обеспечением верификации происходит после того, как вы соединяете все входные/выходные порты сгенерированного HDL Cosimulation блока и запускаете симуляцию.
Оставьте Automatically determine timescale at start of simulation выбранным (по умолчанию). Позже у вас будет возможность просмотреть вычисленный временной масштаб и изменить это значение перед началом симуляции.
Нажмите кнопку Finish, чтобы завершить сеанс Cosimulation Wizard.
Для этого руководства вы фактически не создаете испытательного стенда. Вместо этого можно найти готовую модель (rcosflt_tb.mdl
) в директории, созданном в Tutorial: Set Up Tutorial Files (Simulink).
После нажатия кнопки Finish в Cosimulation Wizard Simulink создает модель и заполняет ее следующими элементами:
Блок HDL Cosimulation
Блок для перекомпиляции HDL- проекта (содержит ссылку на скрипт, который запускается двойным кликом по блоку)
Блок для запуска Симулятора HDL (содержит ссылку на скрипт, который запускается двойным кликом по блоку)
Оставьте модель на данный момент и перейдите к следующему шагу.
Откройте файл rcosflt_tb
, находится в директории, созданном вами в Tutorial: Set Up Tutorial Files (Simulink).
Этот файл содержит модель испытательного стенда Simulink. Вы будете использовать этот испытательный стенд, чтобы проверить проект HDL, для которого вы только что сгенерировали соответствующий блок HDL Cosimulation.
Добавьте блок HDL Cosimulation к тестовой модели следующим образом:
Скопируйте блок HDL Cosimulation из только что сгенерированной модели в эту тестовую модель.
Поместите блок так, чтобы блоки константы и преобразования линии так входы, чтобы блок HDL Cosimulation, и шина линий вверх, как вывод.
Соедините блоки в испытательный стенд с блоком HDL Cosimulation.
Скопируйте блоки скриптов в область под испытательным стендом. Ваша модель теперь выглядит так же, как и на следующем рисунке.
Сохраните модель.
Запустите Симулятор HDL, дважды кликнув по маркированному Launch HDL Simulator блоку.
Когда симулятор HDL будет готов, вернитесь в Simulink и запустите симуляцию.
Определите шкалу времени.
Следует напомнить, что Automatically determine timescale at start of simulation опция был выбран на последней странице Cosimulation Wizard. Поскольку вы это сделали, HDL Verifier запускает GUI Timescale Details вместо запуска симуляции.
И Симулятор HDL, и Simulink определяют filter_in
и filter_out
порты на 1 секунду. Однако их шаги расчета в Симулятор HDL должны быть такими же, как и тактовый период (2 нс).
Изменение шага расчета Simulink /rcosflt_rtl/filter_in
на 1
(секунд) и нажмите Enter.Затем мастер обновляет таблицу. Следующий рисунок показывает новую шкалу времени: 1 секунда в Simulink соответствует 2e-008 с в симуляторе HDL.
Нажмите кнопку OK, чтобы выйти из окна Timescale Details.
Перезапустите симуляцию.
Проверьте результат из возможностей в тестовой модели. Область возможностей отображает как задержанную версию входа в фильтр приподнятого косинуса, так и выход этого фильтра. Если вы дискретизируете выход этого выхода фильтра непосредственно, межсимвольная интерференция не происходит
Этот шаг завершает Cosimulation Wizard для использования с руководством Simulink.