exponenta event banner

Параметр карты памяти отсутствует

В этом примере показано использование опции карты без памяти при создании компонента SystemC™/TLM из модели Simulink ® с использованием цели tlmgenerator для Simulink Coder или Embedded Coder™.

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

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

В этом примере используется модель Simulink фильтра FIR в качестве основы для генерации SystemC/TLM.

Требования к выполнению этого примера:

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

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

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

Чтобы открыть модель FIR-фильтра без карты памяти, нажмите кнопку «Открыть модель».

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

2. Установите для параметра значение «Нет карты памяти»

В диалоговом окне «Параметры конфигурации» выберите вид «Генератор TLM» на левой панели. На вкладке TLM Mapping в разделе Socket Mapping выберите One combined TLM socket для ввода данных, вывода данных и управления. В разделе Комбинированный сокет TLM выберите Нет карты памяти, как показано на следующем рисунке.

3. Задать другие параметры

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

4. Построение модели

В окне модели щелкните правой кнопкой мыши блок DireFilter и выберите в контекстном меню пункт C/C + + Code > Generate Code for this Subsystem, чтобы начать генерацию компонента TLM. Также в окне команд MATLAB можно выполнить следующую команду:

  >> slbuild('tlmgdemo_nomem/DualFilter');

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

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

Build Summary

Top model targets built:

Model       Action          Rebuild Reason                                    
==============================================================================
DualFilter  Code generated  Code generation information file does not exist.  

1 of 1 models built (0 models already up to date)
Build duration: 0h 0m 8.3743s

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

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

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

Найдите следующие строки кода. Эти строки представляют входные и выходные определения фильтра FIR при формировании в качестве компонента TLM без карты памяти.

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

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