Скачиваний:
94
Добавлен:
15.06.2014
Размер:
864.25 Кб
Скачать

ствования элемента N 1 число N должно быть взаимно простым

сF , то есть pi не должен делить N .

4.3.Числа Ферма. Для того, чтобы теоретико-числовые преобразования были более привлекательными по сравнению с БПФ при вычислении свертки, они должны быть эффективными с вычислительной точки зрения. Предъявляются три следующих требования к таким преобразованиям.

Во-первых, N должно быть существенно составным (предпочтительно степенью 2) для того, чтобы существовал быстрый алгоритм, аналогичный БПФ.

Во-вторых, так как умножение комплексных чисел при вычислениях БПФ требует больших затрат машинного времени, важ-

 

но, чтобы умножение на степень α

было достаточно простой опе-

 

рацией. Это возможно, если степени

имеют немного разрядов в

 

двоичном представлении; предпочтительно также, чтобы оно было

αF

степенью двух, поскольку в этом случае умножение на степень

сводится к сдвигу слова.

 

 

 

 

 

 

В-третьих, для того, чтобы упростить арифметические опе-

 

рации по модулю

, F в двоичном представлении также должно

 

иметь небольшое количество разрядов.

 

 

Проанализируем вопрос о наилучшем выборе F , для которо-

 

го максимальная длина преобразования была бы не слишком ко-

 

роткой. Первая возможность состоит в выборе числа 2k . Посколь-

 

ку 2k делится на 2 , максимально возможная длина преобразова-

 

ния равна 1. Поэтому рассмотрим 2k

1, где k – составное число

 

вида PQ и P – простое. Тогда 2P

1 делит 2PQ 1, и максималь-

 

но возможная длина преобразования будет не больше длины, воз-

 

можной для 2P

1.

 

 

Поэтому представляют интерес для рассмотрения только про-

41

стые P . Числа такого вида известны как числа Мерсенна. Они допускают длину, по крайней мере, 2P , что соответствует выбору α − 1.

Пусть и k выбрано сначала нечетным. Тогда 3 де-

лит 2k + 1, и наибольшая возможная длина преобразования равна

2 . Поэтому следует рассматривать только четные k .

 

Пусть k равно s = 2t , где s – нечетное число. Тогда

де-

лит 2s 2t + 1, и длина возможного преобразования будет определяться длиной, возможной для 22t + 1. Поэтому представляют интерес целые числа вида 22t + 1.

Числа Ферма представляются оптимальными в том смысле, что они соответствуют преобразованиям, имеющим длину, представляющую практический интерес при умеренной длине кодово-

го слова. Будем считать хорошими числа Ft =

2b + 1, b = 2t , t – по-

ложительное целое число.

называется t м числом Ферма.

Арифметические операции по модулю

могут быть выполне-

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

Если значение b , полученное из условия отсутствия переполнения, не является степенью 2, то для того, чтобы можно было использовать числа Ферма, его необходимо увеличить до ближайшей степени 2. При выполнении некоторых условий с помощью ПЧФ может быть вычислена свертка двух целочисленных последовательностей длины N .

Рассмотрим возможные значения N , для которых существует

42

преобразование с числами Ферма при условии, что выбрано число Ft . Для существования преобразований по модулю Ft длины N необходимо, чтобы N делило 0(Ft ) . Так как числа Ферма до F4 простые, то 0(Ft ) = 2b , и, следовательно, существуют преобразования с числами Ферма для любого N = 2m ,m b . Для этих простых чисел Ферма целое 3 является порядка N = 2b , допускающим наибольшую длину преобразования. Конечно, имеется 2b1 других целых чисел, которые также имеют порядок 2b . Они могут быть получены возведением 3 в нечетную степень.

Если α имеет порядок , то α P (mod Ft ) будет иметь поря-

док N P , если N P является целым числом. Поэтому с помощью

чисел Ферма целое число α порядка

, определяется по

αFNm

25

 

 

формуле 32bm (mod F ) . Целое 2 имеет порядок 2b =

