В этом примере приведены основные шаги настройки приложения HDL- Verifier™ с помощью Cosimulation Wizard.
Этот пример использует объект MATLAB System и ModelSim, чтобы проверить проект уровня передачи регистров (RTL) быстрого преобразования Фурье (FFT) размера 8, написанного в Verilog. БПФ обычно используется в цифровой обработке сигналов для создания частотного распределения сигнала.
Для проверки правильности этого БПФ предусмотрен тест объекта MATLAB System. Этот тестбенч генерирует периодический синусоидальный вход в тестируемый проект HDL (DUT) и строит графики коэффициентов Фурье в Комплексной Плоскости.
В качестве своего Cosimulation Wizard БПФ принимает предоставленный файл Verilog этого входа. Он также собирает вход, необходимый для настройки косимуляции на каждом шаге. В конце примера Cosimulation Wizard генерирует скрипт MATLAB, который создает экземпляры сконфигурированного Системного объекта HdlCosimulation, скрипта MATLAB, который компилирует HDL- проекта, и скрипта MATLAB, который запускает Симулятор HDL для косимуляции.
Чтобы убедиться, что другие могут получить доступ к копиям файлов примера, настройте папку для вашей собственной работы примера, следуя этим инструкциям:
A. Создайте папку вне возможностей установки MATLAB, в которую можно скопировать файлы примера. Папка должна быть доступной для записи. Этот пример предполагает, что вы создаете папку с именем 'MyTests'.
б. Скопируйте все файлы, расположенные в следующей директории, в созданную вами папку:
matlabroot\toolbox\edalink\foundation\hdllink\demo_src\tutorial_fft
c. Теперь у вас есть все файлы примера, которые вам нужны в рабочей директории:
fft_tb.m
fft_hdl.v
fft_hdl_tc.v
a. Запуск MATLAB.
б. Установите директорию, созданный вами в Set Up Example Files, в качестве текущей директории в MATLAB.
c. В командной строке MATLAB введите следующее:
>>cosimWizard
Команда запускает Cosimulation Wizard.
На странице Тип косимуляции выполните следующие шаги:
A. Измените HDL-косимуляцию с набором опций на MATLAB System Object.
б. Если вы используете ModelSim, измените опцию Симулятор HDL на ModelSim.
c. Оставьте значение по умолчанию опции Используйте Симулятор HDL исполняемые файлы в системном пути, опции если Симуляторы HDL исполняемые файлы появляются в вашем системном пути. Если этот исполняемый файл не отображается в пути, задайте Симулятор HDL путь.
d. Нажмите кнопку Далее, чтобы перейти на страницу Файлов HDL.
На странице Файлов HDL выполните следующие шаги:
A. Добавить файлов HDL в список файлов:
Нажмите Add и выберите файлы Verilog fft_hdl.v и fft_hdl_tc.v в папке примера.
Проверьте файлы в списке, чтобы убедиться, что тип файла правильно определен.
б. Нажмите кнопку Далее, чтобы перейти на страницу компиляции HDL.
В Cosimulation Wizard перечислены команды по умолчанию в окне Compilation Commands. Вам не нужно изменять эти команды для этого примера.
Нажмите кнопку Далее. На консоли MATLAB отображается журнал компиляции. Если ошибка возникает во время компиляции, эта ошибка появляется в области Status. Исправьте ошибку перед переходом к следующему шагу.
На странице HDL-модулей выполните следующие шаги:
A. Укажите имя модуля/объекта HDL для косимуляции. В раскрывающемся списке выберите fft_hdl. Этот модуль является модулем Verilog, который вы используете для косимуляции. Если вы не видите «fft_hdl» в раскрывающемся списке, можно ввести имя файла вручную.
б. В поле опции удалите опцию -novopt, чтобы ModelSim мог оптимизировать проект.
c. Нажмите Next. Cosimulation Wizard запускает Симулятор HDL в фоновой консоли с помощью заданного HDL-модуля и опций симуляции. Если мастер успешно запускает Симулятор HDL, мастер заполняет порты входа и выхода на fft_hdl модели Verilog и отображает их на следующем шаге.
На этом шаге Cosimulation Wizard отображает две таблицы, содержащие входные и выходные порты fft_hdl, соответственно.
Этот Cosimulation Wizard пытается правильно идентифицировать тип порта для каждого порта. Если мастер неправильно определяет порт, можно изменить тип порта с помощью этих таблиц.
Для входных портов можно выбрать из Clock, Reset, вход или Unused. HDL Verifier соединяет только входные порты, отмеченные как «Input», с MATLAB во время косимуляции.
HDL Verifier соединяет выходные порты с пометкой Output with MATLAB во время косимуляции. Программное обеспечение ссылки и MATLAB игнорируют те порты выхода, отмеченные как "Неиспользованный во время косимуляции.
Изменить параметры для сигналов, обозначенных как «Часы» и «Сброс», можно на более позднем шаге.
Примите типы портов по умолчанию и нажмите кнопку Далее, чтобы перейти на страницу Выхода Port Details.
В данном примере выходы БПФ подписаны, 13 битов длиной с 9 битами длины дроби. На странице «Сведения о выходе» выполните следующие шаги:
A. Обратите внимание, что Шаг расчета не может быть изменен и всегда фиксируется на 1 с помощью Системного объекта HdlCosimulation.
б. Измените тип данных на Signed для обоих выходов.
c. Измените длину дроби на 9 для обоих выходов.
c. Нажмите кнопку «Далее», чтобы перейти на страницу «Часы/сброс сведений».
Установите тактовый интервал (ns) равным 20. Из кода Verilog вы знаете, что сброс является синхронным, и активное значение равно 1. Вы можете сбросить весь HDL проект в момент 1 нс, вызванный поднимающимся фронтом часов. Используйте длительность 15 нс для сигнала сброса. На странице Clock/Reset Details выполните следующие шаги:
A. Установите тактовый период равным 20.
б. Оставьте или установите активное ребро в Rising.
c. Оставьте или установите начальное значение сброса равным 1.
d. Установите длительность сигнала сброса равную 15.
Нажмите кнопку Далее (Next), чтобы перейти на страницу Начало выравнивания по времени (Start Time Alignment).
На странице Start Time Alignment отображается график для форм сигналов синхронизации и сброса. На Cosimulation Wizard показано время HDL для начала косимуляции с красной линией. Время запуска также является временем, в которое Системный объект получает первый вход выборки от Симулятора HDL. Активное ребро часов является восходящим ребром. Таким образом, в момент 20 нс в симуляторе HDL зарегистрированный выход БПФ является стабильным. Никаких условий гонки не существует, и время по умолчанию HDL для начала косимуляции (20 нс) верно.
Нажмите кнопку Далее, чтобы перейти к разделу Генерация системных объектов.
О. Прежде чем Cosimulation Wizard сгенерирует скрипты, у вас есть опция изменить период дискретизации Симулятора HDL. Период дискретизации определяет истекшее время в Симулятор HDL, разделяющем каждый вызов на шаг в MATLAB. Большую часть времени период дискретизации равен периоду синхроимпульса. Можно также задать, основаны ли ваши входы/выходные параметры на системе координат (вместо основанных на выборке).
б. Нажмите кнопку Готово, чтобы завершить сеанс Cosimulation Wizard.
В данном примере вы фактически не создаете испытательного стенда. Вместо этого можно найти готовый скрипт, fft_tb.m в директории, созданном в Set Up Example Files.
A. После нажатия кнопки Конца в Cosimulation Wizard приложение генерирует три HDL- файлов в текущей директории:
compile_hdl_design_fft_hdl.m: Чтобы перекомпилировать HDL- проекта
launch_hdl_simulator_fft_hdl.m: Чтобы перезапустить сервер объектов MATLAB System и запустить симулятор HDL.
hdlcosim_fft_hdl.m: Чтобы создать объект HdlCosimulation System
б. Откройте файлы fft_tb.m и hdlcosim_fft_hdl.m, расположенные в директории, созданном вами в Set Up Example Files, и наблюдайте за вызовами объекта HdlCosimulation System. hdlcosim_fft_hdl.m содержит экземпляр HdlCosimulation и fft_tb.m содержит тестовый стенд объекта MATLAB System. Вы будете использовать этот испытательный стенд, чтобы проверить проект HDL, для которого вы только что сгенерировали соответствующий объект HdlCosimulation System.
a. Запуск Симулятора HDL путем выполнения launch_hdl_simulator_fft_hdl.m скрипта.
>>launch_hdl_simulator_fft_hdl.m
б. Когда симулятор HDL будет готов, вернитесь к MATLAB и запустите симуляцию, выполнив fft_tb.m скрипта.
>>fft_tb.m
c. Проверьте результат из графика на испытательном стенде. На графике отображаются коэффициенты Фурье в комплексной плоскости.
На этом завершается Cosimulation Wizard использования с MATLAB Системного объекта примером.