Никакая опция карты распределения памяти

Этот пример подсвечивает использование никакой опции карты распределения памяти, когда вы генерируете компонент SystemC™/TLM из модели Simulink® использование цели tlmgenerator или для Simulink Coder или для Embedded Coder™.

В Simulink каждый ввод или вывод блока связан "точка-точка" с другим блоком. В SystemC/TLM каждый компонент связывается через сокет TLM. Этот сокет обрабатывает все поступление и исходящую коммуникацию, отформатированную в транзакциях TLM. Поскольку каждая система обрабатывает коммуникацию по-другому, мы должны задать коммуникационный интерфейс для компонента SystemC/TLM, когда это сгенерировано из модели Simulink. В зависимости от надлежащего использования этого компонента SystemC/TLM этот коммуникационный интерфейс мог потребовать создания карты распределения памяти (или адрес) для каждого ввода/вывода в компоненте. Эта карта распределения памяти может быть простой или подробной.

Никакая опция карты распределения памяти не генерирует компонент TLM только с одним чтением и одним регистром записи ни без какого адреса. Входные параметры модели Simulink связаны с регистром записи, и выходные параметры связаны с регистром чтения. Когда создано с этой опцией, сгенерированный компонент TLM мог использоваться в виртуальной платформе (VP) в качестве автономного компонента в испытательном стенде как прямой связанный модуль совместной обработки, или это могло быть присоединено к каналу связи с помощью адаптера.

Для этого примера мы используем модель Simulink КИХ-фильтра как основание генерации SystemC/TLM.

Требования, чтобы запустить этот пример:

  • MATLAB

  • Simulink

  • Simulink Coder

  • HDL Verifier

  • SystemC 2.3.1 (включает библиотеку TLM),

Примечание: пример включает процедуру сборки генерации кода. Simulink не разрешает вам создавать программы в области установки MATLAB. При необходимости изменитесь на рабочую директорию, которая не находится в области установки MATLAB до запуска никакой сборки.

1. Откройте предварительно сконфигурированную модель

Откройте модель FIR Filter без карты распределения памяти, или в окне команды MATLAB выполнитесь:

  >> openTlmgDemoModel('nomem');

Следующая модель открывается в Simulink.

2. Установите опцию ни на какую карту распределения памяти

В диалоговом окне Configuration Parameters выберите представление TLM Generator в левой панели. Во вкладке TLM Mapping, при Отображении Сокета, избранное То объединенный сокет TLM для входных данных, выходных данных и управления. Под Объединенным Сокетом TLM выберите No memory map, как показано в следующем изображении.

3. Установите другие опции

Установите остающиеся опции Генерации TLM согласно своим настройкам (или оставьте значения по умолчанию, как они), и нажмите ОК, чтобы применить эти настройки и выйти из диалогового окна Configuration Parameters.

4. Создайте модель

В окне модели щелкните правой кнопкой по блоку DualFilter и выберите C/C ++ Code> Generate Code для этой Подсистемы в контекстном меню, чтобы запустить генерацию компонента TLM. Или можно выполнить следующую команду в окне команды MATLAB:

  >> buildTlmgDemoModel('nomem');

Генерация завершается, когда следующее сообщение появляется в окне команды MATLAB:

### Starting Simulink Coder build procedure for model: DualFilter
### Successful completion of Simulink Coder build procedure for model: DualFilter

5. Откройте сгенерированные файлы

Откройте следующий файл в редакторе MATLAB:

6. Наблюдайте сгенерированный код

Найдите следующие строки кода. Эти строки представляют определения ввода и вывода КИХ-Фильтра, когда сгенерировано как компонент TLM без карты распределения памяти.

Чтобы обеспечить набор входа к сгенерированному компоненту TLM, инициатор TLM должен отправить записи транзакцию TLM без адреса и с полезной нагрузкой, содержащей данную величину типа DualFilter_in_reg_T.

Чтобы получить набор вывода от сгенерированного компонента TLM, инициатор TLM должен отправить чтению транзакцию TLM без адреса и с полезной нагрузкой, содержащей данную величину типа DualFilter_out_reg_T.