Импортированный IP-XACT с картой распределения памяти

В этом примере показано, как использовать импортированную спецификацию 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 КИХ-фильтра как базис для SystemC или генерации TLM.

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

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

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

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

Чтобы открыть модель FIR Filter с импортированным IPXact (с картой распределения памяти), нажмите кнопку Open Model.

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

2. Откройте файл IP-XACT

Откройте файл IP-XACT, используемый этим примером в редакторе MATLAB. В качестве альтернативы выполните следующую команду в окне команды MATLAB:

  >> open('tlmgdemo_ipxactmem.xml');

Файл IP-XACT открывается в редакторе MATLAB.

3. Исследуйте файл IP-XACT

Представление архитектуры этого файла IP-XACT и соответствующей модели Simulink показывают ниже. Этот IP-XACT содержит компонент DualFilter, который имеет два в портах (LPF_input и LPHPF_input), два порты (LPF_output и LPHPF_output), и один интерфейс шины (PROCESSOR_BUS). Они в и порты сопоставлены с вводами и выводами модели DualFilter, соответственно. Интерфейс шины (PROCESSOR_BUS) содержит карту распределения памяти (DualFilter_MEM_MAP). В карте распределения памяти существует три блока адреса (LP_FILTER_BANK, LPHP_FILTER_BANK и EXCLUDED_BANK). LP_FILTER_BANK содержит регистры, которые сопоставлены с содействующими параметрами фильтра LP в модели Simulink. LPHP_FILTER_BANK содержит регистры, которые сопоставлены с содействующими входными параметрами фильтра LPHP в модели Simulink. EXCLUDED_BANK является дополнительным банком регистра, который не имеет соответствующего представления в модели Simulink.

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

Точно так же этот раздел (MWMapOutput) указывает, что модель Simulink выход LPF_output сопоставлена с компонентом TLM порт LPF_output.

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

Этот раздел (MWMapParam) представляет отображение параметра фильтра LP LPF_coef_1, чтобы указать LPF_COEF_1.

Этот раздел (MWMapInput) представляет входное отображение coef_1 фильтра LPHP, чтобы указать LPHPF_COEF_1.

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

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

4. Установите опции параметра конфигурации

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

a. В диалоговом окне Configuration Parameters выберите представление TLM Generator в левой панели.

b. Во вкладке TLM Mapping, при Отображении Сокета, выбирают Defined импортированным файлом IP-XACT.

c. Под Импортом Файл IP-XACT просмотрите к местоположению файла IP-XACT, как показано в следующем изображении.

d. (Необязательно), Если вы хотите сгенерировать код для регистров/битовых полей, которые не имеют соответствующего представления в модели Simulink, под Импортом Файл IP-XACT, выбирают код Generate для несопоставленных регистров/битовых полей IP-XACT.

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

В окне модели щелкните правой кнопкой по блоку DualFilter и выберите C/C ++ Code> Build This Subsystem. Во всплывающем окне нажимают Build. Эта опция запускает генерацию компонента 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 10.516s

Представление архитектуры сгенерированного компонента TLM показывают ниже:

6. Исследуйте сгенерированный код

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

DualFilter_VP/DualFilter_ipxactmem_tlm/include/DualFilter_ipxactmem_tlm.h

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

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

DualFilter_VP/DualFilter_ipxactmem_tlm/include/DualFilter_ipxactmem_tlm_def.h

Этот раздел показывает таблицу адресов фильтра LP и содействующих регистров фильтра LPHP, как задано в файле IP-XACT.

Чтобы изменить сгенерированный регистр TLM LPF_COEF_1, инициатор TLM должен отправить транзакцию TLM в адресе LP_FILTER_BANK_ADDR + LPF_COEF_1_ADDR.

7. Заключение

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