2t + 1 . Если α

 

 

t

 

 

 

выбирается равным 2 или степени 2, то все степени

будут неко-

(b =

32)торыми степенями 2, и для этих случаев преобразование с числами

,m

b

 

Ферма может быть вычислено эффективно. Такое преобразование чисел Ферма называется преобразованием Рейдера.

Другие простые числа Ферма неизвестны. Для задач цифровой фильтрации наибольшую практическую ценность представля-

ют составные числа Ферма

и Fjβ

(b = 64) . В настоящее

 

6

 

время доказано, что каждый простой сомножитель Ft имеет вид

K =

2t+ 2

+ 1

, поэтому 2t+ 2 делит

0(F )

для t > 4 . В частности, для

 

 

 

 

 

t

α

F

и F

можно проверить, что 0(F ) =

2t + 2 , поэтому для этих чи-

5

6

 

 

 

t

 

сел Ферма максимальная возможная длина преобразования равна

2t+ 2 = 4b .

ПРИМЕР. При выполненииЧПФ ЧПФ входногоБПФсигнала, изображенногонарисунке1.1,можнополучитьследующиерезультаты(рисунок4.1).

43

 

t

b

Ft

N

N

 

Nmax

α

 

 

 

 

 

0=2

a = N

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 4.1. Сравнение результатов ЧПФ и БПФ

 

 

3

8

8

16

32

 

256

3

 

 

2 +1

 

 

 

В таблице 4.1 указаны значения

 

для двух наиболее важных

 

4

16

16

32

64 N

65536

3

 

 

2 +1

 

на практике значений , а также значения максимальных возмож-

 

5

32

32

64

128

 

128

 

 

 

2 +1α

 

2

 

ных

для чаще всего64

 

 

 

 

b .

используемых на практике значений

 

6

64

2 +1

128

256

 

256

2

 

 

 

 

 

 

 

 

 

Таблица 4.1

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

44

ния значения Ft / 4 свертываются. В силу свойств модулярной арифметики коэффициенты преобразования с числами Ферма, по-види- мому, не имеют определенного физического смысла.

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

4.4. Метод Макклеллана. ЧПФ временной последовательности чисел x(n) определяется как

 

N 1

(4.20)

 

X (k) = ¦ x(n)α nk mod Ft ,k = 0,1, , N 1,

 

n= 0

 

N

где N – длина последовательности, α – корень из единицы поряд-

ка и mod Ft – модуль преобразования, определяющий конечное

 

 

поле или кольца целых чисел.

 

 

При соответствующем выборе значений α , N, F на практике мо-

 

t

 

 

гут быть использованы алгоритмы типа БПФ, в которых каждое умно-

 

жение осуществляется путем сдвига двоичного слова и вычитания.

 

При описании программной реализации ЧПФ Агарвал и Бар-

 

рас определили двоичную арифметику по модулю Ft . Для пред-

 

ставления чисел при таком выборе модуля требуется b +

1 двоич-

 

ных разрядов (бит). Для представления величины 2b = −

1mod(F )

 

 

t

требуется (b + 1) разряд. Для упрощения операций в модулярной арифметике Агарвал и Баррас ограничились реализацией b -разряд- ной арифметики. Это вносило своеобразный «шум квантования» при появлении во входных данных –1 и приводило к возникнове-

45

нию чрезвычайно малой, но вполне реальной вероятности искажения блока данных после вычисления ЧПФ. Конечно, желательно вычислять ЧПФ точно.

Трудности, возникающие при построении двоичной арифметики по модулю Ft , становятся понятными, если рассмотреть умножение или сложение в кольце целых чисел по модулю Ft , вклю-

чая двоичное представление

1,2b . Так, при b = 4 умножение

10000(1) на себя дает

.

Метод точного вычисления ЧПФ и его реализация были описаны Макклелланом. Метод Макклеллана предполагает введение нового двоичного кода для представления целых чисел по модулю

. Пусть для двоичного представления используется (b + 1) раз-

ряд, так что A =

