Запуск с Simulink HDL-косимуляцией

В этом примере приведены основные шаги для настройки приложения HDL- Verifier™ с помощью Cosimulation Wizard в среде Simulink ®.

Cosimulation Wizard представляет собой графический пользовательский интерфейс (GUI), который направляет вас через процесс настройки косимуляции между MATLAB ® или Simulink ® и симулятором Hardware Description Language (HDL).

В этом примере вы используете Simulink и ModelSim ®, чтобы проверить проект приподнятого косинусоидного фильтра, написанный в Verilog. Фильтр приподнятого косинуса обычно используется в качестве импульсного формирующего фильтра в системах цифровой связи. Он не создает межсимвольных помех (ISI) для входа модулированных импульсов.

Чтобы проверить функциональность этого фильтра приподнятого косинуса, предусмотрен Simulink testbench. Этот тестбенч генерирует входы тестируемого проекта HDL (DUT) и строит графики форм сигналов как входных, так и выходов.

В качестве входных данных Cosimulation Wizard принимает предоставленный файл Верилога этого приподнятого косинусоидного фильтра. Он также собирает вход, необходимый для настройки косимуляции на каждом шаге. В конце примера Cosimulation Wizard генерирует блок Simulink, который представляет проекту HDL в модели Simulink, скрипт MATLAB, который компилирует проект HDL, и скрипт MATLAB, который запускает Симулятор HDL для косимуляции. Во время симуляции можно наблюдать вход и выходные формы волны этого HDL-фильтра в Simulink.

Требования и необходимые условия

Эти продукты требуются для этого примера.

  • Один из следующих поддерживаемых HDL-симуляторов: Mentor Graphics ® ModelSim ®/QuestaSim ® или Cadence ® Incisive ®/Xcelium ®

Запуск Cosimulation Wizard

Чтобы запустить Cosimulation Wizard из модели, выберите вкладку Приложения на панели инструментов Simulink и нажмите HDL Verifier. Это действие добавляет вкладку HDL Verifier к панели инструментов Simulink. Затем в разделе Mode выберите HDL Cosimulation. Щелкните Импорт файлов в разделе Генерация блока Cosim.

Сконфигурируйте HDL-блок косимуляции с помощью Cosimulation Wizard

На странице Тип косимуляции выполните следующие шаги:

  1. Если вы используете ModelSim или Questa, оставьте опцию Симулятор HDL следующим ModelSim. Если вы используете Incisive или Xcelium, измените опцию Симулятор HDL на Inicisve.

  2. Оставьте опцию по умолчанию Использовать Симулятор HDL исполняемые файлы в системном пути, если Симуляторы HDL исполняемые файлы появляются в вашем системном пути. Если этот исполняемый файл не отображается в пути, нажмите кнопку Browse, чтобы указать местоположение этих исполняемых файлов.

Нажмите кнопку Далее, чтобы перейти на страницу Файлов HDL.

На странице Файлов HDL выполните следующие шаги:

  1. Нажмите Add и выберите один из rcostflt_rtl.v для Verilog или rcosflt_rtl.vhd для VHDL.

  2. Проверьте файл в списке файлов с типом файла, указанным как вы ожидали.

Нажмите кнопку Далее, чтобы перейти на страницу компиляции HDL.

На странице компиляции HDL Cosimulation Wizard отображает команды по умолчанию в окне Команды компиляции. Вам не нужно изменять эти команды для этого руководства.

При запуске Cosimulation Wizard с собственным кодом можно добавить или изменить команды компиляции в этом окне.

Нажмите кнопку Далее, чтобы перейти к панели HDL-модулей. Это, в свою очередь, вызовет компиляцию. На консоли MATLAB отображается журнал компиляции. Если ошибка возникает во время компиляции, эта ошибка появляется в области Status.

На панели Опции симуляции (Simulation Options) выполните следующие шаги:

  1. Укажите имя модуля/объекта HDL для косимуляции. В раскрывающемся списке выберите rcosflt_rtl. Этот модуль является модулем Verilog/VHDL, который вы используете для косимуляции. Если вы не видите rcosflt_rtl в раскрывающемся списке можно ввести имя файла вручную.

  2. Для метода Connection выберите Shared Memory если политика межсетевого экрана не разрешает обмен данными между сокетами TCP/IP.

Нажмите кнопку Далее, чтобы перейти к панели Порты Simulink. Cosimulation Wizard запускает Симулятор HDL в фоновой консоли с помощью заданного HDL-модуля и опций симуляции. После запуска Симулятора HDL мастер заполняет порты входа и выхода в модуле Verilog/VHDL rcosflt_rtl и отобразит их на следующем шаге.

На шаге «Задать типы портов» Cosimulation Wizard отображает две таблицы, содержащие входные и выходные порты rcostflt_rtl, соответственно.

Этот Cosimulation Wizard пытается идентифицировать тип порта для каждого порта. Если мастер неправильно определяет порт, можно изменить тип порта с помощью этих таблиц.

  1. Для входных портов можно выбрать из Clock, Reset, Input, или Unused. HDL Verifier соединяет только отмеченные входные порты Inputs для Simulink во время косимуляции.

  2. HDL Verifier соединяет выходные порты, отмеченные Output с Simulink во время косимуляции. Мастер и Simulink игнорируют отмеченные выходные порты Unused во время косимуляции.

  3. Можно изменить параметры для сигналов, идентифицированных как Clock и Reset на более позднем шаге.

