Tải bản đầy đủ (.pdf) (30 trang)

Bài giảng Xử lý tín hiệu số: Chương 6 - TS. Đinh Đức Anh Vũ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (788.31 KB, 30 trang )

dce

2011

Chương 6

Giải thuật cho biến đổi Fourier
(FFT)
BK
TP.HCM

©2011, TS. Đinh Đ ức Anh Vũ


dce

2011

Nội dung
Tính
DFT & IDFT

Tính
trực tiếp

Biến đổi
WN

Lọc
tuyến tính


Chia-Trị

Cơ số 2

Cơ số 4

DSP – Giải thuật cho Biến đổi Fourier

Tách cơ số

Goertzel

Chirp-z

©2011, Đinh Đức Anh Vũ

2


dce

2011

DFT & IDFT


Tính DFT: xác định chuỗi N giá trị phức {X(k)} khi biết trước chuỗi {x(n)}
chiều dài N
N −1


DFT

X (k ) = ∑ x(n)WNkn

0 ≤ k ≤ N −1

IDFT

1
x ( n) =
N

0 ≤ n ≤ N −1

n =0
N −1

− kn
X
k
W
(
)

N
k =0

– Giải thuật tính DFT cũng được áp dụng cho việc tính IDFT




Tính trực tiếp
– N2 phép nhân phức
– N(N-1) phép cộng phức
→ Độ phức tạp : O(N2)



Biến đổi WN





2N2 phép tính lượng giác
4N2 phép nhân số thực
4N(N-1) phép cộng số thực
Một số phép toán chỉ số
và địa chỉ để nạp x(n)

DSP – Giải thuật cho Biến đổi Fourier

N −1

2πkn
2πkn
 X R (k ) = ∑ [ xR (n) cos( N ) + xI (n) sin( N )]

n =0


N −1
 X (k ) = − [ x (n) sin( 2πkn ) − x (n) cos( 2πkn )]

R
I
N
N
 I
n =0

Giải thuật tính DFT tối ưu mỗi phép toán
theo những cách khác nhau

Doi xung

WNk + N /2 = −WNk

Tuan hoan

WNk + N = WNk
©2011, Đinh Đức Anh Vũ

3


dce

2011

Phương pháp chia-trị (1)




Nguyên tắc: phân rã nhỏ việc tính DFT N điểm thành việc tính các DFT kích thước
nhỏ hơn → các giải thuật FFT
Phương pháp
– Giả sử N=L.M
– Lưu trữ x(n) vào mảng 2 chiều L × M (l: chỉ số hàng, m: chỉ số cột)

n→

0

1

2



N-1

x(0)

x(1)

x(2)



x(N-1)


– Cách lưu trữ

• Theo dòng n = Ml + m
• Theo cột n = l + mL

l
m

0

1



M-1

0

x(0,0)

x(0,1)



x(0,M-1)

1

x(1,0)


x(1,1)



x(1,M-1)

2

x(2,0)

x(2,1)



x(2,M-1)









x(L-1,0)

x(L-1,1)




x(L-1,M-1)

L-1

– Tương tự, các giá trị DFT X(k) tính được cũng sẽ được lưu trữ trong ma trận L × M
(p: chỉ số hàng, q: chỉ số cột)
• Theo dòng k = Mp + q
• Theo cột k = p + qL

DSP – Giải thuật cho Biến đổi Fourier

©2011, Đinh Đức Anh Vũ

4


dce

2011

Phương pháp chia-trị (2)
N −1

X (k ) = ∑ x(n)WNkn

0 ≤ k ≤ N −1

n =0


Với:

M −1 L −1

x(n)
X(k)

X ( p, q ) = ∑∑ x(l , m)WN( Mp + q )( mL +l )

: theo cột
: theo hàng

m =0 l =0

WN( Mp + q )( mL +l ) = WNMLmpWNmLqWNMplWNlq
 lq  M −1
mq  
X ( p, q ) = ∑ WN  ∑ x(l , m)WM  WLlp
l =0 
 m =0

L −1

1
2
3

DFT M điểm
F(l,q)
G(l,q)