[ab ,ab1 , ,a0] . Тогда этот новый код строится сле-

дующим образом: если ab = 1, то A =

 

0 . Ecли ab =

0 ,тo

 

 

 

 

 

 

 

b1

 

 

 

b2

 

 

 

 

 

 

 

-1,a

j

 

=

1;

 

A = σ

 

2

+ σ

 

2

+

+

σ

 

, где σ

 

=

°

 

 

 

.

b1

 

b2

 

0

j

®

 

 

=

0

 

 

 

 

 

 

 

 

 

 

 

°0,a

 

j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

¯

 

 

 

 

Таким образом, метод Макклеллана представления чисел по

модулю Ft сводится к естественному двоичному взвешиванию с возможными значениями разрядов ± 1. Этим методом нуль представляется двоичной записью числа (при b = 4 0 представляется как 10000 ), причем (b + 1) и разряд используются только для представления 0 . Наличие дополнительного разряда при выполнении операций сложения или умножения, включающих числа, используемые для представления 0 , обнаруживается, и естественный порядок выполнения этих операций нарушается для получения верного результата. Этим по существу исключаются операции над (b + 1) -разрядным словом.

46

Макклеллан показал, что такое представление чисел дает возможность построить двоичную арифметику по модулю Ft , позволяющую получать отрицательные числа, осуществлять сложение и умножение на целочисленные степени 2. Эта новая арифметика по своей сложности не выше обычной комплементарной по отношению к 1 арифметике.

4.5. Аппаратурная реализация арифметических операций.

 

 

 

 

Так как структура ЧПФ сходна со структурой ДПФ и N является

 

 

 

 

степенью 2, то существует быстрый алгоритм вычисления ЧПФ,

 

 

 

 

аналогичный БПФ по основанию 2. Фактически изменение сводится

 

 

 

 

к замене W = exp(j2π / N ) на

в любом алгоритме БПФ. При

 

 

 

 

вычислении ЧПФ арифметические операции выполняются по мо-

 

 

 

 

дулю

. В такой арифметике единственно допустимыми це-

 

 

 

 

лыми числами являются 0,1, ,2b . Все целые, которые по абсолют-

α

b

+

1

ной величине не превосходят 2b

1 , могут быть представлены од-

2

 

 

 

 

нозначно.

Отрицательные целые числа представляются путем их сложе-

ния с числом 2b + 1, такое представление во многом сходно с формой представления отрицательных чисел путем дополнения до двух

или единицы. Все целые числа от 0 до 2b 1 могут быть записаны в b -разрядном двоичном регистре.

Остается проблема представления числа 2b . Если входные данные некоррелированы, то вероятность того, что это число появится в результате выполнения арифметической операции, при-

близительно равна 2b . Для задач цифровой фильтрации наиболее типичным является выбор b равным 32 или 64 ; в этих случаях

47

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

2b ценой усложнения аппаратуры.

4.6. Основные арифметические операции в арифметике с числами Ферма. Рассмотрим реализацию основных арифметических операций в арифметике по модулю F , исходя из b -битового представления целых чисел.

Представление чисел с уменьшением на 1. Чтобы представить все числа в кольце целых чисел по модулю Ft , необходим (b + 1) разряд. Дополнительный разряд требуется для представления чис-

ла 2b = − 1mod F . Для решения проблемы

построения

двоичной

 

 

t

Двоичное

Число,

 

 

 

 

 

Обычное

 

 

 

арифметики с этим дополнительным разрядом используют моди-

 

 

число

число

увеличенное

 

исключить

фицированную двоичную систему счисленияна. Чтобы1

участие в

операциях сложения и умножения этого дополнительно-

0

 

 

00000

1

 

 

 

го разряда,

присвоим дополнительному разряду значение 1 лишь

1

 

 

00001

2

 

 

 

только в том

случае, когда представляемое число есть 0.

Это можно

2

 

 

00010

3

 

 

 

 

3

 

 

00011

4

 

 

 

сделать, вычитая 1 из естественного двоичного представления каж-

 

 

4

 

 

