В этом примере показано, как сгенерировать компонент SystemVerilog DPI для программируемого генератора квадратной волны, написанного в MATLAB ®, и экспортировать его в HDL-симулятор.
В демонстрационных целях этот пример использует Modelsim ® 10.3c в 64-разрядной Windows ® 7. Однако эта же процедура может быть легко реплицирована для других систем и симуляторов.
Продукты, необходимые для этого примера:
MATLAB Coder™
Симуляторы: Mentor Graphics ® ModelSim ®/QuestaSim ® или Cadence ® Incisive
Один из поддерживаемых компиляторов C: Microsoft ® Visual C++ или GNU GCC
Код MATLAB, используемый в этом примере, демонстрирует простой программируемый генератор квадратной волны. Этот пример также предоставляет испытательный стенд MATLAB, который реализует проект.
Проект: ProgSWGenerator
Испытательный стенд: ProgSWGenerator_tb
Следующее изображение иллюстрирует компонент DPI, который генерируется в этом примере:
'On _ time' и 'Off _ time' управляют коэффициентом заполнения выходного сигнала.
Для примера, если On_time=1 и Off_time=1, сгенерированная квадратная волна будет иметь 50% коэффициент заполнения.
Чтобы убедиться, что нет ошибок времени выполнения и что проект соответствует требованиям, моделируйте проект с помощью поставляемого теста перед генерацией кода. Введите следующую команду в MATLAB:
ProgSWGenerator_tb
Он должен построить рисунок ниже:
Обратите внимание, что график показывает выходной сигнал, который был запрограммирован на поведение следующим образом:
Тактовые частоты < 100: on = 1, off = 1
100 < Тактовые частоты < 250: on = 2, off = 1
250 < Тактовые частоты: on = 1, off = 2
Используя DPIGEN, сгенерируйте компонент DPI.
Выполните команду DPIGEN в MATLAB следующим образом:
dpigen -testbench ProgSWGenerator_tb ProgSWGenerator -args {0,0}
Создается следующая структура директорий:
dpi_tb: Папка, в которой находятся все связанные с testbench файлы.
ProgSWGenerator_dpi.sv: Сгенерированный компонент DPI.
ProgSWGenerator_dpi_pkg.sv: Сгенерированный пакет SystemVerilog.
libProgSWGenerator_dpi.dll: Библиотека, содержащая определения всех импортированных функций.
Примечание.DPIGEN автоматически попытается скомпилировать библиотеку. В порядок, чтобы просто сгенерировать файлы без компиляции, вам следует использовать опцию -c. Для примера:
dpigen -c -testbench ProgSWGenerator_tb ProgSWGenerator -args {0,0}
Для ModelSim/QuestaSim выполните следующие шаги:
Запустите ModelSim/QuestaSim в режиме GUI.
В Симулятор HDL смените текущую директорию на «dpi_tb» в директории генерации кода.
Введите следующую команду, чтобы начать симуляцию
do run_tb_mq.do
Для примера:
Генерируется следующая волновая форма:
Обратите внимание, что выходная волна (нижняя) ведет себя точно так же, как сигнал, который был нанесен в тестовом наборе MATLAB.
Для симулятора Incisive и VCS:
Запустите интерпретатор терминала
Измените текущую директорию на «dpi_tb» в директории генерации кода
В поле Incisive введите следующую команду в интерпретаторе.
sh run_tb_incisive.sh
Для VCS введите следующую команду в вашем интерпретаторе.
sh run_tb_vcs.sh
Когда симуляция завершится, вы увидите следующий текст, напечатанный на консоли:
**************TEST COMPLETED (PASSED)**************
На этом завершается пример «Начало работы с генерацией компонентов DPI SystemVerilog на основе MATLAB».