exponenta event banner

Временные шкалы: абсолютные, относительные и автоматические

Этот пример иллюстрирует различные настройки шкалы времени в блоке Cosimulation HDL и объясняет, как они влияют на отношения синхронизации Simulink ® и имитатора HDL. Мы используем простую модель проверки четности Verilog, чтобы показать взаимосвязь синхронизации Simulink и имитатора HDL (ModelSim ® или Incisive ®), используемого для косимуляции.

Введение

Модель иллюстрирует косимуляцию реализации HDL простого средства контроля четности и демонстрирует различные опции, доступные на панели «Временные шкалы» блока косимуляции HDL. На этой панели время симулятора связано с временем симулятора ЛПВП в абсолютном или относительном смысле. Можно задать связь явно или автоматически выбрать связь в любом режиме на основе знаний о конструкциях Simulink и HDL.

Открытие модели Simulink

При использовании ModelSim или QuestaSim parity_check_mq.slx модели должен быть открыт. При использовании Insive или Xcelium закройте модель ModelSim и откройте parity_check_in.slx модели.

% For ModelSim:
modelName = 'parity_check_mq';
open_system(modelName);
% For Incisive:
modelName = 'parity_check_in';
open_system(modelName);

Код Verilog, используемый для косимуляции

Проверка четности - это способ добавления бита четности в поток данных, чтобы проверить эти данные на наличие ошибок. В этом примере мы будем использовать схему «четного бита четности», в которой бит четности установлен в 1, если количество единиц в данном наборе битов нечетно (делая общее количество единиц, включая бит четности, четным).

Мы выбираем вход в средство контроля четности как 8 бит и выводим как 1 бит. В этом примере используется код Verilog paritychecker.v.

Подготовка модели для косимуляции

Для ознакомления с различными шагами этого примера мы предоставили нумерованные шаги, которые вы можете выполнить. За каждым пронумерованным шагом следует краткое его объяснение.

1. Запуск ModelSim/Incisive

Перед запуском модели необходимо запустить имитатор ЛПВП. Используйте для этого команду запуска, предоставленную в модели, или выполните команду, специфичную для симулятора. При этом разрешение имитатора HDL также устанавливается равным 1ns.

Для Modelsim/Questasim:

vsim('tclstart', paritycmds('1ns'));

Для резца/кселия:

nclaunch('tclstart', paritycmds_in('1ns'));

2. Соблюдать настройки на панели «Порты» блока Cosimulation HDL

Дважды щелкните блок косимуляции HDL, чтобы отредактировать параметры косимуляции. Выберите панель «Порты».

  • Время выборки выходного сигнала устанавливается в Ts - это частота дискретизации модели. Существует множество способов задания значения Ts. Мы установили Ts из обратного вызова PreLoadFcn модели (см. Создание обратных вызовов модели (Simulink)). Также можно задать значение Ts в базовом рабочем пространстве в командной строке MATLAB ®.

  • Обратите внимание, что была проверена возможность прямого прохождения - это потому, что наш код Verilog является чисто комбинационным.

Эта модель настроена для работы в трех режимах синхронизации: Абсолютный (Absolute), Относительный (Relative) и Автоматическая шкала времени (Auto Timescale). Для получения дополнительной информации об этих режимах см. раздел Руководство пользователя Simulation Timescales.

Абсолютная шкала времени

Режим абсолютной синхронизации позволяет определить зависимость синхронизации между Simulink и имитатором HDL в единицах абсолютного времени и масштабном коэффициенте.

3. Щелкните аннотацию Абсолютный режим (Absolute Mode) в модели, чтобы задать следующее.

  • Время выборки Ts = 10

  • Установите для панели «Timescales» блока Cosimulation HDL значение «1s in Simulink соответствует 1n в имитаторе HDL»

Или вызовите следующую функцию:

paritytimescale('absolute');

В этом случае абсолютными единицами времени являются «ns», а масштабным коэффициентом - «1».

4. Запустить модель

Форма сигнала имитатора ЛПВП показывает прогон моделирования для 100 нс, в то время как область применения Simulink показывает, как модель работала для 100-х годов. Это ожидается для настройки шкалы времени 1 в Simulink = 1ns в имитаторе ЛПВП.

Относительная шкала времени

Относительный режим синхронизации позволяет определить отношение синхронизации между Simulink и имитатором HDL в относительных терминах, то есть по мере того, как некоторое количество имитаторов HDL засечено.

5. Щелкните аннотацию Относительный режим (Relative Mode) в модели, чтобы задать следующее.

  • Время выборки Ts = 10

  • Установите для панели Timescales блока Cosimulation HDL значение «1s in Simulink соответствует 1 галочке в имитаторе HDL»:

paritytimescale('relative');

В этом случае единицами времени являются деления имитатора ЛПВП, а масштабный коэффициент равен «1».

6. Перезапустите моделирование HDL.

Для ModelSim: можно вызвать перезапуск из имитатора HDL.

vsim> restart

Для Incisive: Сначала закройте все окна имитатора HDL и перезапустите симулятор.

