В этом примере показано, как использовать импортированную спецификацию 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.
Требования, чтобы запустить этот пример:
MATLAB
Simulink
Simulink Coder
HDL Verifier
SystemC 2.3.1 (включает библиотеку TLM),
Примечание: Этот пример включает процедуру сборки генерации кода. Simulink не разрешает вам создавать программы в области установки MATLAB®. При необходимости превратитесь в рабочую директорию, которая не находится в области установки MATLAB до запуска никакой сборки.
Откройте модель FIR Filter с импортированным IPXact (с картой распределения памяти). В качестве альтернативы выполните следующую команду в окне команды MATLAB:
>> openTlmgDemoModel('ipxactmem');
Следующая модель открывается в Simulink.
Откройте файл IP-XACT, используемый этим примером в редакторе MATLAB. В качестве альтернативы выполните следующую команду в окне команды MATLAB:
>> openTlmgDemoIPXact('ipxactmem');
Файл IP-XACT открывается в редакторе MATLAB.
Представление архитектуры этого файла 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
Чтобы сконфигурировать эту модель для TLM-генерации, установите следующие опции в параметрах конфигурации.
a. В диалоговом окне Configuration Parameters выберите представление TLM Generator в левой панели.
b. Во вкладке TLM Mapping, при Отображении Сокета, выбирают Defined импортированным файлом IP-XACT.
c. Под Импортом Файл IP-XACT просмотрите к местоположению файла IP-XACT, как показано в следующем изображении.
d. (Необязательно), Если вы хотите сгенерировать код для регистров или битовых полей, которые не имеют соответствующего представления в модели Simulink, под Импортом Файл IP-XACT, выбирают код Generate для несопоставленных регистров/битовых полей IP-XACT.
В окне модели щелкните правой кнопкой по блоку DualFilter и выберите C/C ++ Code> Build This Subsystem. Во всплывающем окне нажимают Build. Эта опция запускает генерацию компонента TLM. Кроме того, можно выполнить следующую команду в окне команды MATLAB:
>> buildTlmgDemoModel('ipxactmem');
Генерация TLM завершается, когда следующее сообщение появляется в окне команды MATLAB:
### Starting Simulink Coder build procedure for model: DualFilter ### Successful completion of Simulink Coder build procedure for model: DualFilter
Представление архитектуры сгенерированного компонента TLM показывают ниже:
Откройте следующий файл в редакторе 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 в адресе LPF_COEF_1_ADDR.
В этом примере показано, как сгенерировать форму компонента TLM Simulink, основанный на модели на импортированной спецификации IP-XACT. Этот IP-XACT включает отображение порта Simulink в порт TLM, отображение параметра Simulink к регистру TLM и отображения входа Simulink к регистру TLM. Этот пример также демонстрирует, как исключить блок адреса (или регистр) из карты распределения памяти.