Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
28-12-2014_12-52-57 / пповсрв.pdf
Скачиваний:
62
Добавлен:
11.05.2015
Размер:
1.03 Mб
Скачать

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

Соседние файлы в папке 28-12-2014_12-52-57