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

Введение

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

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

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

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

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

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

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

Параметры блоков с фиксированной точкой, которые принимают числовые значения, всегда преобразуются из double к типу данных с фиксированной точкой. Параметры могут быть преобразованы в тип входных данных, тип выходных данных или в тип данных, явно заданный блоком. Например, блок Discrete FIR Filter преобразует свой параметр Initial states в тип входных данных и преобразует его параметр Numerator coefficient в тип данных, явно заданный вами в диалоговом окне блока.

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

Примечание

Потому что параметры блоков с фиксированной точкой начинаются как 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=FbFa2EbEaQb+BbBaFa2Ea=Fs2EbEaQb+Bnet,

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

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

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

Онлайн-преобразования и операции

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

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

    Qa=Bnet.

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

    QRawProduct=FsQb.

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

    QTemp=convert(QRawProduct).

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

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

    Qa=QTemp+Qa.

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

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

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

Qa=convert(Qb).

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