DFT L điểm
X(p,q)

DSP – Giải thuật cho Biến đổi Fourier

WNNmp = 1
WNmqL = WNmq/ L = WMmq
WNMpl = WNpl/ M = WLpl

(1): Tính L DFT M điểm
Nhân phức : LM2
Cộng phức : LM(M-1)

(2): Tính G(l,q)
Nhân phức : LM

(3): Tính X(p,q)
Nhân phức : ML2
Cộng phức : ML(L-1)

 Độ phức tạp
Nhân phức : N(M+L+1)
Cộng phức : N(M+L-2)
©2011, Đinh Đức Anh Vũ

5


dce


2011

Phương pháp chia-trị (3)


Hiệu quả
PP tính trực tiếp
• Nhân phức : N2
• Cộng phức : N(N-1)

PP chia-trị
• Nhân phức : N(M+L+1)
• Cộng phức : N(M+L-2)

N=1000 → L=2, M=500
106 nhân phức → 503,000 (~ N/2)



PP chia-trị rất hiệu quả khi



Giải thuật

– Phân rã nhỏ hơn đến (v-1) lần

n = l + mL
k = Mp + q


N= r1r2r3…rv
n = Ml + m
k = qL + p
Giải thuật 2

Giải thuật 1
1.
2.
3.
4.
5.

Lưu trữ t/h theo cột
Tính DFT M điểm của mỗi hàng
Nhân ma trận kết quả với hệ số pha WNlq
Tính DFT L điểm của mỗi cột
Đọc ma trận kết quả theo hàng

DSP – Giải thuật cho Biến đổi Fourier

1.
2.
3.
4.
5.

Lưu trữ t/h theo hàng
Tính DFT L điểm của mỗi cột
Nhân ma trận kết quả với hệ số pha WNpm
Tính DFT M điểm của mỗi hàng

Đọc ma trận kết quả theo cột

©2011, Đinh Đức Anh Vũ

6


dce

2011

Phương pháp chia-trị (4)


Mô hình tính toán DFT 6 điểm thông qua việc tính DFT 3 điểm và DFT 2 điểm
W6lq
X(2)

x(2)x(5)

X(5)
X(1)
DFT 2 điểm

x(4)

x(0)x(3)
x(1)




X(4)
X(0)
X(3)

Giải thuật tính FFT cơ số 2

– Nếu N = r1r2r3…rv = rv → mô hình tính DFT có cấu trúc đều (chỉ dùng 1 DFT r điểm)
– r = 2 → FFT cơ số 2
– Chọn M = N/2 và L = 2
x(0)

Giải thuật
chia theo thời gian

m=0

x(1)

x(2)

m=1







x(N-1)


m=M-1

l=0

x(0)

x(2)



x(N-2)

f1(2n)

l=1

x(1)

x(3)



x(N-1)

f2(2n+1)

DSP – Giải thuật cho Biến đổi Fourier




n= 0,1, …, N/2-1

©2011, Đinh Đức Anh Vũ

7


dce

2011

FFT cơ số 2 (1)
N −1

X (k ) = ∑ x(n)WNkn

k = 0,1,..., N − 1

n =0

=

kn
kn
+
(
)
(
)

x
n
W
x
n
W


N
N

n even

=

n old

( N / 2 ) −1

∑ x(2m)W

m =0

X (k ) =

2 mk
N

( N / 2 ) −1




m =0

f1 (m)W

km
N /2

+

( N / 2 ) −1

+W

∑ x(2m + 1)W

m =0

k ( 2 m +1)
N

WN2 = WN / 2

( N / 2 ) −1



k
N


m =0

= F1 (k ) + WNk F2 (k )

f 2 (m)WNkm/ 2

k = 0,1,..., N − 1

f1 (m) ←

→ F1 (k )
DFTN / 2

k = 0,1,..., N / 2

f 2 (m) ←

→ F2 (k )
DFTN / 2

k = 0,1,..., N / 2

k

(
)
=
(
)

+
X
k
F
k
W
k = 0,1,.., N2 − 1

1
N F2 ( k )

k
N
(
+
)
=
(
)

