Совместное моделирование проектов в 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 должны появится входные и выходные порты:
- Нажимаем Ctrl-E для открытия диалога параметров модели. Идем на закладку Solver. Выбираем:
Type: Fixed-step, Solver: discrete(no continuous states) Tasking mode for periodic sample times: Single Tasking
- Закрываем диалог кнопкой Ok.
Теперь можно добавить необходимые блоки для создания входных воздействий, и запускать модель кнопкой Start Simulation.
Эксперементально было установлено что при остановке модели Simulink и повторном ее запуске, состояние модели в Questasim сбрасывается только внешним сигналом сброса. Поэтому если в xHDL модели присутствуют блоки которые сбрасываются однократно при инициализации, то они "залипнут" в предыдущем состоянии что может привести к неправильной работе модели при повторном запуске. Если такие блоки присутствуют то необходимо перед каждым запуском Simulink модели перезапускать моделирование в Questasim (Modelsim).
Ниже представлен небольшой видеоролик как это все работает.
- блог пользователя mks
- 16621 просмотр
Новые записи в блогах
- Устранение дребезга контактов на основе вертикальных счетчиков
- Диагностика Imprecise Bus Faults в микроконтроллерах Cortex-M3/M4/M4F
- Self-powered камера
- Фоновый модулятор: беспроводная связь из ничего (перевод)
- Texas Instruments Analog Applications Journal SLYT612 "Снижение искажений в аналоговых КМОП ключах" (перевод)
- USB MSD. Часть 6. Команды SCSI (перевод)
- USB MSD. Часть 3. USB класс накопителей данных (перевод)
- Texas Instruments Application Report SBAA042 "Кодовые схемы, используемые в аналогово-цифровых преобразователях" (перевод)
- 10 принципов правильного интерфейса
- Релиз SDK на русский микропроцессор КРОЛИК
Комментарии
Отправить комментарий