MATLAB.Exponenta
–Û·Ë͇ Matlab&Toolboxes

Simulink Blocksets\Fixed-Point Blockset

К.Г.Жуков"Справочное руководство пользователя Fixed-Point Blockset"

В оглавление книги \ К следующему разделу \ К предыдущему разделу

1. Форматы данных базового семейства DSP 56000 и Fixed-Point Blockset

Терминологический словарь

  • radix, base-основание позиционной системы счисления;
  • radix point-точка(запятая) в позиционном представлении числа.
  • Знак условной (принятой) границы, отделяющей целую часть числа от его дробной части.
  • radix notation-представление по основанию;
  • significant bit(digit)-значащий бит, значащая (значимая) цифра;
  • scale factor-масштабный коэффициент;
  • scaling factor-масштабный множитель.
  • Спецификация в описании данных, посредством которой может быть указано условное местоположение точки при представлении чисел в форме с фиксированной точкой.
  • scaling-пересчет, масштабирование;
  • bias-смещение;
  • least significant bit(LSB)-младший значимый бит;
  • most significant bit(MSB)- старший значимый бит;
  • slope-наклон, крутизна;
  • quantization-квантование, преобразование данных из непрерывной формы в дискретную;
  • fixed-point arithmetic-вычисления с фиксированной точкой.
  • Выполнение арифметических операций над операндами, представленными в форме с фиксированной точкой. Как правило, при этом достигается высокая скорость вычислений, однако велика вероятность получения недостоверного результата вследствие возможного переполнения разрядной сетки (при больших значениях результата) либо значительной погрешности из-за округления (при малых значениях результата).
  • fixed-point representation-представление с фиксированной точкой.
  • Способ представления числа, при котором положение точки, отделяющей дробную часть числа от его целой части, остается неизменной. Обычно принято точку фиксировать после младшего разряда целой части (только целые числа) либо перед старшей цифрой дробной части (только дробные числа).
  • complement-дополнение.
  • Представление отрицательного числа в виде абсолютного значения, дополняющего его до принятого модуля.
  • one’s complement-дополнение до единицы обратный(инверсный) код двоичного числа.
  • Дополнение двоичного числа, образуемое заменой единиц в исходном числе на нули, а нулей на единицы.
  • two’s complement-дополнительный код числа.
  • Дополнение до основания системы счисления. В двоичной системе счисления получается прибавлением единицы в наименьший разряд обратного кода.
  • signed fixed-point value-знаковые значения с фиксированной точкой;
  • unsigned fixed-point value-без знаковые значения с фиксированной точкой;
  • generalized fixed-point-обобщенное (универсальное) представление чисел с фиксированной точкой;
  • rounding-округление;
  • multiplier-множитель сомножитель.

1.1. Формы представления чисел

В аппаратно реализованных цифровых устройствах числа хранятся в памяти в виде двоичных слов. Двоичное слово представляет собой последовательность 0 и 1 фиксированной длины. Аппаратные компоненты интерпретируют эту последовательность в зависимости от типа используемых данных. Числовые данные могут быть представлены в форме с фиксированной (fixed-point) или с плавающей точкой (floating-point).

Числа с фиксированной точкой характеризуются длиной слова в битах, положением двоичной точки(binary point) и могут быть беззнаковыми или знаковыми. Позиция двоичной точки определяет число разрядов в целой и дробной частях машинного слова. Для представления знаковых чисел (отрицательных и положительных) старший разряд двоичного слова отводится под знак числа(sign bit). При представлении беззнаковых чисел с фиксированной точкой разряд знака отсутствует, и он становится значимым разрядом. Отрицательные числа обычно представляются в дополнительном коде. Понятие дополнительного кода детально рассмотрено в разделе 1.2.

Данные с фиксированной точкой могут быть следующих типов:

  • целыми (integers);
  • дробными (fractional);
  • обобщёнными (generalize).

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

Внутри пакета Fixed - Point Blockset место двоичной точки отслеживает программное обеспечение. При аппаратной реализации арифметико-логическое устройство(ALU) процессора выполняет основные операции (сложение, вычитание) над данными целого типа.

Для данных целого типа двоичная точка всегда расположена правее младшего значимого разряда(LSB) двоичного слова. Пользователь имеет возможность определить беззнаковые и знаковые целые числа с помощью внутренних форматов uint и sint соответственно.

