Пр о ц е с с о р TMS 3 2 0C4 x
94
Полный алгоритм вычисления БПФ с прореживанием по частоте дан на
рис.2.21 и содержит три вложенных цикла вычислений: ступеней, групп и “ба-
бочек”. Из рис.2.16 видно, что первая ступень вычислений содержит одну
группу из
N
/2 “бабочек”, каждая последующая ступень имеет вдвое больше
групп, чем предыдущая, но количество “бабочек” в каждой группе вдвое мень-
ше, чем на предыдущей ступени. Это отслеживается регистрами R8, R9. Ре-
гистр R8 (количество групп) сдвигается влево на один разряд (умножение на 2),
а регистр R9 – вправо на один разряд (деление на 2) после вычисления каждой
ступени.
Вычисления группы производятся над данными с начального адреса AR4,
который перед вычислением каждой группы переписывается в рабочие указа-
тели AR0 и AR6. После вычисления группы AR4 перемещается на начальный
адрес данных для следующей группы, а рабочий указатель массива
W
N
- на на-
чало массива коэффициентов (AR3). При вычислении первой группы ступени
AR4 установлен на начало массива входных данных (AR5), а рабочий указатель
массива
W
N
- на начало массива коэффициентов (AR3).
Вычисление “бабочки” использует данные по указателям AR0, AR6 и ко-
эффициенты по указателям AR1 и AR1(IR1), после чего указатели данных пе-
ремещаются на следующий элемент массива
x
[ ], а указатели коэффициентов -
на следующий коэффициент
W
N
. Вычисление “бабочки”, показанное на
рис.2.17, с учетом того, что входные данные
x
[
k
] и коэффициенты
W
N
- ком-
плексные числа, можно представить следующими выражениями.
Пусть
x
m
[
k
] =
a
+
jb
;
x
m
[
k
+
R
] =
p
+
jq
;
W
mn
=
C
–
jS
.
Вычисление “бабочки” в комплексных числах
x
m
+1
[
k
] =
x
m
[
k
] +
x
m
[
k
+
R
],
x
m
+1
[
k
+
R
] = (
x
m
[
k
]–
x
m
[
k
+
R
])
W
mn
,
в действительных
Re(
x
m
+1
[
k
]) = (
a
+
p
), Re(
x
m
+1
[
k
+
R
]) = (
a
–
p
)
C
+ (
b
–
q
)
S
,
Im(
x
m
+1
[
k
]) = (
b
+
q
), Im(
x
m
+1
[
k
+
R
]) = (
b
–
q
)
C
– (
a–p
)
S
или
x
m
+1
[
k
] = (
a
+
p
) +
j
(
b
+
q
);
x
m
+1
[
k
+
R
] = {(
a
–
p
)
C
+ (
b
–
q
)
S
} +
j
{(
b
–
q
)
C
– (
a
–
p
)
S
}.
В приложении
Д
приводится полный текст программы БПФ, реализую-
щий алгоритм рис.2.21. Следует отметить, что программа не оптимизирована
по времени выполнения, и для практического использования требуется ее дора-
ботка. Модификация программы возможна в плане сокращения вычислений в
первых “бабочках” каждой группы, используя
W
0
= 1 +
j
×
0.
Вычисления для этих “бабочек” будут выглядеть так:
x
m
+1
[
k
] = (
a
+
p
) +
j
(
b
+
q
);
x
m
+1
[
k
+
R
] = (
a
–
p
) +
j
(
b
–
q
).
Грубая оценка времени выполнения программы может быть произведена
по формуле