00100

5

 

 

 

дого целого

 

числа в кольце

 

.

00101

6

 

 

 

 

 

5

 

 

 

 

 

В таблице 4.2 приведены естественная

двоичная

форма пред-

 

6

 

 

00110

7

 

 

числа на

ставления числа и 7форма представления00111

с уменьшением8

 

 

8

 

 

01000

9 (-8)

 

 

 

единицу при

 

b = 49(.-8)

 

 

01001

10 (-7)

 

Таблица 4.2

 

 

 

 

 

10(-7)

 

 

01010

11 (-6)

 

 

 

11(-6)

 

 

01011

12 (-5)

 

 

 

 

 

12(-5)

 

 

01100

13 (-4)

 

 

 

 

 

13(-4)

 

 

01101

14 (-3)

 

 

 

 

 

14(-3)

 

 

01110

15 (-2)

 

 

 

 

 

15(-2)

 

 

01111

16 (-1)

 

 

 

 

 

16(-1)

 

 

10000

0

 

 

 

48

 

b1

 

ai = 1, тогда

Изменение знака. Пусть A =

¦ai 2i ,ai

= 0 или

 

i= 0

 

 

 

 

b1

b1

2i (2b 1)

=

b1

2i (2b 1) + 2b + 1mod F

b1

2i + 2mod.F

 

 

A = − ¦a

2i = ¦a

¦a

= ¦a

 

 

 

i

i

 

 

i

t

i

t

 

 

 

i= 0

i= 0

 

 

i= 0

 

i= 0

 

 

 

 

Таким образом, чтобы изменить знак, необходимо значение

 

 

каждого двоичного разряда заменить на дополнительное и к резуль-

- ½тату прибавить 2.

 

 

 

 

 

°

°

=

 

 

 

 

 

 

− = ®°

+ ¾° =

 

=

 

 

 

 

 

 

 

ПРИМЕР: (mod17):4

0100;

 

 

° °

 

 

 

 

 

 

 

°

°

 

 

 

 

 

 

 

 

¯

¿

 

 

 

 

 

 

 

 

.

Сложение. При сложении двух b -разрядных двоичных чисел получается b -разрядное двоичное число и возможен перенос из старшего разряда. Появление переноса из старшего разряда означает получение числа 2b = − 1mod Ft . При реализации арифметики по модулю 2b 1 можно просто вычитать перенос. Поэтому в аппаратуре необходимо предусмотреть возможность вычитания переноса.

ПРИМЕР:

49

Вычитание. Вычитание выполняется как сложение уменьшаемого и вычитаемого с обращенным знаком.

Обобщенное умножение. При умножении двух b -разрядных чисел получается 2b -разрядное произведение. Пусть CL является его b -разрядной частью младшего порядка, а CH – b -разрядной частью старшего порядка. Тогда A × B = CL + CH 2b = CL CH (mod Ft ) . Таким образом, для получения произведения необходимо лишь из содержимого регистра старшего порядка вычесть содержимое регистра младшего порядка.

ПРИМЕР:

(mod17):13× 9 = 117 = 15(mod17) ;

;

Умножение на степень 2. Если α выбирается равным 2 или степени 2, то получаются преобразования Рейдера и единственной операцией умножения является умножение на некоторую степень 2. Эта операция особенно просто реализуется в арифметике по модулю .

Предположим, что необходимо умножить содержимое регистра на 2k , 0 < k < b . В этом случае достаточно сдвинуть влево содержимое регистра на k разрядов и вычесть k бит переполнения. Это удобно сделать следующим образом. Добавить слева к регистру данных регистр нулей. Затем сдвинуть содержимое регистра удвоенной длины на k разрядов влево и отбросить нули в старших разрядах. Далее вычесть содержимое регистра высоких порядков из содержимого регистра низких порядков. Если k лежит за пределами интервала 0 < k < b , следует воспользоваться тем, что 2b = − 1mod Ft . При вычислении обратного преобразования необ-

50

Соседние файлы в папке ТЧП с флешки вовы