По соглашению положение двоичной точки для беззнаковых дробных чисел определено перед старшим разрядом (MSB), а для знаковых - после бита MSB. В этом случае MSB становится знаковым разрядом. Специфицируют этот тип внутренние форматы ufrac и sfrac

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

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

Wi - i разряд числа;
n - длина двоичного слова в битах;
Wn-1- старший значимый разряд (MSB);
W0 - младший значимый разряд (LSB);
2i - вес i-го разряда числа.

Рис 1.1 Формат машинного слова

Двоичная точка занимает четвёртую позицию от младшего (LSB) разряда числа. При этом длина дробной части числа m = 4.

В файле помощи Fixed-Point Blockset для представления такого числа применяется следующая формула:

где - точное значение действительного десятичного числа;
- наклон;
- квантованное (двоично-взвешенное) значение целого числа (stored integer);
- смещение.

Наклон представляется следующим образом:

- наклон дробной части ();
- показатель степени

Совместное использование в выражении (1.1) и обеспечивает Slope/Bias масштабирование. При =0 масштабирование осуществляется только за счёт наклона.

При проектировании реальных цифровых устройств на базе микроконтроллеров (MCU) или сигнальных процессоров (DSP) следует использовать следующий вид выражения (1.1) при =0 и =1

Замечание

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

Квантованное значение приближённо представляет истинное значение действительного числа в виде суммы произведений весовых коэффициентов Wi на веса 2i соответствующих двоичных разрядов машинного слова.

Для беззнаковых чисел с фиксированной точкой определяется формулой:

Квантованное значение знаковых чисел определяется по формуле:

Так как целые числа не имеют дробной части (m=0), то легко получить с учётом (1.3) и (1.4) выражения для :

и для знакового целого числа:

Истинные значения целого без знакового и знакового чисел представляются квантованными в пределах длины машинного слова без погрешности.

Для дробных беззнаковых чисел из-за отсутствия целой части m = n, а для знаковых m = n-1.

В результате подстановки (1.3) и (1.4) в выражения (1.2) с соответствующим значением m и несложных преобразований получим:

Число разрядов в дробной части числа определяет разрешающую способность (resolution). Разрешающая способность - есть наименьшее неравное нулю число, которое определяется значением .

Замечание

Для целых чисел разрешающая способность равна 1, так как m = 0. В документации Math Works разрешающая способность называется точностью(precision).

Другой не менее важной характеристикой чисел с фиксированной точкой является диапазон (range).диапазон является минимальным и максимальным значениями представляемых чисел. Для знаковых чисел обобщённого типа диапазон определяется выражением:

Для определения диапазона чисел целого типа необходимо принять m = 0 и R = 1, а для дробного m = n-1 и R = 2-(n-1)

Выражение (1.9) для беззнаковых чисел обобщённого типа имеет вид:

Диапазон чисел целого типа вычисляется при m = 0 и R = 1. для дробных чисел необходимо принять m = n и R = 2-n

Результаты вычисления диапазонов по формулам (1.9) и (1.10) для всех типов данных с фиксированной точкой представлены в табл. 1.1.

Тип Внутренний формат Минимальные значения (min) Максимальные значения (max) Разрешение
Целый Uint( ) 0 2n-1 1
Sint( ) -2n-1 2n-1-1 1
Дробный Ufrac( ) 0 1-2-n 2-n
Sfrac( ) -1 1-2-(n-1) 2-(n-1)
Обобщённый Ufix( ) 0 2n-m-2-m 2-m
Sfix( ) -2n-1-m 2n-1-m-2-m 2-m

Рассмотрим несколько примеров, поясняющих рассмотренный теоретический материал. Представим заданные значения десятичных чисел в виде чисел с фиксированной точкой обобщённого типа. Длину машинного слова примем равной 8 битам (1 байту).

Пример 1.

Заданное число V=+6.2510 необходимо представить в формате sfix (8). Положение двоичной точки определим m = 4. Используя последнюю строку табл.1.1, вычислим для заданных n = 8 и m = 4 максимальное и минимальное представленные действительные числа. Заданное число +6.25 находится внутри допустимого диапазона:

min = -8 < 6.25 < max = 7.9375

Из формулы (1.2) найдём значение = 6.25/2-4 = 6.25 x 16 = 100 = 26 + 25 + 22. Двоичный эквивалент десятичного в виде восьми разрядного машинного слова равен 0110 0100. Так как значение в данном случае является целым. То действительное число представляется абсолютно точно (без погрешности). Рис 1.2 подтверждает правильность полученного результата. Веса двоичных разрядов записаны с учётом масштабирующего множителя 2-4.

