ЭУМК по дисциплине "Программирование проблемно-ориентированных вычислительных средств реального времени" › Теория › Тема 5. Программирование алгоритмов БПФ с прореживанием по частоте

# Электронный учебно-методический
комплекс по дисциплине
"Программирование проблемно-ориентированных вычислительных средств реального времени"

для специальности

1-40 02 02 «Электронные вычислительные средства»

Оглавление | Программа | Теория | Практика | Контроль знаний | Об авторах

Тема 5. Программирование алгоритмов БПФ с прореживанием по частоте
5.1. Алгоритм БПФ с прореживанием по частоте и прямым порядком входных данных
5.1.1. Изменение индексов и поворачивающих множителей

Ниже приведены граф-схема (рис. 5.1) и таблица индексов (табл. 5.1) 8 точечного БПФ с прореживанием по частоте и прямым порядком входных данных.

###

### Рисунок 5.1 – Граф-схема БПФ с прореживанием по частоте
и прямым порядком входных данных

Таблица 5.1 - Изменение индексов для БПФ с прореживанием по частоте и прямым порядком входных данных

№ п/п | N2 | IE | J | I | I + N2 | K | Цикл | Переход
1 | 4 | 1 | 0 | 0 | 4 | 0 | 2 |
2 |  |  | 1 | 1 | 5 | 1 | 2
3 |  |  | 2 | 2 | 6 | 2 | 2
4 |  |  | 3 | 3 | 7 | 3 | 2 | 3
5 | 2 | 2 | 0 | 0 | 2 | 0 | 1
6 |  |  |  | 4 | 6 |  | 1 | 2
7 |  |  | 1 | 1 | 3 | 2 | 1
8 |  |  |  | 5 | 7 |  | 1 | 3
9 | 1 | 4 | 0 | 0 | 1 | 0 | 1
10 |  |  |  | 2 | 3 |  | 1 |
11 |  |  |  | 4 | 5 |  | 1
12 |  |  |  | 6 | 7 |  | 1

5.1.2. Схема алгоритма БПФ

Ниже приведена обобщенная схема алгоритма БПФ с прореживанием по частоте и прямым порядком входных данных (рис. 5.2).

###

### Рисунок 5.2 – Схема алгоритма БПФ с прореживанием по частоте
и прямым порядком входных данных

5.1.3. Программная реализация алгоритма БПФ

Ниже приведен пример подпрограммы для реализации алгоритма БПФ с прореживанием по частоте и прямым порядком входных данных.

    * DIF FFT Programm for TMS320C5402 DSP Starter Kit
    * direct -> reverce addres     12/10/04 20:20:00
    	.data
    HOLDN   .word    64h
    QUARTN  .word    65h
    N1      .word    66h
    N2      .word    67h
    J       .word    68h
    IADDR   .word    69h
    SINTBL  .word    6Ah
    SIN     .word    6Bh
    COS     .word    6Ch
    I       .word    6Dh
    IE      .word    6Eh
    INV     .word    6Fh
    	.text
    FFT	stl	a, INV		; признак БПФ(=0) или ОБПФ (=1)
    	stm	#1, IE		; IE=1 !!!
    	ld	#N, a
    	stl	a, HOLDN		; N
    	stl	a, N2			; N2=N !!!
    	stl	a, -2, QUARTN
    	st	#XFFT, IADDR
    	stm	#M, AR1		; число итераций - 1
    IELOOP	ld	#0, a
    	stl	a, J			; J=0
    	st	#sint, SINTBL	; K=0 new
    	ld	N2, a
    	stl	a, -1, N2		; N2=N2/2
    	mvdm	N2, AR2
    	stl	a, N1			; N1=2N2
    	mar	*AR2-			; AR2=N2-1
    JLOOP	ld	J, 1, a
    	stl	a, I			; I=J (2J)
    	ld	SINTBL, a
    	reada	SIN
    	add	QUARTN, a
    	reada	COS			; W(K)
    	ld	INV, a
    	bcd	ILOOP, aeq
    	ld	SIN, b		;1w
    	neg	b			;1w
    	stl	b, SIN
    ILOOP	mvdm	I, AR0
    	mvdm	IADDR, AR3
    	nop				;PPC1 ar3
    	mar	*AR3+0		; (I)
    	mvdm	N1, AR0		; N2 (N1=2N2)
    	nop				;PPC1 ar0
    *=========================================*
    *	ld	*AR3+0, 15, a	; A = 1/2 PR	*
    *	"бабочка"						*
    *  	sth	b, *AR3		; 1/2 QI		*
    *=========================================*
    	ld	I, a
    	add	N1, 1, a		; 2N1
    	stl	a, I			; I=I+2N2 (2N1=4N2)
    	sub	HOLDN,1, a
    	bc	ILOOP, alt   	; I < N (< 2N=2HOLDN)
    	ld	SINTBL, a
    	add	IE, a
    	stl	a, SINTBL		; K=K+IE
    	banzd	JLOOP, *AR2-	; J < N2
    	addm	#1, J			;2w J=J+1
    	ld	IE, 1, a
    	stl	a, IE			; IE=2IE
    	banz	IELOOP, *AR1-	; IE < N
    DRC2	stm	#N-1, AR1
    	mvdm	IADDR, AR3
    	mvdm	IADDR, AR2
    LOOPD	mvmm	AR3, AR0
    	cmpr	LT, AR2
    	bcd	NODRC, NTC
    	mvdm	HOLDN, AR0	;2w
    	ld	*AR2, 16, a
    	or	*AR3, a
    	stl	a, *AR2+
    	sth	a, *AR3+
    	ld	*AR2, 16, a
    	or	*AR3, a
    	stl	a, *AR2-
    	sth	a, *AR3-
    NODRC	mar	*AR3+0B
    	banzd	LOOPD, *AR1-
    	mar	*AR2+			;1w
    	mar	*AR2+			;1w
    	stm	#N-1, BRC
    	mvdm	IADDR, AR2
    	rptbd	LOOPM-1
    	ld	#1, b			;1w
    	nop				;1w
    	squr	*AR2+, a
    	squra	*AR2+, a
    	max	b
    LOOPM	exp	b
    	retd
    	ldm	T, b			;1w
    	nop				;1w

Оглавление | Программа | Теория | Практика | Контроль знаний | Об авторах
© БГУИР , 2012