;************************************************************************** ; ; Split N/2 Complex FFT(Hn) for N real FFT(Fn) ; SPLIT56 macro IDATA,COEF,POINTS,ODATA SPLIT56 ident 1,0 ; ; ; Fi=0.5(Hi+Hn/2-i*)-0.5j(Hi-Hn/2-i*)W i=0,1,,,N-1 ; ; Bit reverse input, Normal order output ; This macro amplifies coefficients of FFT by 2. ; If absolute values of spectrum are desired, then scaling up factor is 2^(N-1), ; assuming inputs are scaled by 2^N before complex FFT. ; POINTS is the number of real data /2 ; COEF is twiddle factor locati<strong>on</strong> other than TF used in complex FFT (see sincosr) ; ; move #POINTS-1,n0 ;number of complex FFT input data -1 move #POINTS/2-1,n2 ;loop counter move #ODATA,r0 ;r0 ptr to Ar=Hi move #COEF-POINTS/2+1,r2 ;twiddle factor start locati<strong>on</strong> move r2,r6 ;r6 -> Wi lea (r0)+n0,r5 ;r5 ptr to Br & Bi move #IDATA,r3 ;r3 pointer for A’ move r3,r4 move n0,r1 ;r1 ptr for B’, r1=B move #POINTS/2,n0 move n0,n5 move m5,m3 ;m3 and m1 linear address move m5,m1 move #0,m0 ;bit reverse address move m0,m5 ;bit reverse address move x:(r0),b ;b=Ar0 move x:(r5),x1 y:(r0),a ;a=Ai0,x1=Br add a,b x:(r1)+,x0 ;b=Ar0+Ai0=DC, for ptr reas<strong>on</strong> inc r1 subl b,a r3,r4 ;r4 ptr to temp locati<strong>on</strong> asl b y:(r1),a ;a=something asl a b,x:(r3)+ y:(r5),b ;a=Niquist=Ar0-Ai0, save DC,b=Bi move a,y:(r0)+n0 ;save Niq in y:ODATA temp, move y:(r0),y0 ;y0=Ai do n2,_end_split add y0,b y0,a a,y:(r1)- ;b=Ai+Bi=H2r,a=Ai, save prev. Bi’ subl b,a x:(r0),b b,y1 ;a=Ai-Bi=H1i, b=Ar, y1=H2r sub x1,b x:(r0)+n0,a a,y:(r4) ;b=Ar-Br=H2i,a=Ar again, ;save H1i temp,r0->nA subl b,a x:(r2)+,x1 y:(r6)+,y0 ;a=Ar+Br=H1r,x1=Wr,y0=Wi mac x1,y1,a b,x0 a,y:(r5) ;a=H1r+Wr*H2r,x0=H2i,save H1r temp macr y0,x0,a y:(r5)-n5,b ;a=H1r+Wr*H2r-Wi*H2i=Ar’, b=H1r subl a,b a,x:(r3) y:(r4),a ;b=H1r-(Wr*H2r-Wi*H2i)=Br’, ;a=H1i,save Ar’ mac -x1,x0,a b,x:(r1) y:(r5),b ;a=H1i-Wr*H2i,save Br’,b=nBi Figure B-2 Real FFT for DSP56001/2 (sheet 4 of 5) B-8 MOTOROLA
macr y1,y0,a y:(r4),y0 ;a=Wi*H2r-Wr*H2i+H1i=Ai’,y0=H1i again sub y0,a x:(r5),x1 a,y:(r3)+ ;a=Wi*H2r-Wr*H2i, x1=nBr,save Ai’ sub y0,a y:(r0),y0 ;a=Wi*H2r-Wr*H2i-H1i=Bi’,y0=nAi _end_split move y0,a a,y:(r1) ;save last Bi’,c<strong>on</strong>jugate last Ai neg a #ODATA,r5 move #IDATA,r0 move a,y:(r4) move y:(r5),a move a,y:(r0) ;move Niq. back endm ;split56 Figure B-2 Real FFT for DSP56001/2 (sheet 5 of 5) MOTOROLA B-9
- Page 1 and 2:
Motorola’s High-Performance DSP T
- Page 3 and 4:
SECTION 1 Definition and History SE
- Page 5 and 6:
SECTION 5 Optimizing Performance of
- Page 7 and 8:
APPENDIX B Real-Valued Input FFT Ta
- Page 9 and 10:
Figure 4-3 Figure 4-4 Figure 4-5 Fi
- Page 11 and 12:
Table 8-1 Table 8-2 Table 8-3 Table
- Page 13 and 14:
When interpreted as an infinite sum
- Page 15 and 16:
2. Pattern-Based ⎯ Many problems
- Page 17 and 18:
In summary, the basic nature of the
- Page 19 and 20:
ecause: j2πfnT+j2πn e T - ⎛ ---
- Page 21 and 22:
2.2 Windowing and Windowing Effects
- Page 23 and 24:
xf () x(nT) 1 0.9 0.8 0.7 0.6 0.5 0
- Page 25 and 26:
Note that many textbooks simply def
- Page 27 and 28:
“Since there are two independent
- Page 29 and 30:
appropriately called the decimation
- Page 31 and 32:
x(0) x(4) Figure 3-4 Decimation-in-
- Page 33 and 34:
Binary Index 000 x(0) 001 010 011 1
- Page 35 and 36:
3.4 The Decimation-in- Frequency Ra
- Page 37 and 38:
DSP56001/2 and DSP96002 hardware fe
- Page 39 and 40:
4. Bit-reversed addressing mode 5.
- Page 41 and 42:
4.3 Complexity of a Radix-2 DIT FFT
- Page 43 and 44:
The data paths are 24 bits wide, th
- Page 45 and 46:
The kernel shown in Figure 4-4 exec
- Page 47 and 48:
;Alters Program Control Registers ;
- Page 49 and 50:
PORT A CLK 4 ADDRESS 32 Control 19
- Page 51 and 52:
;r0 ➨ A ;r1 ➨ B ;r4 ➨ C ;r5
- Page 53 and 54:
5 5 7 ADDRESS Sigma Delta Codec PI/
- Page 55 and 56:
limits its results to those bits. T
- Page 57 and 58:
flow in the FFT calculation is to s
- Page 59 and 60:
of the sine table, 256 points. Howe
- Page 61 and 62:
normal_order=output_pointer; bitrev
- Page 63 and 64:
A′ A CW c BW b DW c W b = + + ( +
- Page 65 and 66:
;r0->A,r4->B, r1->C, r6->D; ;r1->A
- Page 67 and 68:
Ar′ = Ar + Br + ( Dr + Cr) Ai′
- Page 69 and 70:
“Optimization saves . . . 2067 in
- Page 71 and 72:
plexity to practical complexity ref
- Page 73 and 74:
5.1.2 Optimization for Fast
- Page 75 and 76:
3. pass. This change results in lon
- Page 77 and 78:
5.2 Example of Optimization 5.2.1 F
- Page 79 and 80:
Pass 0 1 2 3 4 5 6 7 8 A B C D W=(1
- Page 81 and 82:
The fully optimized 1024-point comp
- Page 83 and 84:
6.1 Real-Valued Input FFT Algorithm
- Page 85 and 86:
The twiddle factors appear to be in
- Page 87 and 88:
X=A+jB Y=C+jD X’=A+C+j(D+B) - Y
- Page 89 and 90:
takes four points in and four point
- Page 91 and 92:
Z( k) = DFT[ z( n) ] = DFT[ x( n) +
- Page 93 and 94:
F( k) a real sequence with N points
- Page 95 and 96: Eight multiplications, five additio
- Page 97 and 98: further: 1. Since the input data is
- Page 99 and 100: 6.4 The Goertzel Algorithm Previous
- Page 101 and 102: The power of magnitude of the DFT c
- Page 103 and 104: SSI or HI The double buffering is i
- Page 105 and 106: “To implement Eqn. 7-1, a two dim
- Page 107 and 108: F( k) where: N - 1 2c( k) ---------
- Page 109 and 110: 7.2.2 Two Dimensional DCT A one dim
- Page 111 and 112: facturer may offer a higher perform
- Page 113 and 114: 8.2.1.1 Complex FFT on Floating-Poi
- Page 115 and 116: 8.2.2 FFT on Fixed-Point DSPs As me
- Page 117 and 118: “Motorola's family of digital sig
- Page 119 and 120: APPENDIX A Fully Optimized Complex
- Page 121 and 122: ;**********************************
- Page 123 and 124: ;**********************************
- Page 125 and 126: movem 2,m5 movem 2,m7 move #data,r0
- Page 127 and 128: ; ------------ NORMAL RADIX-2 BUTTE
- Page 129 and 130: nop nop jmp * end ; ; Sine-Cosine T
- Page 131 and 132: ; Input signal for FFT rfft56.asm a
- Page 133 and 134: move #POINTS/2-1,m0 ;modulo address
- Page 135 and 136: ; r0->A,r1->B,r4->A’,r5->B’,r6-
- Page 137 and 138: _inner_pass do n3,_end_grp ;do grou
- Page 139 and 140: APPENDIX B Real-Valued Input FFT B.
- Page 141 and 142: count set 0 dup points/2 dc @cos(@c
- Page 143 and 144: B.2 Real FFT for DSP56001/2 ; ; Thi
- Page 145: dup points/4 dc @cos(@cvf(count)*fr