Рис 1.2 Представление десятичного числа в формате sfix

Пример 2.

Представить десятичное число 6.1 в том же самом формате. Из формулы (1.2) определим:

= 6.1/2-4 = 6.1 x 16 = 97.6

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

= 2-4 x 0.4 = 0.025

Двоичный эквивалент = 98 = 26 + 25 + 22 будет равен 0110 0010.

На представленном рисунке легко определить значение абсолютной погрешности.


Рис 1.3 Приближённое представление действительного числа

= 6.125 - 6.1 = 0.025

Чтобы уменьшить величину погрешности, необходимо увеличить длину машинного слова в 2 раза (n=16). Число разрядов под целую часть числа оставить тем же самым. С учётом знакового разряда длина дробной части числа станет равной m=12. Новое значение = 6.1 x 2-12 = 2498.6. Из-за того, что результат опять дробное число его необходимо округлить до ближайшего целого 24986. Квантованное значение = 24986 = 214 + 213 + 28 + 27 + 24 + 23 + 21 в виде 16-ти разрядного слова будет равно: 0110000110011010. Учитывая масштабирующий множитель равный 2-12, получим истинное значение дробной части числа равное сумме: 2-4 + 2-5 + 2-8 + 2-9 + 2-11 = 0.10009765625...

Погрешность в этом случае будет равна = 0,00009765625. Следует отметить, что при увеличении длины дробной части числа на 8 двоичных разрядов величина погрешности уменьшилась в 28=256 раз.

Замечание.

Погрешность представления действительных чисел в форматах ufix, sfix не превышает половины веса младшего двоичного разряда дробной части числа .

При выборе типа данных необходимо учитывать следующие факторы:
  • диапазон для результатов вычислений;
  • требуемую погрешность результата;
  • ошибки, связанные с квантованием;
  • алгоритм реализации вычислений;
  • архитектуру арифметического устройства;
  • стоимость разработки.
Fixed-Point Blockset позволяет в процессе моделирования цифрового устройства оптимальным образом согласовать эти противоречивые факторы. Real-Time Workshop (RTW) сгенерирует код для целевого процессора.

Форма представления числовых данных с фиксированной точкой имеет существенный недостаток. В ней не представимы одновременно очень большие и очень маленькие числа при практически реализуемом размере машинного слова (32 бита). Для представления чисел в широком диапазоне применяется другая форма - плавающая точка. Основным преимуществом этой формы заключается в том, что при одинаковой длине машинного слова, диапазон представленных чисел значительно превышает диапазон чисел с фиксированной точкой.

Представления числа с плавающей точкой в общем случае имеет вид:

где - мантисса числа;
V - правильная дробь;
- характеристика числа V;
p - порядок;
s - основание характеристики.

Порядок p,который может быть положительным или отрицательным целым числом, определяет положение точки в числе V.

Для двоичных чисел (1.11) примет вид:

Число бит для хранения мантиссы и порядка зависит от типа данных с плавающей точкой.
Рассмотрим в качестве примера процессор, в котором слова имеют длину 32 двоичных разряда. Пусть двоичное число V в памяти изображается двоичным словом

W31W30W29...W24W23.......W0

которому соответствует формат данных, показанных на рис.1.4.


Рис 1.4 Формат данных с плавающей точкой

Разряды W24-W30 используются для представления порядка со знаком +/-p, при этом разряд W30 отображает знак порядка, а разряды W24-W29 - модуль порядка. Например, порядок - 5 представляется в виде 1000101. Разряды W0-W23 отводятся под изображение модуля мантиссы числа. Знак мантиссы (числа) изображает разряд W31.

Двоичное число (1.11) называется нормализованным, если в старшем разряде W23 с весом 2-1 стоит единица. Это условие соответствует следующему неравенству:

Поскольку для порядка p (включая его знак) отведено семь разрядов, то порядок может быть любым целым числом от -63 (1111111) до +63 (0111111).

Наибольшее и наименьшее нормализованные числа в разрядной сетке ( рис.1.4) соответственно равны:

