exponenta event banner

Задание атрибутов фиксированных точек для блоков

Параметры блока с фиксированной точкой

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

Примечание

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

Большинство параметров с фиксированной точкой можно найти на панели «Типы данных» блоков панели инструментов. На следующем рисунке показана типичная панель «Типы данных».

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

Параметр типа данных с фиксированной точкойОписание

Режим округления

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

Дополнительные сведения о доступных параметрах см. в разделе Режимы округления.

Насыщение при целочисленном переполнении

При выборе этого параметра блок насыщает результат операции с фиксированной точкой. При сбросе этого параметра блок переносит результат операции с фиксированной точкой.

Дополнительные сведения о насыщении и переносе см. в разделе Обработка переполнения для операций с фиксированной точкой.

Промежуточный продукт

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

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

Выходные данные продукта

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

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

Аккумулятор

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

Подробные сведения о типе данных накопителя этого блока см. на справочной странице конкретного блока.

Продукция

Указывает тип выходных данных и масштаб блоков.

Использование помощника по типам данных

Помощник по типам данных представляет собой интерактивный графический инструмент, доступный на панели «Типы данных» некоторых блоков панели инструментов с фиксированной точкой.

Дополнительные сведения об использовании помощника по типам данных для определения параметров типа данных блока см. в разделе Определение типов данных с помощью помощника по типам данных (Simulink).

Проверка диапазонов сигналов

Некоторые блоки панели инструментов с фиксированной точкой имеют параметры Минимум (Minimum) и Максимум (Maximum) на панели Типы данных (Data Types). Если тип данных с фиксированной точкой имеет эти параметры, их можно использовать для указания соответствующих минимальных и максимальных значений для проверки диапазона.

Сведения о задании диапазонов сигналов и включении проверки диапазонов сигналов см. в разделе Определение диапазонов сигналов (Simulink).

Задание параметров системного уровня

С помощью инструмента «Фиксированная точка» можно контролировать и управлять настройками фиксированных точек для блоков панели инструментов на уровне системы или подсистемы. Дополнительные сведения см. в разделе Инструмент «Фиксированная точка» (Конструктор фиксированных точек).

Регистрация

Инструмент «Фиксированная точка» регистрирует переполнения, насыщения и минимумы и максимумы моделирования для блоков панели инструментов с фиксированной точкой. Инструмент Fixed-Point не регистрирует переполнения и насыщения при Data overflow строка на панели Диагностика > Целостность данных диалогового окна Параметры конфигурации имеет значение None.

Автовычисление

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

Переопределение типа данных

блоки панели инструментов подчиняются Use local settings, Double, Single, и Off режимы параметра переопределения типа данных в инструменте «Фиксированная точка». Scaled double режим также поддерживается для исходных блоков панелей инструментов и блоков перетасовки байтов, а также для некоторых арифметических блоков, таких как «Разность» и «Нормализация».

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

Наследовать через внутреннее правило

Выбор соответствующих длин слов и масштабов для параметров с фиксированной точкой в модели может быть сложной задачей. Чтобы помочь вам, Inherit via internal rule часто доступен выбор параметров типа данных блока с фиксированной точкой, таких как выходные сигналы накопителя и продукта. В следующих разделах описывается выбор длин слов и дробей при выборе Inherit via internal rule для параметра типа данных блока с фиксированной точкой в программном обеспечении панели инструментов:

Примечание

В уравнениях в следующих разделах WL = длина слова и FL = длина дроби.

Внутреннее правило для типов данных накопителя

Внутреннее правило для типов данных накопителя сначала вычисляет идеальный результат полной точности. Где N - число добавлений:

WLидеальный аккумулятор = WLвход в аккумулятор + пол (log2 (N − 1)) + 1

FLидеальный аккумулятор = FLвход в аккумулятор

Например, рассмотрим суммирование всех элементов вектора длины 6 и типа данных sfix10_En8. Идеальный результат полной точности имеет длину слова 13 и длину дроби 8.

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

