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

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

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

Примечание

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

Можно найти большинство параметров фиксированной точки на панели Data Types блоков тулбокса. Следующий рисунок показывает типичную панель Data Types.

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

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

Округление режима

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

Смотрите Округление Режимов для получения дополнительной информации о доступных параметрах.

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

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

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

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

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

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

Продукт Выход

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

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

Аккумулятор

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

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

Вывод

Задает тип выходных данных и масштабирующийся для блоков.

Используя ассистент типа данных

Data Type Assistant является интерактивным графическим инструментом, доступным на панели Data Types некоторых блоков тулбокса фиксированной точки.

Чтобы узнать больше об использовании Data Type Assistant, чтобы помочь вам задать параметры типа данных блока, смотрите, Задают Типы данных Используя Ассистент Типа данных (Simulink).

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

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

Чтобы изучить, как указать диапазоны сигнала и включить проверку диапазона сигнала, смотрите Диапазоны сигнала (Simulink).

Задайте настройки уровня системы

Можно контролировать и управлять настройками фиксированной точки для блоков тулбокса в системе или уровне подсистемы с Fixed-Point Tool. Для получения дополнительной информации смотрите Fixed-Point Tool.

Логгирование

Fixed-Point Tool регистрирует переполнение, насыщение, и минимумы симуляции и максимумы для блоков тулбокса фиксированной точки. Fixed-Point Tool не регистрирует переполнение и насыщение когда Data overflow линия в панели Diagnostics > Data Integrity диалогового окна Configuration Parameters установлена в None.

Автомасштабирование

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

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

блоки тулбокса повинуются Use local settings'double'единственный, и Off режимы параметра Data type override в Fixed-Point Tool.  Scaled double режим также поддержан для источника тулбоксов и переставляющих байт блоков, и для некоторых арифметических блоков, таких как Различие и Нормализация.

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

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

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

Примечание

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

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

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

WLideal accumulator=WLinput to accumulator+пол(журнал2(N1))+1

FLideal accumulator=FLinput to accumulator

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

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

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

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

WLideal product=WLinput 1+WLinput 2

FLideal product=FLinput 1+FLinput 2

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

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

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

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

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

Эффект панели аппаратной реализации на внутреннем правиле

Внутреннее правило выбирает размеры слова и дробные длины, которые подходят для вашего оборудования. Чтобы получить лучшие результаты, использующие внутреннее правило, необходимо задать тип оборудования, которое вы используете на панели Hardware Implementation диалогового окна Configuration Parameters. Можно открыть это диалоговое окно в меню Simulation в модели.

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

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

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

Самый большой размер слова допускал Simulink®, и программное обеспечение тулбокса на любой цели составляет 128 битов.

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

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

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

В блоках Difference параметр Accumulator устанавливается на Inherit: Inherit via internal rule, и параметр Output устанавливается на Inherit: Same as accumulator. Поэтому вы видите тип данных аккумулятора, вычисленный внутренним правилом о выходном сигнале в модели.

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

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

WLideal accumulator=WLinput to accumulator+пол(журнал2(number of accumulations))+1WLideal accumulator=9+пол(журнал2(1))+1WLideal accumulator=9+0+1=10WLideal accumulator1=WLinput to accumulator1+пол(журнал2(number of accumulations))+1WLideal accumulator1=16+пол(журнал2(1))+1WLideal accumulator1=16+0+1=17WLideal accumulator2=WLinput to accumulator2+пол(журнал2(number of accumulations))+1WLideal accumulator2=127+пол(журнал2(1))+1WLideal accumulator2=127+0+1=128

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

FLideal accumulator=FLinput to accumulatorFLideal accumulator=4

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

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

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

В блоках Array-Vector Multiply параметр 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

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

FLideal accumulator=FLinput to accumulatorFLideal accumulator=4

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

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

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

Следующие разделы показывают вам, как использовать Fixed-Point Tool, чтобы выбрать соответствующие типы данных для блоков фиксированной точки в ex_fixedpoint_tut модель:

Подготовьте модель

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

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

    • Источник Со знаком перебрасывается парой слов длина 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 Tool. Можно открыть Fixed-Point Tool путем выбора Tools> Fixed-Point> Fixed-Point Tool в меню модели. Включите логгирование для всех блоков в вашей модели путем установки параметра Fixed-point instrumentation mode на Minimums, maximums and overflows.

  4. Теперь, когда вы включили логгирование, повторно выполнял модель путем нажатия кнопки Simulation.

  5. Результаты симуляции появляются в таблице в центральной панели Contents Fixed-Point Tool. Рассмотрите следующие столбцы:

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

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

    • SpecifiedDT — Тип данных задан на диалоговом окне блока для каждого сигнала.

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

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

    • OverflowWraps — Количество переполнения, которое переносится в процессе моделирования.

    Для получения дополнительной информации о каждом из столбцов в этой таблице смотрите раздел Contents Pane (Simulink) fxptdlg Simulink страница ссылки на функцию.

    Можно также видеть, что SimMin и значения SimMax для типов данных Аккумулятора лежат в диапазоне от 0 к .9997. Регистрируемые результаты показывают что 8 192 переполнения, перенесенное в процессе моделирования в тип данных Аккумулятора блока Signed Cumulative Sum. Точно так же тип данных Аккумулятора блока Unsigned Cumulative Sum имел 16 383 переполнения, переносятся в процессе моделирования.

    Чтобы получить больше информации о каждом из этих типов данных, подсветите их в панели Contents и нажмите кнопку Show details for selected result ()

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

    1. Щелкните правой кнопкой по Signed Cumulative Sum: Accumulator строка в панели Fixed-Point Tool, и выбирает Highlight Block In Model.

    2. Дважды кликните блок в модели и выберите панель Data Types диалогового окна.

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

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

    5. Измените Word length в 32, и нажмите кнопку Refresh details в разделе Fixed-point details, чтобы видеть обновленную представимую область значений. Когда вы изменяете значение параметра Word length, окно редактирования Data Type автоматически обновляется.

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

    7. Установите размер слова типа данных Аккумулятора блока Unsigned Cumulative Sum к 32 биты. Можно сделать так одним из двух способов:

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

      • Выполните те же шаги, вы раньше устанавливали размер слова типа данных Аккумулятора блока Signed Cumulative Sum к 32 биты.

  7. Чтобы проверить ваши изменения в размере слова и проверке на переполнение, повторно выполните свою модель. Для этого нажмите кнопку Simulate в Fixed-Point Tool.

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

Используйте переопределение типа данных, чтобы найти сравнительный тест с плавающей точкой

Функция Data type override Fixed-Point Tool позволяет вам заменять типы данных, заданные в вашей модели с типами с плавающей точкой. Выполнение модели в Double режим переопределения дает вам диапазон ссылки, чтобы помочь вам выбрать соответствующие дробные длины для своих типов данных с фиксированной точкой. Для этого выполните следующие шаги:

  1. Откройте Fixed-Point Tool и установите Data type override на Double.

  2. Запустите свою модель путем нажатия кнопки Run simulation and store active results.

  3. Исследуйте результаты в панели Contents Fixed-Point Tool. Поскольку вы запустили модель в Double замените режим, вы получаете точное, идеализированное представление минимумов симуляции и максимумов. Эти значения появляются в параметрах SimMax и SimMin.

  4. Теперь, когда у вас есть точное ссылочное представление симуляции минимальные и максимальные значения, можно более легко выбрать соответствующие дробные длины. Прежде, чем сделать этот выбор, сохраните свои активные результаты сослаться так, можно использовать их в качестве сравнительного теста с плавающей точкой. Для этого выберите Results> Move Active Results To Reference в меню Fixed-Point Tool. Состояние, отображенное в столбце Run, изменяется от Active к Reference для всех сигналов в вашей модели.

Используйте Fixed-Point Tool, чтобы предложить дробные длины

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

  1. Чтобы предложить дробные длины для ваших типов данных, у вас должен быть набор Active результаты, доступные в Fixed-Point Tool. Чтобы произвести активный набор результатов, просто повторно выполните свою модель. Инструмент теперь отображает обоих Active результаты и Reference результаты для каждого сигнала.

  2. Установите флажок Use simulation min/max if design min/max is not available. Вы не задавали минимумов проекта или максимумов для типов данных в этой модели. Таким образом инструмент использует регистрируемую информацию, чтобы вычислить и предложить дробные длины. Для получения информации об определении минимумов проекта и максимумов, смотрите Диапазоны сигнала (Simulink).

  3. Нажмите кнопку Propose fraction lengths (). Инструмент заполняет предложенные типы данных в столбце ProposedDT панели Contents. Соответствующие предложенные минимумы и максимумы отображены в столбцах ProposedMax и ProposedMin.

Исследуйте результаты и примите предложенное масштабирование

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

  1. В панели Contents Fixed-Point Tool вы видите предложенные дробные длины для типов данных в вашей модели.

    • Предложенная дробная длина для типа данных Аккумулятора и блоков Совокупной суммы Без знака и Со знаком составляет 17 битов.

    • Чтобы получить больше деталей о предложенном масштабировании для конкретного типа данных, подсветите тип данных в панели Contents Fixed-Point Tool.

    • Откройте окно Autoscale Information для подсвеченного типа данных путем нажатия кнопки Show autoscale information for the selected result ().

  2. Когда окно Autoscale Information откроется, проверяйте Value и столбцы Percent Proposed Representable для параметров Simulation Maximum и Simulation Minimum. Вы видите, что предложенный тип данных может представлять 100% области значений данных моделирования.

  3. Чтобы принять предложенные типы данных, установите флажок в столбце Accept для каждого типа данных, предложенное масштабирование которого вы хотите сохранить. Затем нажмите кнопку Apply accepted fraction lengths (). Инструмент обновляет заданные типы данных на диалоговых окнах блока и столбце SpecifiedDT в панели Contents.

  4. Чтобы проверить недавно принятое масштабирование, задержите параметр Data type override к Use local settings и запустите модель. Смотря на панель Contents Fixed-Point Tool, вы видите следующие детали:

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

    • Больше нет никакого переполнения.

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