Автоматическая карта памяти с опцией индивидуального адреса

В этом примере подчеркивается использование автоматической карты памяти с опцией индивидуального адреса, когда вы генерируете компонент SystemC™/TLM из модели Simulink ® с помощью цели tlmgenerator для Simulink Coder или Embedded Coder™.

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

Автоматически сгенерированная карта памяти с опцией индивидуального адреса генерирует компонент TLM с одним регистром чтения на выход модели и записывает регистр на вход модели с отдельными адресами. Каждый вход модели Simulink привязан к его соответствующему регистру записи, и каждый выход связан с его соответствующим регистром чтения. При создании с помощью этой опции сгенерированный компонент TLM может использоваться в виртуальной платформе (VP) как автономный компонент в испытательный стенд или может быть присоединен к каналу связи.

В данном примере мы используем модель Simulink конечной импульсной характеристики в качестве базиса генерации SystemC/TLM.

Требования для запуска этого примера:

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

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

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

Чтобы открыть модель конечной импульсной характеристики с автоматически сгенерированной картой памяти с индивидуальным адресом, нажмите кнопку «Открыть модель».

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

2. Установите Опцию на автоматическую карту памяти с индивидуальным адресом

В диалоговом окне Параметров конфигурации выберите вид Генерации TLM на левой панели. На вкладке TLM Mapping, в разделе Socket Mapping, выберите One combined TLM socket для входных данных, выходных данных и управления. В разделе Комбинированный разъем TLM выберите Автоматически сгенерированную карту памяти и Индивидуальные смещения входного и выходного адреса, как показано на следующем изображении.

3. Установите другие опции

Установите оставшиеся опции генерации TLM в соответствии с вашими настройками (или оставьте значения по умолчанию такими, какие они есть) и нажмите OK, чтобы применить эти настройки и выйти из диалогового окна Параметров конфигурации.

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

В окне модели щелкните правой кнопкой мыши по блоку DualFilter и выберите C/C + + код > Generate Code для этой Подсистемы в контекстном меню, чтобы запустить генерацию TLM-компонента. Также можно выполнить следующую команду в командном окне MATLAB:

  >> slbuild('tlmgdemo_aimem/DualFilter');

Генерация завершается, когда в командном окне 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 15.979s

5. Откройте сгенерированные файлы

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

6. Наблюдайте за сгенерированным кодом

Найдите следующие строки кода. Эти линии представляют вход и выходные определения фильтра конечной импульсной характеристики при генерации в виде компонента TLM с индивидуальной адресной картой памяти.

Чтобы предоставить набор входов сгенерированному компоненту TLM, инициатор TLM должен отправить две транзакции записи TLM:

  • один с полезной нагрузкой, содержащей данные типа input_1_REG_T по адресу DualFilter_combined_IN_BANK_ADDR + input_1_REG_ADDR.

  • один с полезной нагрузкой, содержащей данные типа input_2_REG_T по адресу DualFilter_combined_IN_BANK_ADDR + input_2_REG_ADDR.

Чтобы получить набор выходов от сгенерированного компонента TLM, инициатор TLM должен отправить три считанные транзакции TLM:

  • один с полезной нагрузкой, содержащей данные типа output_1_REG_T по адресу DualFilter_combined_OUT_BANK_ADDR + output_1_REG_ADDR.

  • один с полезной нагрузкой, содержащей данные типа output_2_REG_T по адресу DualFilter_combined_OUT_BANK_ADDR + output_2_REG_ADDR.

Для просмотра документации необходимо авторизоваться на сайте