- •СОДЕРЖАНИЕ
- •1.1. Предмет, цели и задачи курса
- •1.3. Прямой табличный метод
- •1.4. Метод линейной интерполяции
- •2. ПРОГРАММИРОВАНИЕ ЦИФРОВЫХ ФИЛЬТРОВ
- •2.1. Программирование цифровых нерекурсивных фильтров
- •2.2. Программирование цифровых рекурсивных фильтров
- •2.3. Параллельное и последовательное соединение ЦРФ
- •2.4. Точностные характеристики цифровых фильтров
- •2.4.1. Квантование передаточных функций дискретных систем
- •2.4.2. Ошибки квантования в цифровых фильтрах
- •3. ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ БПФ
- •3.1. Два основных алгоритма БПФ, реализация базовой операции
- •3.2. Реализация частных случаев вычисления «бабочки»
- •3.3. Алгоритм двоично-инверсной адресации и перестановка данных
- •3.4. Основные алгоритмы БПФ по модулю 2 с замещением
- •3.5. Алгоритм БПФ с поблочно-плавающей запятой
- •4. ВЫПОЛНЕНИЕ ОПЕРАЦИЙ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ
- •4.1. Форматы чисел с плавающей запятой
- •4.2. Операции сложения и вычитания с плавающей запятой
- •4.3. Операция умножения с плавающей запятой
- •4.4. Операция деления с плавающей запятой
- •5. МЕТОДЫ КОМПРЕССИИ ДАННЫХ
- •5.1. Два основных метода сжатия данных
- •5.3. Метод кодирования A-Law
- •5.4. Программы кодирования и декодирования данных
- •6.1. Многомерный формирующий фильтр
- •6.2. Спектральный анализ R-мерного векторного процесса
- •6.4. Матричный алгоритм управления
3.ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ БПФ
3.1.Два основных алгоритма БПФ, реализация базовой операции
Алгоритм БПФ с прореживанием по времени с учетом симметрии W:
F |
= G |
K |
+W K H |
K |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
K |
|
|
|
|
|
N |
|
|
|
|
|
|
|
|
|
|
|
|
|
(3.1) |
|||
F |
|
= G |
|
|
+W K +N / 2 H |
|
= G |
|
−W K |
H |
|
|
|||||||||||
+N / 2 |
K |
K |
K |
K |
|
||||||||||||||||||
K |
|
|
|
|
|
N |
|
|
|
|
|
N |
|
|
|
||||||||
где |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2π |
|
|
|
2π |
|
|
|
|
2π |
|
|
|
|||||||
WNnk = e |
− j |
|
|
|
nk |
|
|
|
|
|
|
(3.2) |
|||||||||||
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
N |
|
= cos |
|
nk − j sin |
|
|
|
nk |
|||||||||||||
|
|
|
|
|
|
||||||||||||||||||
поворачивающие множители. |
|
|
|
N |
|
|
|
|
N |
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
Это можно проиллюстрировать следующим рисунком (рис.31 .1): |
|
||||||||||||||||||||||
Х(0) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Х(2) |
|
|
|
G |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Х(N-2) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Х(1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
F |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Х(3) |
|
|
|
H |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Х(N-1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рисунок3.1. Принцип прореживания по времени
Положение поворачивающих множителей на Z–плоскости можно изобразить в виде следующего рисунка (рис.31 .2) (особые случаи для степеней кратных
N/8): |
|
|
|
IM |
|
|
|
|
|
|
W86 |
|
|
N / 8 |
1 |
− |
j0.7075 |
5 N / 8 |
5 |
) = −0.707 + j0.707 |
W N |
(W 8 ) = 0.707 |
W N 7 |
(W 8 |
|||
|
|
|
W8 |
W8 |
|
|
W N0 (W 80 ) = 1 |
|
W84 |
RE |
W NN / 2 (W 84 ) = −1 |
||
|
|
|
|
W80 |
|
|
|
|
|
|
W161 |
|
|
W NN / 4 (W 82 ) = − j |
|
W83 |
W81 |
|
W N3 N / 4 (W 86 ) = j |
|
|
|
|
|
W82 |
|
|
W N3 N / 8 (W 83 ) = −0.707 |
− j0.707 |
W N7 N / 8 (W 87 ) = 0.707 + j0.707 |
Рисунок3.2. Положение поворачивающих множителей на Z–плоскости
Функция поворачивающих множителей является симметричной и периодической, что следует из выражения (31 .2) и наглядно видно из рисунка:
WNK +N / 2 = −WNK ; WNK +N =WNK |
(3.3) |
Лекции по ППО ВС РВ © Клюс В.Б. |
50 |
Алгоритм БПФ с прореживанием по частоте:
GK |
= FK + FK +N / 2 |
|
(3.4) |
|
H |
|
= (F − F |
) W K |
|
K |
|
|||
|
K K +N / 2 |
N |
|
Что можно проиллюстрировать следующим рисунком (для восьмиточечного БПФ) (рис.31 .3):
Х(0) Х(4)
G Х(2) Х(6)
F
Х(1) Х(5)
H Х(3) Х(7)
Рисунок3.3. Принцип прореживания по частоте
Выражения (31 .1) и (31 .4) описывают базовые операции алгоритмов БПФ с прореживанием по времени и частоте соответственно, которые иногда называют «бабочкой» из-за их графической интерпретации (рис.3.4):
a |
a+b |
a |
a+b |
|
|
|
|
WK |
a·WK |
|
|
|
a |
|
b |
a–b |
b |
a+b |
|
|
Рисунок3.4. Основные операции «бабочки» |
|
Используя данные обозначения, базовые операции алгоритмов БПФ с прореживанием по времени и частоте могут быть представлены в следующим виде
(рис.3.5).
Алгоритм вычисления «бабочки» для алгоритма БПФ с замещением и прореживанием по времени можно записать в следующем виде:
Pm+1 = Pm + Qm WNk
Qm+1 = Pm – Qm WNk
где WNk = cos(x) – j sin(x), x = (2π/N) k, j = √-1, Pm = PR + j PI, Qm = QR + j QI,
откуда получим
Pm+1 = PR + j PI + (QR + j QI) [cos(x) – j sin(x)] =
=PR + j PI + [QR cos(x) + QI sin(x)] + j [QI cos(x) – QR sin(x)] =
=[PR + QR cos(x) + QI sin(x)] + j [PI +QI cos(x) – QR sin(x)],
Qm+1 = PR + j PI – (QR + j QI) [cos(x) – j sin(x)] =
=PR + j PI – [QR cos(x) + QI sin(x)] – j [QI cos(x) – QR sin(x)] =
=[PR – QR cos(x) – QI sin(x)] + j [PI –QI cos(x) + QR sin(x)].
Лекции по ППО ВС РВ © Клюс В.Б. |
51 |
P |
P+Q·WK |
P |
P+Q |
7Q |
WK |
P–Q·WK |
Q |
WK |
(P–Q)·WK |
||
|
|
|
|||||
P |
|
|
P+Q·WK |
P |
|
P+Q |
|
|
|
|
WK |
|
|
WK |
|
Q |
-WK |
P–Q·WK |
Q |
-WK |
(P–Q)·WK |
||
P |
|
|
|
P+Q·WK |
P |
|
P+Q |
|
|
|
|
WK |
–1 |
P–Q·WK |
Q |
–1 |
WK |
|
Q |
|
(P–Q)·WK |
||||
|
|
|
Рисунок3.5. Базовые операции БПФ
Аналогичным образом можно записать и алгоритм вычисления «бабочки» для БПФ с замещением и прореживанием по частоте:
Pm+1 = Pm + Qm
Qm+1 = (Pm – Qm) WNk
выразив который через действительные и мнимые составляющие получим
Pm+1 = PR + j PI + QR + j QI = [PR + QR] + j [PI + QI], Qm+1 = (PR + j PI – QR – j QI) [cos(x) – j sin(x)] =
=PR cos(x) + j PI cos(x) – QR cos(x) – j QI cos(x) +
–j PR sin(x) + PI sin(x) + j QR sin(x) – QI sin(x)=
=[(PR – QR) cos(x) + (PI – QI) sin(x)] + j (PI –QI) cos(x) – (PR – QR) sin(x)].
|
Пример программы с прямой адресацией вычисления «бабочки» для алго- |
|||
ритма БПФ с замещением и прореживанием по времени: |
|
|||
* DIT FFT Programm for TMS320C5402 DSP Starter Kit |
|
|||
* Direct Addressing |
20/10/04 20:20:00 |
|
||
PR |
.data |
0h |
; При вычислении «бабочки» |
|
.word |
|
|||
PI |
.word |
0h |
; для избежания переполнения |
|
QR |
.word |
0h |
; все выходные значения |
|
QI |
.word |
0h |
; делятся на 2 |
|
SIN |
.word |
0h |
|
|
COS |
.word |
0h |
|
|
|
|
Лекции по ППО ВС РВ © Клюс В.Б. |
52 |
INIT |
.text |
#PR, DP |
|
|
|
ld |
|
|
|
||
|
ssbx |
sxm |
|
|
|
|
ssbx |
frct |
|
|
|
BTRFLY |
rsbx |
ovm |
; T = |
QR |
|
ld |
QR, T |
|
|||
|
mpy |
COS, a |
; A = |
QR*cos |
|
|
ld |
QI, T |
; T = |
QI |
|
|
mac |
SIN, a |
; A = |
QR*cos+QI*sin = XR |
|
|
mpy |
COS, b |
; B = |
QI*cos |
|
|
ld |
QR, T |
; T = |
QR |
|
|
sth |
a, QR |
; QR = a = XR |
|
|
|
mas |
SIN, b |
; B = |
QI*cos-QR*sin = XI |
|
|
sth |
b, QI |
; QI = b = XI |
|
|
|
ld |
PI, 15, a ; A = |
1/2 PI |
|
|
|
add |
QI, 15, a ; A = |
1/2 (PI+XI) |
|
|
|
sth |
a, PI |
; = 1/2 PI |
|
|
|
sub |
QI, 16, a ; A = |
1/2 (PI-XI) |
|
|
|
sth |
a, QI |
; = 1/2 QI |
|
|
|
ld |
QR, 15, a ; A = |
1/2 XR |
|
|
|
add |
PR, 15, a ; A = |
1/2 (PR+XR) |
|
|
|
sth |
a, PR |
; = 1/2 PR |
|
|
|
sub |
QR, 16, a ; A = |
1/2 (PR-XR) |
|
|
|
sth |
a, QR |
; = 1/2 QR |
|
|
Пример программы с прямой адресацией вычисления «бабочки» для алго- |
|||||
ритма БПФ с замещением и прореживанием по частоте: |
|
||||
* DIF FFT Programm for TMS320C5402 DSP Starter Kit |
|
||||
* Direct Addressing |
12/10/04 20:20:00 |
|
|||
PR |
.data |
0h |
; При |
вычислении «бабочки» |
|
.word |
|
||||
PI |
.word |
0h |
; для |
избежания переполнения |
|
QR |
.word |
0h |
; все |
выходные значения |
|
QI |
.word |
0h |
; делятся на 2 |
|
|
SIN |
.word |
0h |
|
|
|
COS |
.word |
0h |
|
|
|
INIT |
.text |
#PR, DP |
|
|
|
ld |
|
|
|
||
|
ssbx |
sxm |
|
|
|
|
ssbx |
frct |
|
|
|
BTRFLY |
rsbx |
ovm |
|
1/2 QR |
|
ld |
PR, 15, a ; A = |
|
|||
|
add |
QR, 15, a ; A = |
1/2 (PR+QR) |
|
|
|
sth |
a, PR |
; = 1/2 PR |
|
|
|
sub |
QR, 16, a ; A = |
XR = 1/2 (PR-QR) |
|
|
|
sth |
a, QR |
; QR = a = XR |
|
|
|
|
Лекции по ППО ВС РВ © Клюс В.Б. |
53 |