nclaunch('tclstart',paritycmds_in('1ns'));

7. Запустить модель

Форма сигнала имитатора ЛПВП показывает прогон моделирования для 100 нс, в то время как область применения Simulink показывает, как модель работала для 100-х годов. Это ожидается для параметра Timescale, равного 1 s в Simulink = 1 Tick в имитаторе HDL (и разрешение симулятора равно 1ns). Полученные формы сигналов аналогичны тем, которые мы получили в режиме абсолютной временной шкалы.

8. Изменение разрешения имитатора ЛПВП

Теперь мы увидим эффект изменения разрешения имитатора HDL на 1ps. Закройте все окна имитатора HDL и перезапустите его, используя разрешение по шкале времени 1 пс.

Для Modelsim/Questasim:

vsim('tclstart',paritycmds('1ps'));

Для резца/кселия:

nclaunch('tclstart',paritycmds_in('1ps'));

Запустите модель Simulink для тех же 10 образцов. Имитатор ЛПВП работает в течение 100 с, так как в Simulink = 1 галочка в имитаторе ЛПВП для шкалы времени установлено значение 1 с.

Автоматическая шкала времени

На панели Шкала времени (Timescales) блока Cosimulation ЛПВП кнопка Определить шкалу времени (Define Timescale Now) вычисляет отношение времени между Simulink и имитатором ЛПВП. Обратите внимание, что ссылка должна найти разрешение имитатора ЛПВП, и, следовательно, вы должны будете включить и запустить имитатор ЛПВП.

Перезапустите имитатор ЛПВП, используя разрешение 1ns

Сначала закройте все открытые окна имитатора ЛПВП. Затем:

Для ModelSim:

vsim('tclstart',paritycmds('1ns'));

Для резцового:

nclaunch('tclstart',paritycmds_in('1ns'));

Когда программное обеспечение линии связи позволяет определить отношение синхронизации, оно пытается установить коэффициент шкалы времени между имитатором HDL и Simulink как можно ближе к 1 секунде в имитаторе HDL = 1 секунде в Simulink (режим абсолютной шкалы времени). Если этот параметр невозможен, средство проверки HDL пытается установить скорость передачи сигнала в модельном порту Simulink на минимально возможное количество отметок имитатора HDL (режим относительной шкалы времени).

Теперь мы будем использовать автоматическую шкалу времени в модели, как показано на следующем шаге:

9. Нажмите кнопку Определить шкалу времени в области Шкала времени

Это предложит установить шкалу времени «1 s in Simulink = 1e-10 s в имитаторе ЛПВП». Появится информационная панель:

Программа HDL Verifier попыталась сначала установить 1:1 шкалу времени, но не смогла сделать это, так как разрешение имитатора HDL установлено в 1ns, и представление Ts = 10 секунд составило бы 10e9 делений, что больше допустимого предела 2 ^ 31 - 1 (= 2 .1475e9). Число 2 ^ 31 - 1 является максимальным значением для параметра int32.

Как только верификатор HDL не может установить абсолютную временную шкалу 1:1, он переключается в режим относительной временной шкалы, в котором он приравнивает основное время выборки (Ts = 10 с) к 1 отметке HDL. Следовательно, 10s в Simulink будет соответствовать 1 отметке HDL, то есть 1s в Simulink соответствует 0.1 отметке в имитаторе HDL.

Примените изменения, предложенные блоком косимуляции HDL.

11. Запустить модель

Формы сигналов в имитаторе ЛПВП и из объема Simulink показаны ниже. Обратите внимание, как имитатор ЛПВП проходит через 10n, в то время как модель Simulink работает в течение 100 с:

Важно понимать, почему программа HDL Verifier не выбрала сопоставление 1:1. Если установить для параметра Timescales значение «1s in Simulink соответствует 1s в симуляторе HDL», применить это изменение и запустить модель, Simulink выдаст следующую ошибку:

12. Установить время иррациональной выборки (Ts = pi * 1e-9)

При использовании нерационального времени выборки в Simulink, например, Ts = pi * 1e-9, автоматическая шкала времени не сможет поддерживать точную взаимосвязь между моделированием Simulink и временем моделирования HDL. В этом случае, хотя результаты косимуляции верны, временные оси области видимости Simulink и имитатора HDL не будут иметь отношения 1:1.

13. Установить шкалу времени «1 s in Simulink = 1 s in HDL simulator»

Чтобы понять, почему связь 1:1 невозможна, установите для параметра Timescale значение '1s in Simulink = 1s in HDL simulator' и запустите модель (после перезапуска моделирования в HDL simulator). Зависимость синхронизации 1:1 в этом случае невозможна, так как pi является иррациональным числом и не является интегральным кратным 1ns (разрешение имитатора ЛПВП). Simulink выдаст сообщение об ошибке в этом случае, как показано на следующем рисунке:

Примечание.При каждом изменении параметров шкалы времени в блоке косимуляции ЛПВП необходимо перезапустить прогон моделирования в симуляторе ЛПВП.