X
k
F
k
W
k = 0,1,.., N2 − 1

1
N F2 ( k )
2


DSP – Giải thuật cho Biến đổi Fourier

F1(k), F2(k) tuần hoàn
chu kỳ N/2
F1(k+ N/2) = F1(k)
F2(k+ N/2) = F2(k)

WNk + N / 2 = −WNk
©2011, Đinh Đức Anh Vũ

8


dce

2011

FFT cơ số 2 (2)

G1 (k ) = F1 (k )

G2 (k ) = WNk F2 (k )

k = 0,1,.., N2 − 1
k = 0,1,.., N2 − 1

G1(k)
G2(k)


 X (k ) = G1 (k ) + G2 (k )

N
X
k
(
+
2 ) = G1 ( k ) − G2 ( k )


DFT2

k = 0,1,..., N2 − 1

X(k)
X(k+ N/2)
k=0,1,…,(N/2-1)

k = 0,1,..., N2 − 1

DFT
2 điểm
DFT
DFT
2 điểm
DFT
2 điểm
2 điểm
DSP – Giải thuật cho Biến đổi Fourier


©2011, Đinh Đức Anh Vũ

9


dce

2011

FFT cơ số 2 (3)
• Tiếp tục phân f1(n) và f2(n) thành các chuỗi N/4 điểm

v11 (n) =

v12 (n) =

v21 (n) =
v (n) =
 22

f1 (2n)

n = 0,1,..., N4 − 1

f1 (2n + 1)

n = 0,1,..., N4 − 1

f 2 ( 2n )


n = 0,1,..., N4 − 1

f 2 (2n + 1)

n = 0,1,..., N4 − 1

 F1 (k ) = V11 (k ) + WNk / 2V12 (k )

k
N
 F1 (k + 4 ) = V11 (k ) − WN / 2V12 (k )

k
F
k
V
k
W
=
+
(
)
(
)
 2
21
N / 2V22 ( k )
 F (k + N ) = V (k ) − W k V (k )
21
N / 2 22

4
 2

vij(n)

DFT
N/4 điểm

Vij(k)

k = 0,1,..., N4 − 1
k = 0,1,..., N4 − 1
k = 0,1,..., N4 − 1
k = 0,1,..., N4 − 1

• Hiệu quả
DFT trực tiếp N=2v điểm
Nhân phức: N2
Cộng phức: N2 – N
DSP – Giải thuật cho Biến đổi Fourier

FFT cơ số 2

Các DFT 2 điểm
Nhân phức: (N/2)log2N
Cộng phức: Nlog2N
©2011, Đinh Đức Anh Vũ

10



dce

2011

FFT cơ số 2 (4)
• Ví dụ: tính DFT 8 điểm
x(0)

x(1)

x(2)

x(3)

Phân theo thời gian

x(0)

x(2)

x(4)

x(6)

x(1)

x(3)

x(5)


x(7)

x(4)

x(5)

x(6)

x(7)

[0,1,2,3,4,5,6,7]
x(0)

x(4)

x(2)

x(6)

x(1)

x(5)

x(3)

x(7)

DSP – Giải thuật cho Biến đổi Fourier


[0,2,4,6]
[0,4]

[1,3,5,7]
[2,6]

[1,5]

[3,7]

©2011, Đinh Đức Anh Vũ

11


dce

2011

FFT cơ số 2 (5)
• Khối tính toán cơ bản cho DFT 2 điểm (hình con bướm)
a

A = a+WN’b

b

B = a–WN’b

W N’


–1

Độ phức tạp
• 1 nhân phức
• 2 cộng phức

N= 2v:
+ Log2N
: tầng tính toán
+ N/2
: khối tính toán cơ bản cho mỗi lớp
Bộ nhớ:
+ Vào
: (a,b) – số phức
+ Ra
: (A,B) – số phức
+ Có thể lưu (A,B) đè lên (a,b)
 Chỉ cần N ô nhớ phức (2N ô nhớ thực)
 Tính toán tại chỗ
DSP – Giải thuật cho Biến đổi Fourier

©2011, Đinh Đức Anh Vũ

12


dce