Внутреннее правило для типов данных продукта

Внутреннее правило для типов данных продукта сначала вычисляет идеальный результат полной точности:

WLидеальный продукт = WLinput 1 + WLinput 2

FLидеальное изделие = FLinput 1 + FLinput 2

Например, перемножение элементов действительного вектора длины 2 и типа данных sfix10_En8. Идеальный результат с полной точностью имеет длину слова 20 и длину дроби 16.

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

Внутреннее правило для типов выходных данных

Несколько блоков панели инструментов имеют Inherit via internal rule вариант, доступный для вывода блока. Внутреннее правило, используемое в этих случаях, зависит от блока, а уравнения перечислены на странице ссылок на блок.

Как и в случае с накопителями и типами данных продукта, конечные значения длины выходного слова и дроби, заданные внутренним правилом, зависят от конкретного оборудования, как описано в разделе Влияние области реализации аппаратного обеспечения на внутреннее правило.

Влияние панели внедрения аппаратного обеспечения на внутреннее правило

Внутреннее правило выбирает длины слов и дроби, подходящие для оборудования. Чтобы получить наилучшие результаты с помощью внутреннего правила, необходимо указать тип используемого оборудования на панели Реализация оборудования (Hardware Implementation) диалогового окна Параметры конфигурации (Configuration Parameters). Чтобы открыть это диалоговое окно, щелкните Моделирование > Настройки модели на панели инструментов Simulink ®.

ASIC/FPGA.  Для цели ASIC/FPGA используются идеальная длина слова полной точности и длина дроби, рассчитанные по внутреннему правилу. Если вычисленная идеальная длина слова больше максимально допустимой длины слова, появляется ошибка.

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

Если вычисленная идеальная длина слова для типа данных продукта больше, чем наибольшая длина слова в целевом объекте, появляется ошибка. Если вычисленная идеальная длина слова для накопителя или выходного типа данных больше, чем наибольшая длина слова на целевом объекте, используется наибольшая длина целевого слова.

Наибольшая длина слова, допустимая для программного обеспечения Simulink и панели инструментов на любом целевом объекте, составляет 128 бит.

Примеры внутренних правил

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

Типы данных аккумулятора.  Рассмотрим следующие ex_internalRule_accumExp модели.

В блоках Difference (DSP System Toolbox) параметр Accumulator имеет значение Inherit: Inherit via internal ruleи параметр Output имеет значение Inherit: Same as accumulator. Таким образом, можно просмотреть тип данных накопителя, рассчитанный по внутреннему правилу для выходного сигнала в модели.

В предыдущей модели для параметра Device type на панели Hardware Implementation диалогового окна Configuration Parameters установлено значение ASIC/FPGA. Поэтому тип данных накопителя, используемый внутренним правилом, является идеальным результатом полной точности.

Рассчитайте длину слова полной точности для каждого из блоков разностей в модели:

WLидеальный аккумулятор = WLвход в аккумулятор + этаж (log2 (количество накоплений)) + 1WLидеальный аккумулятор = 9 + этаж (log2 (1)) + 1WLидеальный аккумулятор = 9 + 0 + 1 = 10WLидеальный аккумулятор1 = WLвход в аккумулятор1 + этаж (log2 (количество накоплений)) + 1

Рассчитайте длину дроби полной точности, которая одинакова для каждого блока Matrix Sum в этом примере:

FLидеальный аккумулятор = FLвход в аккумулятор FLидеальный аккумулятор = 4

Теперь измените параметр Device type на панели Hardware Implementation диалогового окна Configuration Parameters на 32–bit Embedded Processor, путем изменения параметров, как показано на следующем рисунке.

Как видно из диалогового окна, это устройство имеет 8, 16 и 32-разрядные длины слов. Поэтому идеальные длины слов 10, 17 и 128 бит, вычисленные внутренним правилом, не могут быть использованы. Вместо этого внутреннее правило использует следующую наибольшую доступную длину слова в каждом случае. Это можно увидеть при повторном запуске модели, как показано на следующем рисунке.

