Что такое каноническая цифра со знаком? - PullRequest
9 голосов
/ 01 августа 2011

Что такое каноническая цифра со знаком (CSD) и как преобразовать двоичное число в CSD, а CSD обратно в двоичное число? Как узнать, следует ли канонически выбирать цифру CSD как +, - или 0?

Ответы [ 2 ]

7 голосов
/ 02 августа 2011

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

Каноническое представление цифр со знаком одинаково, но при условии ограничения, что никакие две последовательные цифры не равны 0.Получается, что каждое число имеет уникальное представление в CSD.

Подробнее см. Слайды 31 в Арифметике битового уровня Пархи , включая алгоритм преобразования двоичных данных в CSD.

4 голосов
/ 12 декабря 2014

Что такое формат канонической цифровой подписи?

Каноническая цифровая цифра (CSD) представляет собой тип представления числа.Важными характеристиками представления CSD являются:

  1. Представление номера CSD состоит из чисел 0, 1 и -1.[ 1 , 2 ].
  2. Представление номера CSD является уникальным [ 2 ].
  3. Номерненулевые цифры минимальны [ 2 ].
  4. Не может быть двух последовательных ненулевых цифр [ 2 ].

Как преобразовать число в его представление CSD?

Сначала найдите двоичное представление числа.

Пример 1 Давайте возьмем, например, число 287, которое является 1 0001 1111 в двоичном представлении.(256 + 16 + 8 + 4 + 2 + 1 = 287)

1 0001 1111

Начиная справа (LSB), если вы найдете больше, чем ненулевые элементы (1 или -1) в строке, возьми их все, плюс следующий ноль.(если слева от MSB нет нуля, создайте его там).Мы видим, что первая часть этого числа -

01 1111

Добавьте 1 к числу (т. Е. Измените 0 на 1 и все 1 на 0) и установите для крайней правой цифры значение -1.

01 1111 -> 10 000-1

Вы можете проверить, что число остается прежним: 16 + 8 + 4 + 2 + 1 = 31 = 32 + (-1).Теперь число выглядит следующим образом

1 0010 000-1

Поскольку последовательных ненулевых цифр больше нет, преобразование завершено.Таким образом, представление CSD для числа 287 составляет 1 0010 000-1, что составляет 256 + 31 - 1.

Пример 2

Как насчет немного более сложныхпример.Число 345. В двоичном виде это

1 0101 1001

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

1 0110 -1001

Теперь мы только что создали еще одну пару цифр, которую необходимо преобразовать.Возьмите 011 и добавьте к нему единицу (получите 100), и установите для последней цифры -1.(получите 10-1).Теперь число выглядит так:

1 10-10 -1001

Сделайте то же самое снова.На этот раз вам нужно будет представить ноль в левой части MSB.

10 -10-10 -1001

Вы можете убедиться, что это правильное представление CSD, наблюдая, что: 1) Нет последовательныхноль цифр.2) Сумма добавляется к 325 (512 - 128 - 32 - 8 + 1 = 345).

Более формальные определения этого алгоритма можно найти в [ 2 ].

Мотивация представления CSD

CSD может использоваться и в некоторых других приложениях, но это перспектива цифровой микроэлектроники.Это часто используется в цифровом умножении.[ 1 , 2 ].Цифровое умножение состоит из двух этапов: вычисление частичных произведений и суммирование частичных произведений.Рассмотрим умножение 1010 и 1011:

       1010
x      1011

       1010
      1010
     0000
+   1010 

=   1101110

Как видим, число ненулевых частичных произведений (1091 * s), которые должны быть суммированы, зависит от количества ненулевых цифр в множителе.Таким образом, время вычисления суммы частичных произведений зависит от количества ненулевых цифр в умножителе.Поэтому цифровое умножение с использованием преобразованных чисел CSD происходит быстрее, чем с использованием обычных цифровых чисел.Форма CSD содержит на 33% меньше ненулевых цифр, чем двоичное представление (в среднем).Например, обычное умножение с плавающей запятой двойной точности может занять 100,2 нс, но только 93,2 нс, при использовании представления CSD.[ 1 ]

А как насчет отрицательных?Есть ли на самом деле три состояния (уровни напряжения) в микросхеме?Нет, частичные произведения, рассчитанные с отрицательным знаком, не суммируются сразу.Вместо этого вы добавляете 2 дополнения (т.е. отрицательное представление) этих чисел к окончательной сумме.


Источники:

[ 1 ] Д. Харини Шарма, Адданки Пурна Рамеш: Множитель с плавающей запятой с использованием канонической цифры со знаком

[ 2 ] ГуставоА. Руис, Mercedes Grand: Эффективное каноническое цифровое перекодирование со знаком

...