2011


FFT cơ số 2 (6)

x(0)

X(0)

x(4)
0
8

W

X(1)

-1

x(2)
0
8

W
x(6)

0
8

W

-1


2
8

W

X(2)

-1

X(3)

-1

x(1)
0
8

-1

1
8

-1

2
8

-1


W
x(5)
0
8

W

-1

W

x(3)
0
8

-1

2
8

-1

W

W

x(7)
0
8


W

-1

W

DSP – Giải thuật cho Biến đổi Fourier

3
8

W

-1
©2011, Đinh Đức Anh Vũ

X(4)
X(5)
X(6)
X(7)
13


dce

2011

Baseline Parallel Architecture
Size


16

8192

1

1

1

1

Pins

448

229K

2

2

2

2

Fly

32


53K

3

3

3

3

Mult

4

4

4

4

Add

5

5

5

5


Shift

0

0

6

6

6

6

7

7

7

7

8

8

8

8


9

9

9

9

10

10

10

10

11

11

11

11

12

12

12


12

13

13

13

13

14

14

14

14

15

15

15

15

16

16


16

16

DSP – Giải thuật cho Biến đổi Fourier



Parallel FFT
 Butterfly structure
 Removes redundant
calculation

©2011, Đinh Đức Anh Vũ

14


dce

2011

Parallel-Pipelined Architecture
Size

16

8192

1


1

1

1

Pins

448

229K

2

2

2

2

Fly

32

53K

3

3


3

3

Mult

96

159K

4

4

4

4

Add

288

480K

5

5

5


5

Shift

0

0

6

6

6

6

7

7

7

7

8

8

8


8

9

9

9

9

10

10

10

10

11

11

11

11

12

12


12

12

13

13

13

13

14

14

14

14

15

15

15

15

16


16

16

16

DSP – Giải thuật cho Biến đổi Fourier



A pipelined version
 IO Bound
 100% Efficient

©2011, Đinh Đức Anh Vũ

15


dce

2011

FFT cơ số 2 (7)
• Thứ tự chuỗi dữ liệu vào sau khi phân (v-1) lần

– Biểu diễn các chỉ số ở dạng nhị phân
– Chuỗi sau khi phân chia sẽ là lấy theo thứ tự đảo các bit
Bộ

nhớ

Địa
chỉ

Bộ
nhớ

Địa
chỉ

Bộ
nhớ

Địa
chỉ

x(0)

000

x(0)

000

x(0)

000

x(1)


001

x(2)

010

x(4)

100

x(2)

010

x(4)

100

x(2)

010

x(3)

011

x(6)

110


x(6)

110

x(4)

100

x(1)

001

x(1)

001

x(5)

101

x(3)

011

x(5)

101

x(6)


110

x(5)

101

x(3)

011

x(7)

111

x(7)

111

x(7)

111

Phân
chia

DSP – Giải thuật cho Biến đổi Fourier

Phân
chia


©2011, Đinh Đức Anh Vũ

16


dce

2011

FFT cơ số 2 (8)


Phân chia theo tần số






Phương pháp chia và trị
M = 2, L = N/2
Chuỗi dữ liệu nhập được sắp xếp theo cột
Phân chia X(k) thành X(2k) và X(2k+1)
Sau đó có thể phân chia tiếp tục mỗi X(k chẵn) và X(k lẻ)

x(0)

X(0)


x(1)

DFT
4 điểm

x(2)
x(3)
-1
x(5)
-1
x(6)

-1

x(7)
-1

0
8
1
8
2
8
3
8

W
W
W
W


A = (a+b) WN’

X(2)
X(4)
X(6)

x(4)

a
b

–1

W N’

B = (a–b)WN’

X(1)
DFT
4 điểm

DSP – Giải thuật cho Biến đổi Fourier

X(3)
X(5)
X(7)
©2011, Đinh Đức Anh Vũ

17



dce

FFT cơ số 4 (1)

2011

x(0)

x(2)

x(4)







x(N-1)

l,p = 0,1,2,3
m,q = 0,1,…,N/4 – 1

L = 4, M = N/4

N = 4v

