Совместное моделирование проектов в Modelsim (Qusestasim) и Simulink

Некоторое время назад мне пришлось много заниматся разработкой систем ЦОС на ПЛИС. В часности разроботкой и отладкой модемов. Хорошим инструментов для "обкатки" алгоритмов, и самое главное динамической визуализации поведения, является Simulink, который входит в состав Matlab. Simulink позволяет создать модель системы высокого уровня и настроить ее параметры согласно предпологаемым режимам работы. После переноса системы на какойнибуть из языков HDL, встает вопрос соответствия эталонной модели. И вот сдесь очень удобным является совместное моделирование системы реализованой в Simulink и в ПЛИС. В данной заметке я раскажу как это можно сделать.

Итак эксперементы будем проводить над такими версиями ПО:

  • Matlab 2006b (7.3.0) с установленым Link for modelsim
  • QuestaSim 6.4c

Далее по шагам что необходимо сделать для успешного запуска:

  • Скомпилировать проект который хотим прогнать совместно с Simulink в рабочую библиотеку Questasim.
  • Запустить моделирование в Questasim командой:

vsim -foreign {simlinkserver d:/matlab/toolbox/modelsim/win32/simulinklink.dll} work.top

Предпологается что Matlab установлен в папку d:/matlab.

  • Открываем новую модель Simulink и добавляем на нее компонент HDL Cosimulation, из папкм Link for modelsim, браузера моделей simulink.
  • На закладке Connection указываем тип соединения Shared Memory, после этого на закладке Ports можно использовать кнопку Auto Fill которая позволяет автоматически получить список портов модуля. Если как в команде приведеной выше имя верхнего модуля top, то достаточно в окне вбить строку /top/ и нажать кнопку Ok. После этого должен появится список всех портов ввода-вывода модуля top.
  • На закладке Clocks добавляем тактовые входы (с закладки Ports их необходимо убрать), указываем необходимые значения тактовых частот, а на закладке Timescale соотношения тактовых частот модели simulink и HDL модуля.
  • Закрывем диалог настройки кнопкой Ok. После этого у блока HDL Cosimulation должны появится входные и выходные порты:

 Modelsim

  • Нажимаем Ctrl-E для открытия диалога параметров модели. Идем на закладку Solver. Выбираем:
Type: Fixed-step,   Solver: discrete(no continuous states)
Tasking mode for periodic sample times: Single Tasking
  • Закрываем диалог кнопкой Ok.

Config parameters

Теперь можно добавить необходимые блоки для создания входных воздействий, и запускать модель кнопкой Start Simulation.

Final model

Эксперементально было установлено что при остановке модели Simulink и повторном ее запуске, состояние модели в Questasim сбрасывается только внешним сигналом сброса. Поэтому если в xHDL модели присутствуют блоки которые сбрасываются однократно при инициализации, то они "залипнут" в предыдущем состоянии что может привести к неправильной работе модели при повторном запуске. Если такие блоки присутствуют то необходимо перед каждым запуском Simulink модели перезапускать моделирование в Questasim (Modelsim).

Ниже представлен небольшой видеоролик как это все работает.

PreviewAttachmentSize
simulinkmodelsim.avi2.57 MB

Comments

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Syntax highlight code surrounded by the {syntaxhighlighter SPEC}...{/syntaxhighlighter} tags, where SPEC is a Syntaxhighlighter options string or "class="OPTIONS" title="the title".
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <p> <span> <s> <strike> <div> <h1> <h2> <h3> <h4> <h5> <h6> <img> <map> <area> <hr> <br> <br /> <ul> <ol> <li> <dl> <dt> <dd> <table> <caption> <tbody> <tr> <td> <em> <b> <u> <i> <strong> <del> <ins> <sub> <sup> <quote> <blockquote> <pre> <address> <code> <cite> <embed> <object> <param> <strike>
  • Use to create page breaks.

More information about formatting options