0111111 x 0111...1 = 263 x (1 - 2-24 и 1111111 x 0.100...0 = 2-63 x 2-1 = 2-64

С учетом знака f в рассмотренном формате, можно представить числа, лежащие в диапазоне от -263(1-2-24) до -2-64 и от +2-64 до +263(1-2-24). Это соответствует для абсолютных величин диапазону чисел примерно от 10-20 до 1020 и значительно превышает диапазон чисел с фиксированной точкой, представленных в том же 32-разрядном слове. Число, содержащее во всех разрядных сетки 0, т.е. имеющие положительную нулевую мантиссу и положительный нулевой порядок, называется ''истинным нулём''.

Замечание

В отечественной литературе такая форма представления чисел называется также полулогарифмической, так как часть числа - характеристика выражена в логарифмической форме. В документации Eixed-Point Blockset она называется "научная система изображения" (scientific notation).

Основные преимущества данных в формате с фиксированной точкой по сравнению с плавающей точкой представлены в следующей таблице:

Показатель Фиксированная точка Плавающая точка
Размер памяти (RAM,ROM) малый большой
Время выполнения арифметических команд меньшее большее
Время разработки устройств большее меньшее
Восприимчивость к ошибкам большая малая
Доступность и стоимость аппаратуры практически все микроконтроллеры, недорогие только высокоуровневые контроллеры, дорогие

В процессорах базового семейства DSP 5600 числа представляют в форме с фиксированной точкой. При представлении чисел в такой форме положение точки фиксируется условно в определенном месте относительно разрядов двоичного числа. Обычно подразумевается, что точка находится или перед старшим разрядом, или после младшего разряда. В первом случае могут быть представлены только числа, которые по модулю меньше 1(дробные числа), во втором – только целые числа. Под дробные и целые числа в процессорах DSP 5600 выделяется 24 двоичных разряда (слово 24 бита) или 48 разрядов (длинное слово).

Разряды нумеруются справа налево. Младший разряд имеет номер 0. Для кодировки знака числа используется ‘знаковый’ разряд (старший). В этом разряде 0 соответствует плюсу, а 1-минусу. Остальные разряды слова представляют модуль числа: для положительного значения они соответствуют записи прямого кода (натурального кода) числа; для отрицательного значения – записи дополнительного кода.

1.2. Понятие прямого, обратного и дополнительного кодов

Определение 1. Прямым кодом числа называют представление беззнакового двоичного числа.

Для положительного числа прямой код представляет модуль числа.

Определение 2. Обратный код (дополнение до 1) двоичного числа получают заменой всех его единиц на нули, а нулей на единицы.

Пример. Дополнение до 1 двоичного числа 001000 есть двоичное число 110111.

Определение 3. Дополнительный код (дополнение до 2) двоичного числа получается добавлением 1 к младшему значащему разряду его дополнения до 1.

Пример. Дополнение до 2 двоичного числа 001000=110111+000001=111000.

Модуль отрицательного числа представлен в дополнительном коде.

При работе с фиксированной точкой необходимо отличать представление чисел со знаком от значений без знака. Целые беззнаковые числа включают в себя 0 и все положительные значения. Целые числа со знаком состоят из беззнаковых целых и целых со значениями меньшими 0. С помощью фиксированного количества битов можно выразить фиксированное число знаковых и без знаковых значений. Например, для 4 бит наименьшее значение равно 0000, наибольшее беззнаковое значение – 1111. В десятичном представлении этому соответствует интервал от 0 до 15 – всего 16 значений включая 0. Для 8 бит (байта) наибольшее беззнаковое значение – 11111111, или 255 в десятичном представлении. Что дает 256 возможных значений для одного байта. В математике количество чисел может быть бесконечным, в то же время как в процессоре количество чисел имеет конечный предел. С помощью фиксированного числа битов можно выразить только определенное количество значений (в общем случае 2 n), поэтому представление отрицательных чисел требует особого внимания.

Простейшая числовая интерпретация двоичного слова – это представление целого без знака (прямой код). Биты слова рассматриваются как разряды двоичного целого числа, т.е. являются весами, которые возрастают справа налево по степеням двойки:

2(n-1),…,23,22,21,20 и значение слова W полагается равным

W=Wn-1*2n-1+Wn-2*2n-2 +…. + Wi*2i +…. +W2*22+W1*21+W020,

где Wi- значение i–го разряда, т.е. 0 или 1.

Слово принимает минимальное значение равное 0, когда значение всех его битов равно 0. Максимальное значение W=2n-1 соответствует случаю, в котором значения всех битов равны 1.

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

Дополнительный код заключается в том, что из 2n значений двоичного слова длины n только первые 2n/2 числовых значений интерпретируются как неотрицательные, в то время как остальные 2n/2 значения представляют собой отрицательные числа сравнимые по модулю 2n с теми положительными числами, которые представлены этими значениями слова в прямом коде. Таким образом, если слово W в прямом коде является числом, удовлетворяющим отношению W<=2n-1-1, то оно в дополнительном коде сохраняет свое натуральное значение, в противном случае его значение в дополнительном коде получается вычитанием из значения в прямом коде величины 2n. Другими словами, интервал числовых значений слова, простирающийся в случае прямого кода от 0 до 2n-1, в дополнительном коде складывается из двух половинных интервалов. Не отрицательные числа от 0 до 2n-1-1, а далее отрицательные числа от –2n-1 до –1, отстоящие от своих прототипов из второй половины интервала чисел, представленных в прямом коде, точно на 2n.

Код называется дополнительным, потому что отрицательные числа в нем представлены значениями слова, которые в прямом коде обозначают числа, дополняющие абсолютные значения величины соответствующих отрицательных чисел до 2n.Иначе: абсолютная величина заданного в дополнительном коде отрицательного числа получатся вычитанием прямого кода данного слова из 2n. Например, четырехбитное слово 1001 в прямом коде соответствует 9, а в дополнительном коде: 9-24=-7. Ясно, что прямой код этого значения может быть получен вычитанием из 24 значения слова в прямом коде 24-9=7.

К понятию дополнительного кода, как видно весьма неудобного, можно подойти естественным путем, выполняя в прямом коде вычитание из меньшего числа большего. Этот подход не избавляет от неудобств, но может объяснить, что неудобства не придуманы людьми, а являются неотъемлемым свойством двоичного представления чисел. Так при вычитании единицы из нуля, который представлен словом W, все n битов которого равны нулю, обрабатывая, крайний справа бит W0, мы вынуждены сделать заем из следующего по старшинству бита W1. Попытка вычитать без заема приводит к не представимому в рамках бита отрицательному результату. Значение бита W1 также равно 0, а заем равносилен вычитанию 1, поэтому возникает необходимость заема из W2. Далее этот процесс распространяется по всей длине слова W и даже за его пределы - возникает заем из несуществующего Wn бита.

В записи столбцом это выглядит так:

            00 ….000
          -
            00 ….001

            ________
   (…11) 11 ….111

Единицы и многоточие в скобках являются обозначением того, что получаемая в результате вычитания последовательность единиц продолжается влево бесконечно. Это и есть представление в прямом коде минус единицы. Последовательно модифицируя его вычитанием единицы, получим представление других отрицательных чисел: …111….110=-2, …111….101=-3 т.д.

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

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

(положительное или равное нулю).

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

-7-6...-2-1012...67
     0000     
    1111 0001    
   1110   0010   
  ...     ...  
 1010       0110 
1001         0111
     1000     
     -8     

За исключением 0000 и 1000 рассматриваемые значения группируются в пары относительно операции изменения знака (каждая такая пара располагается на отдельной строке). Члены пары равны по абсолютной величине, но противоположны по знаку. Операция изменения знака числа W, представленного в дополнительном коде, может быть реализована как побитная инверсия слова W, т.е. инверсия значений всех битов с 0 на 1 и с 1 на 0, с последующим прибавлением к инверсному коду единицы.

Например, слово 1011 представляет –5, в результате инвертирования превращается в 0100, а после прибавления 1 – в 0101, что представляет собой десятичное число 5. Обратно инвертируя 0101, получим 1010, а затем, добавив 1, имеем 1011.

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

На практике применяется другой более быстрый прием изменения знака числа. Производится последовательная обработка битов слова W, начиная с W0. Смысл этой обработки заключается в следующем. Значения обрабатываемых битов не изменяются, пока не встретится бит, равный 1(т.е. не изменяются хвостовые нули). Не изменяется и встретившаяся первой 1, но вся последующая часть слова инвертируется. Например, в слове 0110, представляющем число 6, сохраняется хвостовой нуль и следующая за ним первая единица, а остальные биты инвертируются. В результате имеем 1010, т.е. –6. Обратно, обрабатывая тем же способом слово 1010, получим 0110.

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

В файле помощи Fixed-Point Blockset описан другой способ представления знакового числа. Биту знака приписан отрицательный вес –Wn-1*2n-1, т.е. принимают, что числовое значение слова определяется формулой:

W=-Wn-1*2n-1+Wn-2*2n-2+…+Wi*2i+…+W2*22+W1*21+W0*20

Число W в таком представлении можно интерпретировать как результат операции вычитания в прямом коде двух слов. Первое слово W1(уменьшаемое) имеет всегда нуль в бите знака (W1n-1=0) и сохраняет значения прочих битов Wi: W1=0Wn-2Wn-3….W2W1 W0. Второе слово (вычитаемое) содержит бит знака Wn-1 и нули в качестве остальных битов W2= Wn-100….000. Таким образом, W=W1-W2. Для неотрицательного числа W результат равен прямому коду числа W1. При отрицательном значении W результат является дополнением W1 до 2n-1. Например, 8-ми разрядное знаковое число 00000011 равно W1=00000011=3, а число

10000011= -125, т.к. оно является дополнением W1=3 до 27=128.

1.5. Представление чисел в форме с плавающей точкой

Fixed-Point Blockset поддерживает IEEE-стандарт представления чисел с плавающей точкой. IEEE стандарт используют практически все процессоры и арифметические сопроцессоры, а так же высокоуровневые сигнальные процессоры. Отличительная особенность IEEE стандарта от формы (1.11) заключается в следующем:

1.Число в памяти хранится всегда с нормализованной мантиссой. По этой причине старшую единицу мантиссы можно и не хранить. Это экономит один бит и, следовательно, увеличивает диапазон представленных чисел. Эта единица присутствует неявно и называется неявной единицей (implicit one). Отбрасывания старшей цифры мантиссы выполняется для двух форматов single и double. Такая форма представления мантиссы обозначается 1..

2.Порядок числа p хранится "сдвинутым", т.е. к нему прибавляется фиксированное число (bias) так, чтобы порядок был всегда неотрицательным. Для чисел формата single прибавляется 127, для чисел формата double - 1023. Всегда неотрицательный порядок избавляет от необходимости выделять один бай для хранения знака порядка и упрощает выполнения операций сравнения порядков и арифметических операций над ними.

Распределение разрядов машинного слова в формате single представлено на рис 1.5.


Рис 1.5. IEEE-стандарт внутреннего представления данных формата single

Истинное значение вещественного числа , соответствующее формату single представляется в виде:

Рассмотрим ряд примеров, поясняющих переход к представлению данных в формате (1.15)

Пример 1

Вещественное положительное число 15.375 записать в формат IEEE. В двоичной системе с фиксированной точкой число будет представляться машинным словом 1111.011. В формате single IEEE-стандарта запишется так:

1.111011x211. Учитывая отбрасывания неявной единицы и сдвиг порядка, получаем внутреннее представление числа:
sign = 0;

p = 3 + 127 = 130 = 128 + 2 = 10000010(2)

Окончательное внутреннее представление в формате single:

Пример 2

-16.5(10)=-100000.1(2)

В формате IEEE-стандарта:- 1.00001*2 +100 внутреннее представление числа:
sign=1;

p = 4 + 127 = 131 = 128 + 3 = 10000011(2);


Пример 3

-0.0625(10) = -0.0001(2)

В формате с плавающей точкой IEEE-стандарт: - 1.0000*2-100
Внутреннее представление числа:
sign = 1;

p = -4 + 127 = 123 = 01111011(2);

Замечание

Блок Display не позволяет отображать числовые данные с плавающей точкой в формате внутреннего представления. Внутренний формат становится доступным после передачи значения переменной Sim-модели в Workspace. В результате набора команды

>>format hex в командном окне Matlab данные из рабочей области отображаются во внутреннем формате IEEE в шестнадцатеричной системе.

При разработке цифровых устройств реального времени IEEE-стандарт необходимо использовать для следующих целей:
  • Проверки работоспособности первоначального варианта sim-модели устройства;
  • Определения максимальных и минимальных значений переменных sim-модели с целью оптимального выбора масштабов (3.1);
  • Задания параметров генераторов стандартных сигналов Pulse Generator, Ramp, Sine Wave с последующим преобразованием в формате с фиксированной точкой при помощи блока Data Type Conversion.

В оглавление книги \ К следующему разделу \ К предыдущему разделу


Поиск по сайту:

Система Orphus

Яндекс.Метрика