n = 4m + l

k = (N/4)p + q

m=0

m=1

m=(N/4)-1

l=0

x(0)

x(4)





x(N-4)

x(4n)

l=1

x(1)

x(5)






x(N-3)

x(4n+1)
n = 0,1,…,N/4-1

l=2

x(2)

x(6)





x(N-2)

x(4n+2)

l=3

x(3)

x(7)






x(N-1)

x(4n+3)

DSP – Giải thuật cho Biến đổi Fourier

©2011, Đinh Đức Anh Vũ

18


dce

2011

FFT cơ số 4 (2)
 lq  M −1
mq   lp
X ( p, q ) = ∑ WN  ∑ x(l , m)WM  WL
l =0 
 m =0

L −1

3

[

]


X ( p, q ) = ∑ WNlq F (l , q ) W4lp

p = 0,1,2,3

l =0

DFT N/4 điểm

l = 0,1,2,3

N
=
q
0
,
1
,..,
(
4 − 1)


N /4

F (l , q ) = ∑ x (l , m)WNmq/ 4
m =0

 x(l , m) = x(4m + l )

N

 X ( p, q ) = X ( 4 p + q )

 X (0, q )  1 1
 X (1, q )  1 − j

=
 X (2, q ) 1 − 1

 
j
 X (3, q )  1

1
1   WN0 F (0, q ) 


j   WNq F (1, q ) 
−1
1 − 1  WN2 q F (2, q ) 

  3q
− 1 − j  WN F (3, q ) 

DSP – Giải thuật cho Biến đổi Fourier

©2011, Đinh Đức Anh Vũ

19



dce

2011

FFT cơ số 4 (3)
WN0

WNq

-j
-1
j
-1
1

WN2 q

-1
j
-1

WN3q

0
-j

q
2q

Dạng rút gọn

3q
DSP – Giải thuật cho Biến đổi Fourier

©2011, Đinh Đức Anh Vũ

20


dce

2011

FFT cơ số 4 (4)
Độ phức tạp: 1 khối tính toán cần
+ 3 nhân phức
+ 12 cộng phức
N=4v
+ Tầng tính toán
: v = log4N
+ Mỗi tầng có
: N/4 khối tính toán
3vN/4 = (3N/8)log2N
12vN/4 = (3N/2)log2N

: Nhân phức
: Cộng phức

(giảm 25% vs FFT2)
(tăng 50% vs FFT2)


Biểu diễn lại nhân ma trận

 X (0, q ) 1
 X (1, q )  0
=

 X (2, q ) 1

 
 X (3, q )  0
(3N/8)log2N
Nlog2N

0 1
0  1 0 1 0   WN0 F (0, q ) 

 q



1 0 − j  1 0 − 1 0   WN F (0, q ) 
0 − 1 0  0 1 0 1  WN2 q F (0, q )

  3q

j  0 1 0 − 1 WN F (0, q ) 
1 0
: Nhân phức
: Cộng phức


DSP – Giải thuật cho Biến đổi Fourier

(giảm 25% vs FFT2)
(bằng FFT2)
©2011, Đinh Đức Anh Vũ

21


dce

2011

Hiện thực các giải thuật FFT


FFT cơ số 2

– Tính toán hình bướm: (N/2)log2N lần
– Hệ số quay WNk: được tính một lần và lưu trong bảng
– Bộ nhớ: 2N nếu muốn việc tính toán được thực hiện tại chỗ

• 4N nếu muốn đơn giản hóa các tác vụ chỉ số và điều khiển; đồng thời cho phép
chuỗi nhập và xuất theo đúng thứ tự



IDFT

1

x ( n) =
N

N −1

− kn
X
(
k
)
W

N

0 ≤ n ≤ N −1

k =0

– Khác nhau cơ bản giữa việc tính DFT và IDFT là hệ số 1/N và dấu của hệ số
pha WN
• Đảo chiều sơ đồ tính DFT, đổi dấu hệ số pha, và chia kết quả cuối cùng cho N →
IDFT




