Система из 4 модулей (2^n-1, 2^n+1, 2^(n+1)-1, 2^(n+1)+1)
Система модулей {2n-1, 2n+1, 2n+1-1, 2n+1+1} - не является попарно взаимно простой, что несколько сокращает её динамический диапазон, но как будет показано не существенно.
Содержание
Динамический диапазон
где - наименьшее общее кратное.
Что бы найти , требуется определить наибольший общий делитель() для всех четырех модулей. Так как и , а также и взаимнопросты, то необходимо найти наибольший общий делитель их попарного произведения.
Отсюда по формуле для вычисления :
Таблица покрытия
n |
Базис |
Покрываемый интервал [0;M) |
Бинарная битность |
2 |
3, 5, 7, 9 |
[0; 315) |
8 |
3 |
7, 9, 15, 17 |
[0; 5355) |
12 |
4 |
15, 17, 31, 33 |
[0; 86955) |
16 |
8 |
255, 257, 511, 513 |
[0; 5726513835) |
32 |
16 |
65535, 65537, 131071, 131073 |
[0; 24595658757787789995) |
64 |
Прямое преобразование
Для прямого преобразования используются следующие свойства:
и
которое позволяет для преобразования целого числа в модулярное представление использовать следующие формулы:
- Количество слагаемых определяется размерностью входных данных.
- Запись - означает взять биты из двоичной записи числа с позиции до позиции .
Так как значение внутри модуля незначительно превосходит сам модуль, то ответ можно получить по следующей схеме:
при условии что максимально возможное значение менее чем
Обратное преобразование
Обратное преобразование строится на базе CRT III (Китайская теорема об остатках ver.3) [1]. Если задана система из двух модулей то значение может быть найдено по следующей формуле:
где
- - НОД (наибольший общий делитель)
- - обратный элемент к по модулю
- значение должно быть больше
Можно заметить что если взаимно просты, то и формула превращается в стандартную формулу полиадического кода (Mixed Radix System).
Обратный преобразователь для системы модулей из четырех элементов состоит из двух уровней. На первом уровне считаются промежуточные значения и (по формулам CRT III):
Как видно рассчет обоих коэфициентов легко реализуется на схемном уровне:
- Умножение на по сути сдвиг
- Умножение - сдвиг и сложение
- Вычет по модулю - одно сложение, вычитание и мультиплексор.
На втором уровне преобразователя и формула выглядит следующим образом:
Несложно показать что: [2]
Финальная формула в итоге будет:
Ссылки
[1] http://etd.lsu.edu/docs/available/etd-11052010-141445/unrestricted/Report_Nov2.pdf