Типы данных продукта.  Рассмотрим следующие ex_internalRule_prodExp модели.

В блоках Array-Vector Multiply (DSP System Toolbox) для параметра Product Output установлено значение Inherit: Inherit via internal ruleи параметр Output имеет значение Inherit: Same as product output. Поэтому можно просмотреть тип выходных данных продукта, рассчитанный по внутреннему правилу для выходного сигнала в модели. Настройка параметра Accumulator не имеет значения, поскольку в этом примере используются вещественные значения.

Для предыдущей модели параметр Device type на панели Hardware Implementation диалогового окна Configuration Parameters имеет значение ASIC/FPGA. Поэтому тип данных продукта, используемый внутренним правилом, является идеальным результатом полной точности.

Рассчитайте длину слова полной точности для каждого из блоков «Массив-Вектор Умножение» в модели:

WLideal product = WLinput a + WLinput bWLideal product = 7 + 5 = 12WLideal product1 = WLinput a + WLinput bWLideal product1 = 16 + 15 = 31

Рассчитайте длину дроби полной точности, которая одинакова для каждого блока умножения массива-вектора в этом примере:

FLидеальный аккумулятор = FLвход в аккумулятор FLидеальный аккумулятор = 4

Теперь измените параметр Device type на панели Hardware Implementation диалогового окна Configuration Parameters на 32–bit Embedded Processor, как показано на следующем рисунке.

Как видно из диалогового окна, это устройство имеет 8, 16 и 32-разрядные длины слов. Поэтому идеальные длины слов 12 и 31 бит, вычисленные внутренним правилом, использовать нельзя. Вместо этого внутреннее правило использует следующую наибольшую доступную длину слова в каждом случае. Это можно увидеть при повторном запуске модели, как показано на следующем рисунке.

Укажите типы данных для блоков с фиксированной точкой

В следующих разделах показано, как использовать инструмент «Фиксированные точки» для выбора соответствующих типов данных для блоков фиксированных точек в ex_fixedpoint_tut модель:

Подготовка модели

  1. Откройте модель, введя ex_fixedpoint_tut в командной строке MATLAB ®.

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

    • Подписанный источник имеет длину слова 16 бит и длину дроби 15 бит.

    • Неподписанный источник имеет длину слова 16 бит и длину дроби 16 бит.

  2. Запустите модель для проверки переполнения. MATLAB отображает следующие предупреждения в командной строке:

    Warning: Overflow occurred. This originated from
    'ex_fixedpoint_tut/Signed Cumulative Sum'. 
    Warning: Overflow occurred. This originated from
    'ex_fixedpoint_tut/Unsigned Cumulative Sum'. 

    В соответствии с этими предупреждениями переполнение происходит в обоих блоках кумулятивной суммы.

  3. Чтобы исследовать переполнения в этой модели, используйте инструмент «Фиксированная точка» (Fixed-Point). Инструмент "Фиксированная точка" можно открыть, выбрав "Инструменты" > "Фиксированная точка" > "Инструмент" Фиксированная точка "в меню модели. Включите ведение журнала для всех блоков в модели, установив для параметра Fixed-point instrumentation mode значение Minimums, maximums and overflows.

  4. После включения регистрации повторно запустите модель, нажав кнопку Моделирование (Simulation).

  5. Результаты моделирования отображаются в таблице на центральной панели «Содержимое» инструмента «Фиксированная точка». Просмотрите следующие столбцы:

    • Name - имя каждого сигнала в следующем формате: Subsystem Name/Block Name: Signal Name.

    • SimDT - тип данных моделирования каждого зарегистрированного сигнала.

    • SpecifiedDT - тип данных, указанный в диалоговом окне блока для каждого сигнала.

    • SimMin - наименьшее представляемое значение, полученное при моделировании для каждого зарегистрированного сигнала.

    • SimMax - наибольшее представляемое значение, достигнутое при моделировании для каждого зарегистрированного сигнала.

    • OverflowWraps - количество переполнений, которые переносятся во время моделирования.

    Можно также видеть, что значения SimMin и SimMax для типов данных Accumulator варьируются от 0 кому .9997. Зарегистрированные результаты показывают, что 8192 переполнения во время моделирования в типе данных Accumulator блока Signed Collective Sum. Аналогично, тип данных Accumulator блока Unsigned Collective Sum имел 16 383 переполнения во время моделирования.

    Чтобы получить дополнительные сведения о каждом из этих типов данных, выделите их на панели Содержимое (Contents) и нажмите кнопку Показать сведения для выбранного результата ()

  6. Предположим, что целевое оборудование поддерживает 32-разрядные целые числа, и установите длину слова Accumulator в обоих блоках совокупной суммы равной 32. Для этого выполните следующие шаги:

    1. Щелкните правой кнопкой мыши Signed Cumulative Sum: Accumulator на панели инструментов «Фиксированная точка» выберите «Выделить блок в модели».

    2. Дважды щелкните блок в модели и выберите панель «Типы данных» диалогового окна.

    3. Откройте ассистент типа данных для накопителя, нажав кнопку Assistant () в строке Тип данных накопителя.

    4. Установите режим в значение Fixed Point. Чтобы увидеть представимый диапазон текущего указанного типа данных, щелкните ссылку Сведения о фиксированной точке. Инструмент отображает представляемое максимальное и представляемое минимальное значения для текущего типа данных.

    5. Изменение длины Word на 32и нажмите кнопку «Обновить сведения» в разделе «Сведения о фиксированных точках» для просмотра обновленного представляемого диапазона. При изменении значения параметра длины Word автоматически обновляется поле редактирования «Тип данных».

    6. Нажмите кнопку ОК в диалоговом окне блока, чтобы сохранить изменения и закрыть окно.

    7. Установите длину слова типа данных Accumulator блока Unsigned Collective Sum в значение 32 биты. Это можно сделать одним из двух способов:

      • Введите тип данных fixdt([],32,0) непосредственно в поле редактирования «Тип данных» для параметра «Тип данных накопителя».

      • Выполните те же действия, что и при установке длины слова типа данных Accumulator блока Signed Collective Sum в значение 32 биты.

  7. Чтобы проверить изменения длины слова и проверить переполнение, повторно запустите модель. Для этого нажмите кнопку «Моделирование» в инструменте «Фиксированная точка».

    Панель «Содержимое» инструмента «Фиксированная точка» обновляется, и видно, что в последнем моделировании переполнения не произошло. Однако можно также видеть, что значения SimMin и SimMax находятся в диапазоне от 0 кому 0. Этот неполный поток происходит, поскольку длина дроби типа данных Accumulator слишком мала. SpecifiedDT не может представлять точность значений данных. В следующих разделах рассматривается поиск эталонного теста с плавающей запятой и использование инструмента Fixed-Point Tool для предложения длин дробей.

Использование переопределения типа данных для поиска эталонного теста с плавающей запятой

Функция переопределения типа данных инструмента «Фиксированная точка» позволяет переопределять типы данных, указанные в модели, типами с плавающей запятой. Запуск модели в Double режим переопределения предоставляет ссылочный диапазон, помогающий выбрать соответствующие длины дробей для типов данных с фиксированной точкой. Для этого выполните следующие шаги:

  1. Откройте инструмент «Фиксированная точка» и задайте для параметра «Переопределение типа данных» значение Double.

  2. Запустите модель, нажав кнопку Выполнить моделирование (Run simulation), и сохраните активные результаты.

  3. Проверьте результаты на панели «Содержимое» инструмента «Фиксированная точка». Потому что вы запустили модель в Double режим переопределения позволяет получить точное идеализированное представление минимумов и максимумов моделирования. Эти значения отображаются в параметрах SimMin и SimMax.

  4. Теперь, когда имеется точное ссылочное представление минимальных и максимальных значений моделирования, можно легко выбрать подходящую длину дроби. Перед выполнением этих действий сохраните активные результаты для ссылки, чтобы использовать их в качестве эталонного теста с плавающей запятой. Для этого выберите «Результаты» > «Переместить активные результаты в ссылку» в меню «Инструмент фиксированной точки». Статус, отображаемый в столбце Выполнить, изменяется с Active кому Reference для всех сигналов в модели.

