exponenta event banner

Преобразования параметров и сигналов

Введение

Чтобы полностью понять результаты, полученные блоками Simulink ® с фиксированной точкой, необходимо знать о следующих проблемах:

  • При преобразовании числовых параметров блоков из двойных в фиксированные типы данных

  • Когда входные сигналы преобразуются из одного типа данных с фиксированной точкой в другой (если вообще)

  • При выполнении арифметических операций по входным сигналам и параметрам

Например, предположим, что блок Simulink с фиксированной точкой выполняет арифметическую операцию над своим входным сигналом и параметром, а затем генерирует выходной сигнал, имеющий характеристики, определенные блоком. На следующей схеме показано, как эти проблемы связаны.

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

Преобразования параметров

Параметры блоков с фиксированной точкой, которые принимают числовые значения, всегда преобразуются из double к типу данных с фиксированной точкой. Параметры могут быть преобразованы в тип входных данных, тип выходных данных или в тип данных, явно определенный блоком. Например, блок «Дискретный фильтр КИХ» преобразует свой параметр «Начальные состояния» в тип входных данных и преобразует свой параметр «Коэффициент числителя» в тип данных, явно заданный в диалоговом окне блока.

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

Примечание

Поскольку параметры блоков с фиксированной точкой начинаются с double, они никогда не точны до более чем 53 бит. Поэтому, если выходной сигнал блока с фиксированной точкой превышает 53 бита, результат может быть менее точным, чем вы ожидали.

Автономные преобразования

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

y = (abc) u = Cu

снова и снова. Если a, b и c являются постоянными параметрами, процессор с фиксированной точкой неэффективно вычислять ab/c каждый раз. Вместо этого процессор ПК должен один раз вычислять ab/c в автономном режиме, а процессор с фиксированной точкой вычисляет только C· u. Это исключает две дорогостоящие арифметические операции с фиксированной точкой.

Преобразования сигналов

Рассмотрим преобразование реального значения из одного типа данных с фиксированной точкой в другой. В идеале значения до и после преобразования равны.

Va = Vb,

где Vb - входное значение, а Va - выходное значение. Чтобы увидеть, как осуществляется преобразование, два идеальных значения заменяются общей схемой кодирования [Slope Bias], описанной в разделе Масштабирование:

Vi = Fi2EiQi + Bi.

Решая для типа выходных данных сохраненное целое значение, получают Qa:

Qa = FbFa2Eb EaQb + Bb BaFa2 Ea = Fs2Eb − EaQb + Bnet,

где Fs - скорректированный дробный наклон, а Bnet - чистое смещение. Оффлайн-преобразования и онлайн-преобразования и операции рассматриваются ниже.

Автономные преобразования

И Fs, и Bnet вычисляются в автономном режиме с использованием округления до ближайшего и насыщения. Затем Bnet сохраняется с использованием типа выходных данных, а Fs - с использованием автоматически выбранного типа данных.

Онлайн-конверсии и операции

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

  1. Начальное значение для Qa задается чистым смещением, Bnet:

    Qa = Bnet.

  2. Входное целое значение Qb умножается на скорректированный наклон, Fs:

    QRawProduct = FsQb.

  3. Результат шага 2 преобразуется в измененный тип выходных данных, где наклон равен единице, а смещение равно нулю:

    QTemp = преобразовать (QRawProduct).

    Это преобразование включает в себя любое необходимое смещение битов, округление или обработку переполнения.

  4. Операция суммирования выполняется:

    Qa = QTemp + Qa.

    Это суммирование включает в себя любую необходимую обработку переполнения.

Оптимизация моделирования и сгенерированного кода

Следует отметить, что максимальное количество преобразований и операций выполняется, когда углы наклона и смещения входного сигнала и выходного сигнала различаются (несовпадают). Если масштабирование этих сигналов идентично (согласовано), количество операций уменьшается по сравнению с наихудшим (наиболее неэффективным) случаем. Например, когда вход имеет тот же дробный наклон и смещение, что и выход, требуется только шаг 3:

Qa = преобразовать (Qb).

Исключительное использование бинарного масштабирования только для входных сигналов и выходных сигналов является обычным способом устранения несовпадающих наклонов и смещений и приводит к наиболее эффективному моделированию и генерируемому коду.