Распространение характеристик сигналов.
Распространение характеристик сигналов.
При моделировании динамических систем, каждый сигнал, передаваемый между блоками, обладает набором характеристик. Ключевыми из них являются:
- Тип данных (например,
double,single,int8,uint16,booleanи т.д.); - Размерность (скаляр, вектор-строка, вектор-столбец, матрица с конкретным числом строк и столбцов);
- Период дискретизации (непрерывный, дискретный с заданным шагом).
В процессе компиляции модели среда должна однозначно определить эти характеристики для каждого порта каждого блока. Этот процесс называется распространением характеристик сигналов. Механизм обратного распространения характеристик сигналов даёт следующие преимущества:
- Автоматическое определение типов и размерностей.
- Гибкость при изменении структуры модели.
- Возможность моделирования с обратными связями.
- Поддержка типизированных интерфейсов.
- Снижение риска несоответствия типов и размерностей
Распространение может происходить в двух направлениях:
-
Прямое распространение (Forward Propagation) – от источников сигналов (блоков-генераторов, констант, входных портов) к приёмникам. Если блок-источник имеет явно заданные характеристики (например, тип
doubleи размерность[3x3]), эти характеристики передаются по цепочке дальше.
-
Обратное распространение (Backward Propagation) – от приёмников сигналов (выходных портов, блоков) к источникам. Если блок-приёмник или выходной порт модели имеет явно заданные характеристики, они распространяются назад по направлению потока данных. Этот механизм особенно важен, когда источник сигнала не задан явно (например, блок Constant с параметром
Inherit: auto), а конечный блок требует конкретный тип или размерность.
Многие блоки могут изменять размерность сигнала (Reshape, Transpose, Matrix Multiply, Mux, Demux, Selector и др.) или преобразовывать тип (Data Type Conversion). Для корректной работы обратного распространения через такие блоки, а также через атомарные подсистемы и Model Reference, необходима специальная логика, которая учитывает правила преобразования в обратную сторону. Ниже приведено несколько моделей, эти модели позволяют продемонстрировать распространения характеристик сигналов.
bp_dim_atomic_transpose.engee
Обратное распространение размерности через атомарную подсистему, внутри которой находится блок Transpose (транспонирование матрицы). Размерность, заданная на выходе подсистемы, распространяется назад через транспонирование, и на входе подсистемы ожидается транспонированная размерность.

.png)
bp_dim_chain_inheritance.engee
Цепочка блоков также должна наследовать размерность. Выходной сигнал имеет явно заданную размерность. Эта размерность должна распространиться назад через все блоки до самого источника, причём каждый блок должен правильно передать требование к размерности на свой вход.
.png)
bp_dim_loop_unit_delay.engee
Простая обратная связь с блоком Unit Delay для наследования размерности. Сигнал выходит из Unit Delay, проходит через некоторую логику (например, Gain и Add) и возвращается обратно на вход Unit Delay. Если на выходе петли задана конкретная размерность, она должна распространиться назад через Unit Delay и всю комбинационную логику.
.png)
bp_dim_loop_unit_delay_mux.engee
Обратное распространение размерности в петле без явного источника сигнала. В модели есть обратная связь, состоящая из блоков Unit Delay и Mux и Demux. Нет начального блока-генератора с заданной размерностью. Размерность определяется исключительно из требований выходного порта или из начальных условий Unit Delay. В этом примере проверяется способность решателя распространять размерность в замкнутом контуре, где все входы зависят друг от друга.
.png)
bp_type_bus_creator_selector.engee
Обратное распространение типов данных при работе с шинами (Bus Creator / Bus Selector). Создаётся шина из нескольких сигналов разных типов, затем через Bus Selector извлекается один из элементов. Если на выходе Selector задан конкретный тип, этот тип должен распространиться назад через Selector к соответствующему входу Bus Creator и далее к источнику этого элемента шины.

bp_type_chain_inheritance.engee
Цепочка блоков с наследованием типа данных. На выходном порте модели (или на конечном блоке) явно задан тип (например, Float32). Этот тип должен распространиться назад через все блоки, причём некоторые блоки (например, Data Type Conversion) могут останавливать или преобразовывать наследование.
.png)
bp_type_circular_dependency.engee
Циклическую зависимость типов – модель с обратной связью, где тип сигнала зависит от самого себя (например, выход Sum идёт на Unit Delay, а выход Unit Delay возвращается на вход Sum).
.png)
bp_type_multiport_switch.engee
Обратное распространение типа данных через блок Multiport Switch (переключатель с несколькими входами данных и одним управляющим входом). Если на выходе Switch задан конкретный тип, этот тип должен распространиться назад на все входы данных (независимо от того, какой из них выбран в данный момент), но не на управляющий вход.
.png)
Вывод
В этом примере мы разобрали, что такое наследование и как оно упрощает моделирование, а ниже представлены случаи, для которых возможно обратное наследование.
Обратное распространение типов данных может происходить через простой блок, цепочку блоков с наследованием типа, разветвление сигнала (один источник – несколько приёмников), объединение сигналов через Mux, блок Switch (переключение между двумя входами), блок Multiport Switch (множество входов), простую атомарную подсистему, атомарную подсистему с несколькими портами (независимое наследование), вложенные атомарные подсистемы, Model Reference (простая, с фиксированным типом порта, в петле обратной связи, вложенная), блок Data Type Conversion (остановка обратного распространения), блок Relational Operator (логический выход), циклическую зависимость типов (обратная связь), Bus Creator / Bus Selector (шины), а также параллельные пути с разными типами, которые могут приводить к конфликту или совмещению.
По размерностям обратное наследование охватывает такие случаи, как вектор-столбец, вектор-строка, матрица, цепочка блоков с наследованием размерности, Matrix Multiply с частично известной размерностью одного входа, Matrix Transpose, Reshape, Selector (извлечение подмассива), Demux (разделение вектора), атомарная подсистема (простая и с изменением размерности внутри), обратная связь с Unit Delay (простая и без источника сигнала), а также Model Reference (простая, с фиксированной размерностью порта, вложенная).