Использование инструмента «Фиксированная точка» для предложения длин дробей

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

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

  2. Установите флажок Использовать моделирование мин/макс, если конструкция мин/макс недоступна. Не указаны минимумы конструкции или максимумы для типов данных в этой модели. Таким образом, инструмент использует записанную информацию для вычисления и предложения длин дробей. Сведения об указании минимумов и максимумов конструкции см. в разделе Задание диапазонов сигналов (Simulink).

  3. Нажмите кнопку Предложить длины дробей (). Инструмент населяет предложенные типы данных в колонке ProposedDT стекла Содержания. Соответствующие предложенные минимумы и максимумы отображаются в столбцах «Мин» и «Макс».

Анализ результатов и принятие предлагаемого масштабирования

Прежде чем принимать длины дробей, предложенные инструментом Fixed-Point, важно ознакомиться с подробностями этого типа данных. Это позволяет увидеть, сколько данных может представлять предлагаемый тип данных. Чтобы проверить предлагаемые типы данных и принять предлагаемое масштабирование, выполните следующие действия.

  1. На панели Содержимое (Contents) инструмента «Фиксированная точка» (Fixed-Point) можно увидеть предлагаемые длины дробей для типов данных в модели.

    • Предлагаемая длина дроби для типа данных Accumulator блоков Signed и Unsigned Collective Sum составляет 17 бит.

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

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

  2. Когда откроется окно Информация об автоматическом масштабировании (Autoscale Information), проверьте столбцы Значение (Value) и Процент предлагаемого представления (Percent Offsected Representable) для параметров Минимум моделирования (Simulation Minimum) и Максимум моделирования (Simulation Max Можно видеть, что предлагаемый тип данных может представлять 100% диапазона данных моделирования.

  3. Чтобы принять предлагаемые типы данных, установите флажок в столбце Принять для каждого типа данных, предлагаемый масштаб которого требуется сохранить. Затем нажмите кнопку Применить длины принятых дробей (). Инструмент обновляет указанные типы данных в диалоговых окнах блоков и столбце SpecifiedDT на панели «Содержимое».

  4. Чтобы проверить вновь принятое масштабирование, установите для параметра Переопределение типа данных (Data type override) значение Использовать локальные настройки (Use local settings) и запустите модель. На панели «Содержимое» инструмента «Фиксированная точка» можно просмотреть следующие сведения:

    • Значения SimMin и SimMax для Active выполнение соответствует значениям SimMin и SimMax из плавающей точки Reference выполнить.

    • Переполнений больше нет.

    • SimDT не соответствует SpecifiedDT для типа данных Accumulator ни одного из блоков совокупной суммы. Это различие происходит потому, что блок кумулятивной суммы всегда наследует значение Signedness от входного сигнала и позволяет задать значение Signedness только для Auto. Поэтому Specified DT для обоих типов данных Accumulator является fixdt([],32,17). Однако, поскольку блок «Signed Collective Sum» имеет подписанный входной сигнал, SimDT для параметра «Accumulator» этого блока также подписывается (fixdt(1,32,17)). Аналогично, SimDT для параметра Accumulator блока Unsigned Collective Sum наследует свою Signedness из своего входного сигнала и, таким образом, не подписывается (fixdt(0,32,17)).