В этом примере показано, как использовать импортированную спецификацию 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.
Чтобы открыть модель конечной импульсной характеристики с импортированным IPXact (с картой памяти), нажмите кнопку «Открыть модель».
Следующая модель откроется в Simulink.
Откройте файл IP-XACT, используемый в этом примере, в редакторе MATLAB. Также выполните следующую команду в командном окне MATLAB:
>> open('tlmgdemo_ipxactmem.xml');
Файл 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 содержит регистры, которые преобразуются в параметры коэффициента фильтра НД в модели Simulink. LPHP_FILTER_BANK содержит регистры, которые сопоставлены с коэффициентом LPHP-фильтра, входами в модели Simulink. EXCLUDED_BANK - дополнительный банк регистров, который не имеет соответствующего представления в модели Simulink.
Этот раздел (MWMapInput) указывает, что входная LPF_input модели Simulink сопоставлена с компонентом TLM в LPF_input портов.
Аналогично, этот раздел (MWMapOutput) указывает, что выходная LPF_output модели Simulink сопоставлена с выходным портом компонента TLM LPF_output.
В этом разделе (MWMap) указывается, что PROCESSOR_BUS интерфейса шины сопоставлена с разъемом TLM. Этот интерфейс шины содержит карту памяти с именем DualFilter_MEM_MAP.
Этот раздел (MWMapParam) представляет отображению параметра LP, LPF_coef_1 для регистрации LPF_COEF_1.
Этот раздел (MWMapInput) представляет входной параметр LPHP coef_1 отображения для регистрации LPHPF_COEF_1.
Если вы не хотите генерировать код для определенного адресного блока или зарегистрироваться из карты памяти, установите MWMap равным false для адресного блока или регистра. В этом разделе (MWMap) показано, как исключить адресный блок с именем EXCLUDED_BANK из генерации кода TLM
Точно так же в этом разделе (MWMap) показано, как исключить регистр с именем EXCLUDED_REG_1 из генерации кода TLM
Чтобы сконфигурировать эту модель для генерации TLM, установите следующие опции в параметрах конфигурации.
а. В диалоговом окне Параметров конфигурации выберите вид генератора TLM в левой панели.
б. На вкладке TLM Mapping, в разделе Socket Mapping, выберите Defined by imported IP-XACT file.
c. В разделе Импорт файла IP-XACT выберите местоположение файла IP-XACT, как показано на следующем изображении.
d. (Необязательно) Если вы хотите сгенерировать код для регистров/битовых полей, которые не имеют соответствующего представления в модели Simulink, в разделе Импорт файла IP-XACT выберите Сгенерировать код для несопоставленных регистров/битовых полей IP-XACT.
В окне модели щелкните правой кнопкой мыши по блоку DualFilter и выберите C/C + + код > 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 9.3185s
Представление архитектуры сгенерированного компонента 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.
Чтобы изменить сгенерированные LPF_COEF_1 регистров TLM, инициатор TLM должен отправить транзакцию TLM по адресу LP_FILTER_BANK_ADDR + LPF_COEF_1_ADDR.
В этом примере показано, как сгенерировать компонент TLM из модели Simulink на основе импортированной спецификации IP-XACT. Этот IP-XACT включает в себя отображение порта Simulink к порту TLM, отображение параметра Simulink к регистру TLM и отображение входа Simulink к регистру TLM. Этот пример также демонстрирует, как исключить адресный блок (или регистр) из карты памяти.