DFT với số điểm khác 2v hoặc 4v → đệm thêm các số 0
Độ phức tạp
– Tác vụ số học (nhân phức, cộng phức)
– Cấu trúc hiện thực của giải thuật (qui tắc vs bất qui tắc)

– Kiến trúc của các bộ DSPs (xử lý song song các tác vụ)

DSP – Giải thuật cho Biến đổi Fourier

©2011, Đinh Đức Anh Vũ

22


dce

2011

Ứng dụng của các giải thuật FFT
• Tính DFT của 2 chuỗi thực
– x1(n) và x2(n): chuỗi thực độ dài N cần tính DFT
– Định nghĩa chuỗi x(n) = x1(n) + jx2(n)
0≤n≤N–1
– X(k) = X1(k) + jX2(k)
(tính tuyến tính của DFT)

x ( n) + x * ( n)
x1 (n) =
2
x ( n) − x * ( n)
x2 ( n ) =
2j
DFTN
x* (n) ←
→ X * ( N − k )


DSP – Giải thuật cho Biến đổi Fourier

{

[

]}

{

[

]}

1
X 1 (k ) = DFT [x(n)] + DFT x* (n)
2
1
X 2 (k ) = DFT [x(n)] − DFT x* (n)
2

X 1 (k ) =

1
2

X 2 (k ) =

1

2

[X (k ) + X ( N − k )]
[X (k ) − X ( N − k )]
*

*

©2011, Đinh Đức Anh Vũ

23


dce

2011

Ứng dụng của các giải thuật FFT


Tính DFT của chuỗi thực 2N điểm





g(n): chuỗi thực độ dài 2N cần tính DFT
0 ≤ n ≤ N-1
Tách thành 2 chuỗi x1(n) = g(2n) và x2(n) = g(2n+1)
Định nghĩa chuỗi x(n) = x1(n) + jx2(n)

0 ≤ n ≤ N-1
X(k) = X1(k) + jX2(k)(tính tuyến tính của DFT)

X 1 (k ) =

1
2

X 2 (k ) =

1
2

G (k )

[X (k ) + X ( N − k )]
[X (k ) − X ( N − k )]
*

*

N −1

N −1

n =0

n =0

= ∑ g (2n)W22Nnk + ∑ g (2n + 1)W2(N2 n +1) k

N −1

= ∑ x1 (n)W
n =0

nk
N

+W

k
2N

N −1

nk
x
n
W
(
)
∑ 2 N
n =0

G (k )

= X 1 (k ) + W2kN X 2 (k ) k = 0,1,  , N − 1

G (k + N )


= X 1 (k ) − W2kN X 2 (k ) k = 0,1,  , N − 1

DSP – Giải thuật cho Biến đổi Fourier

©2011, Đinh Đức Anh Vũ

24


dce

2011

Ứng dụng của các giải thuật FFT


Lọc tuyến tính các chuỗi dữ liệu dài
– Overlap-add
– Overlap-save



DFT + FFT

Phương pháp

– h(n) – Đáp ứng xung đơn vị của bộ lọc (chiều dài M)

• Được đệm thêm L-1 số không sao cho N = L + M – 1 = 2v
• H(k): DFT N điểm của h(n), theo thứ tự đảo nếu h(n) được sắp theo thứ tự thuận

(Giải thuật FFT suy giảm theo tần số)

– xm(n) – khối dữ liệu chiều dài L (đã được phân cắt)

• Được đệm thêm M–1 điểm (giá trị tùy theo PP lọc được dùng)
• Xm(k): DFT N điểm của xm(n), cũng theo thứ tự đảo (Giải thuật FFT suy giảm theo
tần số)

– Ym(k) = H(k)Xm(k)

• H(k) và Xm(k) cùng có thứ tự đảo → Ym(k) theo thứ tự đảo
• ym(n) = IDFTN{Ym(k)} sẽ đúng theo thứ tự thuận nếu dùng giải thuật FFT suy giảm
theo thời gian

– Không cần thiết đảo vị trí các dữ liệu trong việc tính DFT và IDFT



Tính tương quan (tương tự)

DSP – Giải thuật cho Biến đổi Fourier

©2011, Đinh Đức Anh Vũ

25


×