В этом примере показано, как использовать импортированную спецификацию IP-XACT с картой памяти при создании компонента SystemC™ или моделирования уровня транзакций (TLM) из модели Simulink ® с целью tlmgenerator. Цель tlmgenerator можно использовать для Simulink Coder™ или Embedded Coder™.
В Simulink каждый блок ввода или вывода привязывается точка-точка к другому блоку. В SystemC или TLM каждый компонент взаимодействует через сокет TLM. Этот сокет обрабатывает все входящие и исходящие сообщения, отформатированные как транзакции TLM. Поскольку каждая система обрабатывает связь по-разному, необходимо определить интерфейс связи для компонента SystemC или TLM при его создании на основе модели Simulink. В зависимости от предполагаемого использования этого компонента SystemC или TLM, этот коммуникационный интерфейс может потребовать построения карты памяти для каждого входа или выхода в компоненте. Эта карта памяти может быть простой, подробной или импортированной из файла спецификации IP-XACT.
Опция импорта IP-XACT создает компонент TLM из модели Simulink в соответствии с файлом спецификации IP-XACT. В этом примере файл IP-XACT указывает один сокет tlm с картой памяти для настраиваемых параметров. Каждый параметр привязан к соответствующему регистру чтения или записи в этом сокете tlm. Используйте сгенерированный компонент TLM в виртуальной платформе (VP) в качестве автономного компонента на испытательном стенде или подключите его к каналу связи.
В этом примере используется модель Simulink фильтра FIR в качестве основы для генерации SystemC или TLM.
Требования к выполнению этого примера:
SystemC 2.3.1 (включает библиотеку TLM)
Примечание.Этот пример включает в себя процедуру создания кода. Simulink не позволяет создавать программы в области установки MATLAB ®. При необходимости перед запуском сборки перейдите в рабочую папку, которая отсутствует в области установки MATLAB.
Чтобы открыть модель FIR-фильтра с импортированным IPXact (с картой памяти), нажмите кнопку «Открыть модель».
Следующая модель откроется в Simulink.

Откройте файл IP-XACT, используемый в этом примере, в редакторе MATLAB. Либо выполните следующую команду в окне команд MATLAB:
>> open('tlmgdemo_ipxactmem.xml');Файл IP-XACT открывается в редакторе MATLAB.
Ниже показано представление архитектуры этого файла IP-XACT и соответствующая модель Simulink. Этот IP-XACT содержит компонент DureFilter, который имеет два порта (LPF_input и LPHPF_input), два исходящих порта (LPF_output и LPHPF_output) и один интерфейс шины (PROCESSOR_BUS). Эти входные и выходные порты сопоставляются с входами и выходами модели DureFilter соответственно. Интерфейс шины (PROCESSOR_BUS) содержит карту памяти (DualFilter_MEM_MAP). Внутри карты памяти имеется три блока адресов (LP_FILTER_BANK, LPHP_FILTER_BANK и EXCLUDED_BANK). LP_FILTER_BANK содержит регистры, которые сопоставляются с параметрами коэффициента фильтрации ЛП в модели Simulink. LPHP_FILTER_BANK содержит регистры, которые отображаются на входы коэффициентов фильтра LPHP в модели Simulink. EXCLUDED_BANK является дополнительным банком регистров, который не имеет соответствующего представления в модели Simulink.

В этом разделе (MWMapInput) указывается, что входной LPF_input модели Simulink сопоставлен с компонентом TLM в порту LPF_input.

Аналогично, этот раздел (MWMapOutput) указывает, что выходной LPF_output модели Simulink сопоставляется с LPF_output выходного порта компонента TLM.

Этот раздел (MWMap) указывает, что интерфейс шины PROCESSOR_BUS сопоставлен с сокетом TLM. Этот интерфейс шины содержит карту памяти с именем DualFilter_MEM_MAP.

Этот раздел (MWMapParam) представляет отображение параметра фильтра ЛП, LPF_coef_1 для регистрации LPF_COEF_1.

Этот раздел (MWMapInput) представляет сопоставление входных coef_1 фильтра LPHP для регистрации LPHPF_COEF_1.

Если вы не хотите создавать код для конкретного блока адреса или регистра из карты памяти, установите значение MWMap равным false для блока адреса или регистра. В этом разделе (MWMap) показано, как исключить блок адресов с именем EXCLUDED_BANK из генерации кода TLM

Аналогично, в этом разделе (MWMap) показано, как исключить регистр с именем EXCLUDED_REG_1 из генерации кода TLM

Чтобы настроить эту модель для генерации TLM, задайте следующие параметры в параметрах конфигурации.
О. В диалоговом окне «Параметры конфигурации» выберите вид «Генератор TLM» на левой панели.
b. На вкладке Сопоставление TLM в разделе Сопоставление сокетов выберите Определено импортированным файлом IP-XACT.
c. В разделе Импорт файла IP-XACT перейдите к местоположению файла IP-XACT, как показано на следующем рисунке.
d. (Необязательно) Если требуется создать код для регистров/битовых полей, которые не имеют соответствующего представления в модели Simulink, в разделе Импорт файла IP-XACT выберите Создать код для несопоставленных регистров/битовых полей IP-XACT.

В окне модели щелкните правой кнопкой мыши блок «Фильтр» и выберите «C/C + + Code > Build This Subsystem». Во всплывающем окне щелкните Сборка. Эта опция запускает создание компонента TLM. В качестве альтернативы в окне команд MATLAB можно выполнить следующую команду:
>> slbuild('tlmgdemo_ipxactmem/DualFilter');Формирование TLM завершается при появлении в окне команды 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 9.3185s
Вид архитектуры сгенерированного компонента TLM показан ниже:

Откройте следующий файл в редакторе MATLAB:
DualFilter_VP/DualFilter_ipxactmem_tlm/include/DualFilter_ipxactmem_tlm.h
Этот раздел представляет отображение входов и выходов фильтра FIR на сгенерированный компонент TLM в портах и выходах соответственно.

Откройте следующий файл в редакторе MATLAB:
DualFilter_VP/DualFilter_ipxactmem_tlm/include/DualFilter_ipxactmem_tlm_def.h
В этом разделе показана карта адресов фильтров ЛП и регистров коэффициентов ЛПХП, как указано в файле IP-XACT.

Чтобы изменить сгенерированный регистр TLM LPF_COEF_1, инициатор TLM должен отправить транзакцию TLM по адресу LP_FILTER_BANK_ADDR + LPF_COEF_1_ADDR.
В этом примере показано, как создать компонент TLM из модели Simulink на основе импортированной спецификации IP-XACT. Этот IP-XACT включает в себя отображение порта Simulink на порт TLM, отображение параметра Simulink на регистр TLM и отображение входа Simulink на регистр TLM. В этом примере также показано, как исключить блок адреса (или регистр) из карты памяти.