В этом примере показано, как использовать импортированную спецификацию 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 согласно файлу спецификации IP-XACT. В этом конкретном примере файл IP-XACT задал один сокет tlm без карты распределения памяти для входных параметров/выхода модели Simulink и один сокет без карты распределения памяти для настраиваемых параметров. Входные параметры модели Simulink связаны с уникальным регистром записи, и выходные параметры связаны с уникальным регистром чтения в первом сокете tlm. Настраиваемые параметры связаны с уникальным регистром чтения-записи во втором сокете tlm. Когда создано с этой опцией, сгенерированный компонент TLM может использоваться в виртуальной платформе (VP) в качестве автономного компонента в испытательном стенде, или как прямой связанный модуль совместной обработки, или это могло быть присоединено к каналу связи с помощью адаптера.
В данном примере мы используем модель Simulink КИХ-фильтра как базис для генерации SystemC/TLM.
Требования, чтобы запустить этот пример:
SystemC 2.3.1 (включает библиотеку TLM),
Примечание: пример включает процедуру сборки генерации кода. Simulink не разрешает вам создавать программы в области установки MATLAB®. При необходимости превратитесь в рабочую директорию, которая не находится в области установки MATLAB до запуска никакой сборки.
Чтобы открыть модель FIR Filter с импортированным IPXact (без карты распределения памяти), нажмите кнопку Open Model.
Следующая модель открывается в Simulink.
Откройте файл IP-XACT, используемый этим примером в редакторе MATLAB. В качестве альтернативы выполните следующую команду в окне команды MATLAB:
>> open('tlmgdemo_ipxactnomem.xml');
Файл IP-XACT открывается в редакторе MATLAB.
С редактором MATLAB найдите следующие строки кода (MWMapInput, MWMapOutput). Эти линии представляют КИХ-отображение ввода и вывода Фильтра на сокете Inout TLM (представленный интерфейсом шины в IPXact).
Точно так же следующие строки кода (MWMapParam) представляют КИХ-отображение параметра Фильтра на Config сокет TLM.
a. В диалоговом окне Configuration Parameters выберите представление TLM Generator в левой панели.
b. Во вкладке TLM Mapping, при Отображении Сокета, выбирают Defined импортированным файлом IP-XACT.
c. Под Импортом Файл IP-XACT просмотрите к местоположению файла IP-XACT, как показано в следующем изображении.
Установите остающиеся опции Генерации TLM согласно своим настройкам (или оставьте значения по умолчанию, как они), и нажмите ОК, чтобы применить эти настройки и выйти из диалогового окна Configuration Parameters.
В окне модели щелкните правой кнопкой по блоку DualFilter и выберите C/C ++ Code> Generate Code для этой Подсистемы. Эта опция запускает генерацию компонента TLM. Кроме того, можно выполнить следующую команду в окне команды MATLAB:
>> slbuild('tlmgdemo_ipxactnomem/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 8.9726s
Откройте следующий файл в редакторе MATLAB:
DualFilter_VP/DualFilter_ipxactnomem_tlm/include/DualFilter_ipxactnomem_tlm_def.h
Используя редактор MATLAB, найдите следующие строки кода. Эти линии представляют определения ввода и вывода КИХ-Фильтра, когда сгенерировано как компонент TLM без карты распределения памяти.
Чтобы обеспечить набор входных параметров к сгенерированному компоненту TLM, инициатор TLM должен отправить записи транзакцию TLM без адреса в сокете InOut и с полезной нагрузкой, содержащей данную величину типа InOut_IN_BANK_T.
Чтобы получить набор выходных параметров от сгенерированного компонента TLM, инициатор TLM должен отправить чтению транзакцию TLM без адреса в сокете InOut и с полезной нагрузкой, содержащей данную величину типа InOut_OUT_BANK_T.
Чтобы изменить сгенерированный настраиваемый параметр компонента TLM, инициатор TLM должен отправить записи транзакцию TLM без адреса в сокете Config и с полезной нагрузкой, содержащей данную величину типа DualFilter_Config_PARAM_BANK_T.