В цифровых аппаратных средствах числа хранятся в двоичных словах. Двоичное слово - это последовательность битов фиксированной длины (1 и 0). Как аппаратные компоненты или программные функции интерпретируют эту последовательность 1 и 0, определяется типом данных. Двоичные числа представлены либо в виде данных с фиксированной запятой, либо в виде данных с плавающей запятой.
Тип данных с фиксированной точкой характеризуется длиной слова в битах, позицией двоичной точки и подписью или неподписью. Позиция двоичной точки - это средство, с помощью которого значения фиксированной точки масштабируются и интерпретируются.
Например, двоичное представление обобщенного числа с фиксированной точкой (со знаком или без знака) показано ниже:

где
bi - i-я двоичная цифра.
w1 - длина слова в битах.
bw1-1 - местоположение самого значительного или самого высокого бита (MSB).
b0 - местоположение младшего или самого низкого бита (LSB).
Двоичная точка показана в четырех местах слева от LSB. В этом примере число, как говорят, имеет четыре дробных бита или дробную длину, равную четырем.
Типы данных с фиксированной точкой могут быть подписаны или не подписаны. Подписывается ли значение с фиксированной точкой или не подписывается, как правило, не кодируется явно в двоичном слове; то есть бита знака нет. Вместо этого информация знака неявно определяется в архитектуре компьютера.
Подписанные двоичные числа с фиксированной точкой обычно представлены в компьютерном оборудовании одним из трех способов:
Знак/величина - один бит двоичного слова всегда является выделенным знаковым битом, в то время как остальные биты слова кодируют величину числа. Отрицание с использованием представления знака/величины состоит из переворачивания бита знака с 0 (положительного) на 1 (отрицательного) или с 1 на 0.
Одно дополнение - Отрицание двоичного числа в своем дополнении требует побитового дополнения. То есть, все 0 разворачиваются на 1, а все 1 переворачиваются на 0. В нотации дополнения есть два способа представить ноль. Двоичное слово всех нулей представляет «положительный» ноль, в то время как двоичное слово всех нулей представляет «отрицательный» ноль.
Дополнение Two - Отрицание с использованием представления дополнения со знаком two состоит из битовой инверсии (трансляции в одно дополнение) с последующим двоичным добавлением единицы. Например, дополнением этих двух элементов 000101 является 111011.
Дополнение Two является наиболее распространенным представлением подписанных чисел с фиксированной точкой и является единственным представлением, используемым в документации по Designer™ с фиксированной точкой.
Двоичная точка - это средство масштабирования чисел с фиксированной точкой. Обычно именно программное обеспечение определяет двоичную точку. При выполнении базовых математических функций, таких как сложение или вычитание, аппаратные средства используют одни и те же логические схемы независимо от значения масштабного коэффициента. По существу, логические схемы не знают масштабного коэффициента. Они выполняют подписанную или неподписанную двоичную алгебру с фиксированной точкой, как если бы двоичная точка была справа от b0.
Fixed-Point Designer поддерживает общее двоичное масштабирование точек V = Q ✕ 2E, где V - действительное значение, Q - сохраненное целое значение, а фиксированная экспонента E равна отрицательной части длины дроби. Другими словами, RealWorldValue = StoredInteger ✕ 2 − FracityLength .
Длина дроби определяет масштабирование сохраненного целого значения. Длина слова ограничивает значения, которые может принимать сохраненное целое число, но не ограничивает значения, которые может принимать длина дроби. Программное обеспечение не ограничивает значение показателя степени E на основе длины слова сохраненного целого числа Q. Поскольку E равно − FracityLength, ограничение двоичной точки до смежности с дробью является ненужным; длина дроби может быть отрицательной или больше длины слова.
Например, слово, состоящее из трёх неподписанных битов, обычно представляется в научной нотации одним из следующих способов:
− 2 .bbb = bbb. × 2 − 3
Если экспонента больше 0 или меньше -3, то представление будет включать дополнительные нули:
Эти дополнительные нули никогда не меняются на единицы, поэтому они не появляются в оборудовании. В отличие от показателей с плавающей запятой, показатель с фиксированной запятой никогда не появляется в аппаратном обеспечении, поэтому показатели с фиксированной запятой не ограничиваются конечным числом битов.
Рассмотрим значение со знаком с длиной слова 8, длиной дроби 10 и запомненным целым значением 5 (двоичное значение 00000101). Действительное значение слова вычисляется по формуле RealWorldValue = StoredInteger ✕ 2 − FraciceLength. В этом случае RealWorldValue = 5 ✕ 2 − 10 = 0.0048828125. Поскольку длина дроби на 2 бита больше длины слова, двоичное значение сохраненного целого числа равноx.xx00000101, где x является местозаполнителем неявных нулей. 0.0000000101 (двоичный) эквивалентен 0.0048828125 (десятичное). Для примера использования fi см. раздел Длина дроби больше длины слова.
Типы данных с плавающей запятой характеризуются знаковым битом, полем дроби (или мантиссы) и полем экспоненты. Fixed-Point Designer придерживается стандарта IEEE ® 754-1985 для двоичной арифметики с плавающей запятой (в данном руководстве называется просто IEEE Standard 754) и поддерживает типы данных половинной, одинарной и двойной точности.
При выборе типа данных необходимо учитывать следующие факторы:
Численный диапазон результата
Точность, требуемая для результата
Связанная ошибка квантования (т.е. режим округления)
Метод работы с исключительными арифметическими условиями
Эти варианты зависят, среди прочего, от конкретного приложения, используемой архитектуры компьютера и стоимости разработки.
С помощью Fixed-Point Designer можно исследовать взаимосвязь между типами данных, диапазоном, точностью и ошибкой квантования при моделировании динамических цифровых систем. Simulink ® Coder™ позволяет создавать производственный код на основе этой модели. С помощью HDL Coder™ можно создавать портативный синтезируемый код VHDL и Verilog из моделей Simulink и диаграмм Stateflow ®.