Примите типы портов по умолчанию и нажмите кнопку Далее, чтобы перейти на страницу Выхода Port Details.

На странице «Сведения о выходе» выполните следующие шаги:

  1. Установите шаг расчета filter_out на -1 наследование посредством обратного распространения.

  2. Из кода Verilog видно, что Cosimulation Wizard представляет выход в sfix34_En29 формат. Измените следующие поля:

  • Тип данных для Fixedpoint

  • Знак к Signed

  • Длина дроби в 29

Нажмите кнопку Далее, чтобы перейти на страницу Информация о часах/сбросе.

В данном примере установите значение периода времени (ns) равным 20. Из кода Verilog вы знаете, что сброс является синхронным, и активное значение равно 1. Вы можете сбросить весь HDL проект в момент 1 нс, вызванный поднимающимся фронтом часов. Используйте длительность 15 нс для сигнала сброса.

На странице Часы/Сброс выполните следующие шаги:

  1. Установите модуль измерения времени HDL в ns.

  2. Установите тактовый период равным 20.

  3. Оставьте или установите активное ребро равным Rising.

  4. Оставьте или установите начальное значение сброса равным 1.

  5. Установите длительность сигнала сброса равную 15.

Нажмите кнопку Далее (Next), чтобы перейти на страницу Начало выравнивания по времени (Start Time Alignment).

На странице Start Time Alignment отображается график для форм сигналов синхронизации и сброса. На Cosimulation Wizard показано время HDL для начала косимуляции с красной линией. Время запуска также является временем, в которое Simulink получает первый вход выборки от Симулятора HDL.

На странице Start Time Alignment установите выравнивание. Активное ребро наших часов - это приподнимающееся ребро. Таким образом, в 20 нс в симуляторе HDL зарегистрированный выход фильтра приподнятого косинуса является стабильным. Никаких условий гонки не существует, и время по умолчанию HDL для начала косимуляции (20 нс) - это то, что мы хотим для этой симуляции. Вам не нужно вносить какие-либо изменения во время запуска.

Нажмите кнопку Далее, чтобы перейти к разделу Генерация блоков.

Прежде чем вы сгенерируете блок HDL Cosimulation, у вас есть опция определить шкалу времени до завершения Cosimulation Wizard. Также можно поручить HDL Verifier вычислить шкалу времени позже. Вычисление шкалы времени программным обеспечением верификации происходит после того, как вы соединяете все входные/выходные порты сгенерированного блока HDL Cosimulation и запускаете симуляцию.

На странице Генерация оставьте Automatically definition timescale at start of simulation selected (по умолчанию). Позже у вас будет возможность просмотреть вычисленный временной масштаб и изменить это значение перед симуляцией.

Нажмите кнопку Готово, чтобы завершить сеанс Cosimulation Wizard.

Создайте испытательный стенд для проверки проекта

В этом примере тестовая модель Simulink rcosflt_tb была предоставлена. После нажатия кнопки Готово (Finish) в Мастере косимуляции (Cosimulation Wizard) Simulink вставляет следующие элементы в центр полотна модели:

  • Блок HDL-косимуляции

  • Блок для перекомпиляции HDL- проекта (содержит ссылку на скрипт, который запускается двойным кликом по блоку)

  • Блок для запуска Симулятора HDL (содержит ссылку на скрипт, который запускается двойным кликом по блоку)

Поместите блок HDL Cosimulation так, чтобы блоки константы и преобразования линии как входы в блок HDL Cosimulation, и шина линий как выход. Соедините блоки. Ваша модель теперь выглядит так же, как и на следующем рисунке.

Запуск косимуляции и проверка HDL- Проекта

  1. Запустите Симулятор HDL, дважды кликнув по блоку с меткой Launch Симулятора HDL.

  2. Когда симулятор HDL будет готов, вернитесь в Simulink и запустите симуляцию.

  3. Определите шкалу времени. Напомним, что вы выбрали Автоматическое определение шкалы времени в начале симуляции опции на последней странице Cosimulation Wizard. При этом HDL Verifier запускает графический интерфейс Timescale Details вместо запуска симуляции. И Симулятор HDL, и Simulink определяют filter_in и filter_out порты на 1 секунду. Однако их шаги расчета в Симулятор HDL должны быть такими же, как и тактовый период (20 нс). Изменение шага расчета Simulink /rcosflt_rtl/clk до 1 (секунд) и нажмите Enter.Затем мастер обновляет таблицу. Следующий рисунок показывает новую шкалу времени: 1 секунда в Simulink соответствует 2e-008 с в симуляторе HDL.

Нажмите кнопку OK, чтобы закрыть диалоговое окно Timescale Details. Перезапустите симуляцию Simulink и проверьте результаты из возможностей в тестовой модели.

Область возможностей отображает как задержанную версию входа в фильтр приподнятого косинуса, так и выход этого фильтра. Если вы дискретизируете выход этого фильтра выхода непосредственно, межсимвольных помех не происходит.