exponenta event banner

Улучшение согласованности данных в сгенерированном коде

Для моделей, содержащих операции чтения и записи для блоков памяти хранилища данных, можно создать код, содержащий одну переменную для хранения значения каждой операции чтения и записи хранилища данных. Генерация одной переменной для каждой операции улучшает когерентность доступа к данным.

Пример модели

data_store_latching модель содержит один блок памяти хранилища данных, к которому обращаются два различных блока чтения памяти хранилища данных и два блока записи памяти хранилища данных. Два блока Sum выполняют сложение входных данных, генерируемых блоками чтения хранилища данных, и выводят данные в блоки записи хранилища данных.

Создать код без включения параметра

При построении модели с выключенным по умолчанию блоком реализации каждого хранилища данных в качестве уникального параметра точки доступа создается следующий код:

void data_store_latching_step(void)
	{
	  /* DataStoreWrite: '<Root>/Data Store Write' incorporates:
	   *  DataStoreRead: '<Root>/Data Store Read'
	   *  Sum: '<Root>/Add'
	   */
	  data_store_latching_DW.A += data_store_latching_DW.A +
	    data_store_latching_DW.A;
	
	  /* DataStoreWrite: '<Root>/Data Store Write1' incorporates:
	   *  DataStoreRead: '<Root>/Data Store Read1'
	   *  Sum: '<Root>/Add1'
	   */
	  data_store_latching_DW.A += data_store_latching_DW.A +
	    data_store_latching_DW.A;
	}
Для операций чтения и записи данных код содержит глобальную переменную. data_store_latching_DW.A.

Создать код с включенным параметром

В диалоговом окне «Параметры конфигурации» на панели «Интерфейс» выберите параметр «Реализовать каждый блок хранилища данных» в качестве уникального параметра точки доступа. Нажмите кнопку «Применить».

Созданный код теперь:

void data_store_latching_step(void)
	{
	  real_T rtb_DataStoreRead;
	  real_T rtb_DataStoreRead1;
	
	  /* DataStoreRead: '<Root>/Data Store Read' */
	  rtb_DataStoreRead = data_store_latching_DW.A;
	
	  /* DataStoreWrite: '<Root>/Data Store Write' incorporates:
	   *  Sum: '<Root>/Add'
	   */
	  data_store_latching_DW.A = (rtb_DataStoreRead + rtb_DataStoreRead) +
	    rtb_DataStoreRead;
	
	  /* DataStoreRead: '<Root>/Data Store Read1' */
	  rtb_DataStoreRead1 = data_store_latching_DW.A;
	
	  /* DataStoreWrite: '<Root>/Data Store Write1' incorporates:
	   *  Sum: '<Root>/Add1'
	   */
	  data_store_latching_DW.A = (rtb_DataStoreRead1 + rtb_DataStoreRead1) +
	    rtb_DataStoreRead1;
	}
Для каждой операции чтения хранилища данных код содержит переменную. Переменные: rtb_DataStoreRead и rtb_DataStoreRead1. Эти отдельные переменные улучшают согласованность доступа к данным.

Связанные темы