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

TIỂU LUẬN MÔN HỌC XỬ LÝ TÍN HIỆU SỐ THIẾT KẾ BỘ LỌC FIR BẰNG PHƯƠNG PHÁP LẤY MẪU TẦN SỐ

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 (685.05 KB, 31 trang )

ĐẠI HỌC ĐÀ NẴNG
oOo
TIỂU LUẬN MÔN HỌC
XỬ LÝ TÍN HIỆU SỐ
ĐỀ TÀI:
THIẾT KẾ BỘ LỌC FIR
BẰNG PHƯƠNG PHÁP LẤY MẪU TẦN SỐ
GVHD : TS. NGÔ VĂN SỸ
NHÓM 2 : LÊ PHƯỚC SINH
: PHẠM TUẤN SƠN
: HUỲNH VĂN THỦY
: VŨ BẢO TOÀN
: VÕ ANH TUẤN
LỚP : TĐH K24
Đà Nẵng, tháng 4/2012
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
LỜI MỞ ĐẦU
Xử lý tín hiệu số (Digital Signal Processing – DSP) là một lĩnh vực mới, đã phát
triển mạnh mẽ về mặt lý thuyết và công nghệ. Ngày nay, nó đã trở thành môn học
không thể thiếu cho nhiều ngành học về khoa học và kỹ thuật. Các thuật toán của nó
đã mang lại những thuận tiện cho công nghệ và ứng dụng mới, nhất là các lĩnh vực về
kỹ thuật điện tử và điều khiển tự động.
Phép xử lý cơ bản nhất của DSP là lọc, và các hệ thống được đề cập đến nhiều nhất
trong xử lý tín hiệu số là các bộ lọc số (Digital Filter).
Nếu xét về đáp ứng xung có thể chia các bộ lọc số thành 2 loại chính là bộ lọc có
đáp ứng xung hữu hạn FIR (Finite Impulse Response) còn gọi là lọc không đệ quy, và
bộ lọc có đáp ứng xung vô hạn IIR (Infinte Impulse Response) còn gọi là lọc đệ quy.
Xét về đáp ứng tần số biên độ có thể chia các bộ lọc, FIR hay IIR, thành 4 loại cơ
bản: thông thấp, thông cao, thông dải và chắn dải. Các bộ lọc này có thể được thiết kế
bằng những phương pháp sau đây: Phương pháp cửa sổ (Window Design Techniques),
Phương pháp lấy mẫu tần số (Frequency Sampling Design Techniques) và Phương


pháp xấp xỉ tối ưu cân bằng gợn sóng (Optimal Equiripple Design Techniques). Mỗi
phương pháp đều có những đặc điểm và ưu khuyết điểm riêng.
Với tiểu luận này, tôi xin phép được trình bày bài toán “ Thiết kế bộ lộc thông
dải cấu trúc FIR bằng phương pháp lấy mẫu tần số “
Nội dung tiểu luận được chia thành 3 phần:
Phần 1. Cơ sở lý thuyết
Phần 2. Thiết kế bộ Vi phân theo cấu trúc FIR bằng phương pháp lấy mẫu tần số
Phần 3. Thuật toán và chương trình thiết kế
Tôi xin trân trọng cảm ơn Thầy giáo TS. Ngô Văn Sỹ đã tận giảng dạy và hướng dẫn
để tôi có thể hoành thành tốt tiểu luận này. Phần lớn nội dung trình bày ở báo cáo này
được lấy từ bài giảng, tài liệu tham khảo do thầy cung cấp.
Trong quá trình thực hiện tiểu luận, tuy đã hết sức cố gắng song không tránh khỏi
những sai sót. Rất mong nhận được sự góp ý của Thầy, các bạn học viên cùng lớp để
nội dung của tiểu luận được hoàn chỉnh hơn.
Đà Nẵng, ngày 27 tháng 4 năm 2012
PHẦN 1. CƠ SỞ LÝ THUYẾT
2
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
1.1. Mở đầu
Việc thiết kế một bộ lọc số tiến hành theo 3 bước:
- Đưa ra các chỉ tiêu (Specifications): Để thiết kế một bộ lọc, đầu tiên chúng ta cần
xác định các chỉ tiêu. Các chỉ tiêu được xác định bởi các ứng dụng.
- Tìm các xấp xỉ (Appproximations): Một khi chỉ tiêu đã được xác định, ta sử dụng
các khái niệm và công cụ toán học khác nhau để tiến tới biểu diễn và tính gần đúng
cho bộ lọc với tập các chỉ tiêu đã cho. Bước này là chủ đề chính của việc thiết kế lọc
số.
- Thực hiện bộ lọc (Implementation): Kết quả của các bước trên được mô tả dưới
dạng một phương trình sai phân, hoặc một hàm hệ thống H(z), hoặc một đáp ứng xung
h(n). Từ các mô tả này chúng ta có thể thi hành bộ lọc bằng phần cứng hoặc phần mềm
mô phỏng trên máy tính.

Ở trong nhiều ứng dụng như xử lý tiếng nói hoặc xử lý âm thanh, bộ lọc số được
dùng để thực hiện các thao tác chọn tần. Do đó, các chỉ tiêu được đòi hỏi trong vùng
tần số ở mỗi chu kỳ về số lượng và đáp ứng pha của bộ lọc mong muốn. Nói chung
đáp ứng pha cần tuyến tính trong dải thông.
- Trong trường hợp các bộ lọc FIR , Có thể đạt được chính xác yêu cầu về pha tuyến
tính.
- Trong trường hợp các bộ lọc IIR, một dải thông có pha tuyến tính là rất khó đạt.
Do đó, chúng ta chỉ xét các chỉ tiêu về biên độ.
Có 2 nhóm chỉ tiêu:

Các chỉ tiêu tuyệt đối (Absolute Specifications) : Đưa ra một tập các yêu cầu
trên hàm đáp ứng biên độ |H(e
jw
)|. Những chỉ tiêu này được sử dụng chung
cho các bộ lọc FIR.

Các chỉ tiêu tương đối (Relative Specifications - DB) : Đưa ra các yêu cầu tính
theo decibels (dB), được cho bởi :
Phương pháp này được là một phương pháp phổ biến nhất trong thực tế và được sử
dụng cho cả bộ lọc FIR và IIR.
Trong những
phần tiếp sau đây, để mô tả các chỉ tiêu của bộ lọc chúng ta sẽ xem xét việc thiết kế
một bộ lọc thông thấp như một ví dụ cơ sở để thiết cho bộ lọc FIR.
1.2. Các chỉ tiêu
Trên hình (1.1) là mô tả các chỉ tiêu của bộ lọc FIR thông thấp (Low Pass Filter):
1.2.1.Các chỉ tiêu tuyệt đối

Band [0, w
p
] được gọi là dải thông, và δ

1
là dung sai (gợn sóng) được chấp
nhận trong đáp ứng dải thông lý tưởng.

Band [w
s
, π] được gọi là dải chắn, và δ
2
là dung sai ở dải chắn.
3
0
)(
)(
log20
max
10
≥−=
ω
ω
j
j
eH
eH
dBscale
(1.1)
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
Band [w
p
, w
s

] được gọi là dải chuyển tiếp, và không có ràng buộc nào về đáp ứng biên
độ trong dải này.
1.2.2. Các chỉ tiêu tương đối (DB)
R
p
: Độ gợn sóng trong dải thông tính theo dB.
A
s
: Suy hao trong dải chắn tính theo dB.
Quan hệ giữa các chỉ tiêu này như sau:

Tại sao tập trung vào bộ lọc thông thấp?
Các chỉ tiêu trên được đưa ra đối với bộ lọc FIR thông thấp, và tất nhiên đối với các
bộ lọc khác như thông cao HPF (High Pass Filter), thông dải BPF (Band Pass Filter)
đều có thể được định nghĩa tương tự. Tuy nhiên, các tham số thiết kế quan trọng nhất
là các dung sai dải tần và các tần số cạnh-dải. Bởi vậy, trong phần 1 về cơ sở lý thuyết
này chúng ta chỉ tập trung vào bộ lọc FIR thông thấp. Việc thiết kế cụ thể cho bộ lọc
FIR thông dải bằng kỹ thuật cửa sổ sẽ được phát triển trên cơ sở lọc thông thấp và sẽ
được mô tả chi tiết trong phần 2.
Các thuận lợi trong thiết kế và thi hành lọc số FIR
4
(1.2)
(1.3)
0
1
1
2
10
log20 >
+

−=
δ
δ
s
A
(>>1) for stopband
0
1
1
1
1
10
log20 >
+

−=
δ
δ
p
R
(≈0) for passband
ω
ω

1
1+δ
1

1-δ
1


Độ gợn dải thông
Độ gợn dải chắn
Dải chuyển tiếp
δ
2

R
p

A
s

w
p

w
s

π
0
0
|H(e
jw
)|
Decibels
Hình (1.1) Các chỉ tiêu của bộ lọc FIR
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
Việc thiết kế và thực hiện lọc FIR có những thuận lợi sau đây:


Đáp ứng pha là tuyến tính.

Dễ thiết kế do không gặp các vấn đề ổn định (lọc FIR luôn ổn định).

Việc thực hiện rất hiệu quả

.

Có thể sử dụng DFT để thực hiện

Mặc dầu vậy dải đã cho là dải thông hay dải chắn chỉ là tương đối có thể đảo
lại ( minor issue).
Các thuận lợi của đáp ứng pha tuyến tính
Đáp ứng pha là tuyến tính (linear phase response) mang lại những thuận lợi sau:

Bài toán thiết kế chỉ gồm các phép tính số học thực chứ không cần phép tính số
học phức

Bộ lọc pha tuyến tính không có méo trễ nhóm và chỉ bị trễ một khoảng không
đổi.

Đối với bộ lọc có chiều dài M (hoặc bậc M-1) số phép toán có bậc M/2 như đã
khảo sát trong thi hành pha tuyến tính.
1.3. Cấu trúc của bộ lọc FIR
Cho h(n), n=0,1,…,M-1 là đáp ứng xung có chiều dài M. Thì hàm truyền hệ thống là
một bộ lọc đáp ứng xung hữu hạn với hàm hệ thống có dạng:


=
−−



=+++=
1M
0n
n
n
M1
1M
1
10
zbzbzbb)z(H *
(1.4)
Như vậy đáp ứng xung h(n) là:



−≤≤
=
else
Mnb
nh
n
0
10
)(
(1.5)
Và phương trình sai phân là:
)1()1()()(
110

+−++−+=

Mnxbnxbnxbny
M
*
(1.6)
Đây chính là tích chập tuyến tính của các dãy hữu hạn.
Bậc của bộ lọc là M-1, trong khi chiều dài của bộ lọc là M (bằng với số lượng các
hệ số). Các cấu trúc bộ lọc FIR luôn luôn ổn định, và tương đối đơn giản hơn so với
các cấu trúc bộ lọc IIR. Hơn thế nữa, các bộ lọc FIR có thể được thiết kế để có một
đáp ứng pha tuyến tính và đó là điều cần thiết trong một số ứng dụng.
Chúng ta sẽ xem xét lần lượt các cấu trúc của bộ lọc FIR sau đây:
1.3.1. Cấu trúc dạng trực tiếp
Phương trình sai phân được thực hiện bởi một dãy liên tiếp các bộ trễ do không có
đường phản hồi:
)1Mn(xb)1n(xb)n(xb)n(y
1M10
+−++−+=

*
(1.7)
Do mẫu thức bằng đơn vị nên ta chỉ có một cấu trúc dạng trực tiếp duy nhất. Cấu
trúc dạng trực tiếp được cho trong hình (1.2) với M = 5:
5
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
1.3.2. Cấu trúc dạng ghép tầng
Hàm hệ thống H(z) được biến đổi thành các tích của các khâu bậc 2 với các hệ số
thực. Các khâu này được thực hiện ở dạng trực tiếp và bộ lọc tổng thể có dạng ghép
tầng của các khâu bậc 2.







+++=+++=


−−

− M1
0
1M
1
0
1
0
M1
1M
1
10
z
b
b
z
b
b
1bzbzbb)z(H **
(1.8)



=
−−
++=
K
1k
2
2,k
1
1,k0
)zBzB1(b
trong đó






=
2
M
K
, B
k,1
và B
k,2
là các số thực đại diện cho các hệ số của các khâu bậc
2. Cấu trúc dạng ghép tầng được cho trong hình (1.3) với M = 7:
1.3.3. Cấu trúc dạng pha tuyến tính
Đối với các bộ lọc chọn tần, người ta mong muốn có đáp ứng pha là hàm tuyến tính

t heo tần số, nghĩa là:
αω−β=∠
ω
)e(H
j
π≤ω≤π−
(1.9)
Trong đó :
0=β
hoặc
2
π
±

α
là một hằng số.
Đối với bộ lọc FIR nhân quả có đáp ứng xung trong khoảng [0, M-1], thì các điều
kiện tuyến tính là:
1Mn0,0);n1M(h)n(h −≤≤=β−−=
(1.10)
1Mn0,2/);n1M(h)n(h −≤≤π±=β−−−=
(1.11)
Xét phương trình sai phân được cho trong phương trình (1.6) với đáp ứng xung đối
xứng trong phương trình (1.10), ta có:
)1Mn(xb)2Mn(xb)1n(xb)n(xb)n(y
0110
+−++−++−+= *

*++−+−++−+= )]2Mn(x)1n(x[b)]1Mn(x)n(x[b
10

Sơ đồ khối thực hiện phương trình sai phân trên được mô tả trong hình (1.4) dưới
đây đối với cả M lẻ và M chẵn:
Đối với M lẻ: M = 7, còn đối với M chẵn: M = 6 ( hình 1.4 )
Rõ ràng, với cùng một bậc của bộ lọc (cùng M) cấu trúc pha tuyến tính sẽ tiết kiệm
được 50% các bộ nhân so với cấu trúc dạng trực tiếp.
6
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
1.4. Các đặc tính của bộ lọc FIR pha tuyến tính
Trong phần này chúng ta sẽ thảo luận về hình dạng của đáp ứng xung, đáp ứng tần
số trong hàm hệ thống của các bộ lọc FIR pha tuyến tính.
Cho h(n), trong đó 0 ≤ n ≤ M – 1, là đáp ứng xung có chiều dài M thì hàm truyền hệ
thống là:
∑∑

=
−−−−

=

==
1M
0n
n1M)1M(
1M
0n
n
z)n(hzz)n(h)z(H
(1.12)
có (M-1) điểm cực ở gốc (trivial poles) và M-1 điểm không nằm ở vị trí bất kỳ trên
mặt phẳng z. Đáp ứng tần số là:

π≤ω<π−=


=
ω−ω
,e)n(h)e(H
1M
0n
njj
(1.13)
1.4.1. Đáp ứng xung h(n)
Chúng ta có thể đưa ra ràng buộc pha tuyến tính:
π≤ω<π−αω−=∠
ω
,)e(H
j
(1.14)
trong đó: α là một hằng số trễ pha. Ta đã biết rằng h(n) phải đối xứng, nghĩa là:
2
1M
,1Mn0),n1M(h)n(h

=α−≤≤−−=
(1.15)
Do đó h(n) là đối xứng theo α, là chỉ số đối xứng. Có hai kiểu đối xứng:
7

b
0
z

-
1

b
1
z
-
1

b
2
x(n)
z
-
1

z
-
1

z
-
1

y(n)
b
0
z
-
1


b
1
z
-
1

b
2
b
3
y(n)
x(n)
z
-
1

z
-
1

z
-
1

z
-
1

M=7

M=6
Hình (1.4 ) Cấu trúc lọc FIR pha tuyến tính với các hệ số M chẵn và lẻ
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số

M lẻ: Trong trường hợp này,
2
1M −

là một số nguyên. Đáp ứng xung
được mô tả trong (hình 1.5) dưới đây:

M chẵn: Trong trường hợp này,
2
1M −

không phải là một số nguyên. Đáp
ứng xung được mô tả bằng (hình 1.6) dưới đây:
Ta cũng có bộ lọc FIR pha tuyến tính loại hai nếu ta yêu cầu đáp ứng pha
( )
ω

j
eH

thoả mãn điều kiện:
αω−β=∠
ω
)e(H
j
với

π≤ω<π−
(1.16)
Đáp ứng pha là đường thẳng nhưng không đi qua gốc. Trong trường hợp này α
không phải là hằng số trễ pha, nhưng:
α−=
ω

ω
d
)e(Hd
j
(1.17)
là hằng số, chính là trễ nhóm (α là một hằng số trễ nhóm). Trong trường hợp này, các
tần số được làm trễ với một tốc độ không đổi.
Đối với kiểu pha tuyến tính này, có thể thấy rằng:
1Mn0),n1M(h)n(h −≤≤−−−=

2
,
2
1M π
±=β


(1.18)
Điều này có nghĩa rằng đáp ứng xung h(n) là phản đối xứng (antisymmetric). Chỉ số
đối xứng vẫn là
2
1M −


. Một lần nữa chúng ta lại có 2 kiểu, cho M lẻ và M chẵn.
8
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số

M lẻ: Trong trường hợp này,
2
1M −

là một số nguyên. Đáp ứng xung
được mô tả bằng (hình 1.7) dưới đây:
Lưu ý rằng mẫu h(α) tại
2
1M −

phải bằng 0, nghĩa là,
0
2
1M
h =







.

M chẵn: Trong trường hợp này,
2

1M −

không phải là một số nguyên. Đáp
ứng xung được mô tả trong hình 1.8.
1.4.2. Đáp ứng tần số H(e

)
Như vậy, khi tổ hợp hai loại đối xứng và phản đối xứng với M chẵn và M lẻ, ta có
bốn kiểu lọc FIR pha tuyến tính. Đáp ứng tần số của mỗi kiểu có biểu thức và hình
dạng riêng. Để nghiên cứu các đáp ứng pha của các kiểu này, ta viết biểu thức của
H(e

) như sau:
2
1M
,
2
;e)e(H)e(H
)(jj
r
j


π
±=β=
αω−βωω
(1.19)
trong đó H
r
(e


) là hàm đáp ứng độ lớn chứ không phải là hàm đáp ứng biên độ. Đáp
ứng độ lớn là một hàm thực, có thể vừa dương vừa âm, không giống đáp ứng biên độ
luôn luôn dương. Đáp ứng pha kết hợp với đáp ứng biên độ là một hàm không liên tục,
trong khi kết hợp với đáp ứng độ lớn là một hàm tuyến tính liên tục.

Bộ lọc FIR pha tuyến tính Loại-1 (Type 1): Đáp ứng xung đối xứng, M lẻ:
9
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
Trong trường hợp này
0=β
,
2
1M −

là một biến nguyên, và
( ) ( )
nMhnh −−= 1
,
1Mn0 −≤≤
, thì ta có thể chứng tỏ rằng:
( )
( )
( ) 2/1Mj
2/1M
0n
j
encosna)e(H
−ω−


=
ω






ω=

(1.20)
trong đó:

( )







=
2
1M
h0a
với mẫu ở chính giữa
(1.21)

( )









= n
M
hna
2
1
2
với
2
3M
n1

≤≤


Bộ lọc FIR pha tuyến tính Loại-2 (Type 2): Đáp ứng xung đối xứng, M chẵn
Trong trường hợp này
0=β
,
( ) ( )
n1Mhnh −−=
,
1Mn0 −≤≤
, nhưng

2
1M −


không phải là một biến nguyên, thì ta có thể chứng tỏ rằng:
( )
( ) 2/1Mj
2/M
1n
j
e
2
1
ncosnb)e(H
−ω−
=
ω



















−ω=

(1.22)
trong đó:
( )






−= n
2
M
h2nb
với
2
M
, ,2,1n =
(1.23)
Sosánh (1.21) và (1.18), ta có:
( )

=













−ω=ω
2/M
1n
r
2
1
ncosnb)(H
(1.24)
Lưu ý: Tại
π=ω
, ta có
( )
0
2
1
ncosnb)(H
2/M
1n
r

=












−π=π

=
mà không cần quan tâm
đến b(n) hoặc h(n). Do đó chúng ta không thể sử dụng loại này (h(n) đối xứng, M
chẵn) đối với bộ lọc thông cao hoặc bộ lọc chắn dải.

Lọc FIR pha tuyến tính Loại-3 (Type 3): Đáp ứng xung phản đối xứng, M lẻ:
Trong trường hợp này ta có
2
π

,
2
1M −

là một biến nguyên,

( ) ( )
n1Mhnh −−−=
,
1Mn0 −≤≤
, và
0
2
1M
h =







thì ta có thể chứng tỏ:
( )
( )






ω









π

=
ω






ω=

2
1M
2
j
2/1M
0n
j
ensinnc)e(H
(1.25)
trong đó :
10
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
( )









= n
2
1M
h2nc
với
2
M
, ,2,1n =
(1.26)
So sánh (1.24) và (1.18), ta có:
( ) ( )
( )


=
ω=ω
2/1M
0n
r
nsinncH
(1.27)
Lưu ý: Tại
0=ω


π=ω
, ta có
( )
0H
r

mà không cần quan tâm c(n) hoặc h(n).
Hơn thế nữa,
je
2
j
=
π
, điều đó có nghĩa là
( )
ω
r
jH
là thuần ảo. Do đó, loại bộ lọc này
không thích hợp đối với việc thiết kế bộ lọc thông thấp hoặc thông cao. Tuy nhiên,
điều này thích hợp đối với việc xấp xỉ các bộ vi phân và bộ biến đổi Hilbert số lý
tưởng.

Lọc FIR pha tuyến tính Loại-4 (Type 4):Đáp ứng xung phản đối xứng, M
chẵn
Trong trường hợp này
2
π


,
( ) ( )
n1Mhnh −−−=
,
1Mn0 −≤≤
, nhưng
2
1M −

không phải là một biến nguyên, thì ta có thể chứng tỏ rằng:
( )






ω








π
=
ω



















−ω=

2
1M
2
j
2/M
1n
j
e
2
1
nsinnd)e(H

(1.28)
trong đó:
( )






−= n
2
M
h2nd
với
2
M
, ,2,1n =
(1.29)
So sánh (1.27) và (1.18), ta có:
( )

=













−ω=ω
2/M
1n
r
2
1
nsinnd)(H
(1.30)
Lưu ý: Tại
π=ω
,
0)0(H
r
=

je
2
j
=
π
. Do vậy, loại này cũng thích hợp cho việc
thiết kế các bộ vi phân số và bộ biến đổi Hilbert số.
Bảng sau đây mô tả khả năng thích hợp trong việc thiết kế các bộ lọc và các bộ biến
đổi Hilbert số, bộ vi phân số của 4 loại lọc FIR pha tuyến tính đã nêu
Bảng 1.1
Type LPF HPF BPF SBF Hilbert Differentiator

FIR Type 1
FIR Type 2
FIR Type 3
FIR Type 4
THIẾT KẾ BỘ LỌC FIR BẰNG PHƯƠNG PHÁP LẤY MẪU TẦN SỐ
(FREQUENCY SAMPLING DESIGN TECHNIQUES)
11
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
Cách tiếp cập này đưa trên sự kiện là hàm truyền hệ thống H(z) có thể thu được từ
các mẫu H(k) của đáp ứng tần số H(e
jw
).
Kỹ thuật thiết kế này rất phù hợp với cấu trúc lấy mẫu tần số đã khảo sát trong
chương 5.

Đáp ứng Pha đối với Type 1 & 2
Đáp ứng Pha đối với Type 3 & 4
Đáp ứng thực tế là nội suy của các mẫu được cho bởi


12
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
PHẦN 2. THIẾT KẾ BỘ LỌC
1. BỘ LỌC THÔNG THẤP – LÊ PHƯỚC SINH
1.1.Bộ lọc thông thấp lý tưởng:
Bộ lọc số lý tưởng có đặc tính biên dộ tần số dạng chữ nhật:
Trên thực tế không thể xây dựng được bộ lọc số có đặc tính biên độ tần số như vậy,
tuy nhiên các bộ lọc số lý tưởng là cơ sở để phân tích và tổng hợp các bộ lọc số thực
tế.
Bộ lọc thông thấp lý tưởng có đặc tính biên độ tần số khi như sau:

Đặc tính biên độ tần số của bộ lọc thong thấp lý tưởng ở hình sau:


1
0
1.2.Phương pháp lấy mẫu tần số:
Phương pháp lấy mẫu tần số sử dụng phép biến đổi Fourier rời rạc (DFT). Cơ sở của
phương pháp lấy mẫu tần số là xấp xỉ đặc tính biên độ tần số H(k) của bộ lọc cần tổng
hợp theo đặc tính biên độ của bộ lọc số lý tưởng cùng loại.
1.3.Thiết kế bộ lọc thông thấp theo phương pháp lấy mẫu tần số:
13
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
Chọn M=20, đây là bộ lọc fir loại 2
Vậy trong dải thông ta có 3 mẫu và trong dải chặn ta có 7 mẫu.
Phần chương trình matlab
function [Hr,w,b,L] = Hr_Type2(h)
M = length(h);
L = M/2;
b = 2*[h(L:-1:1)];
n = [1:1:L]; n = n-0.5;
w = [0:1:500]'*pi/500;
Hr = cos(w*n)*b';
function [db,mag,pha,grd,w]=freqz_m(b,a);
[H,w]=freqz(b,a,1000,'whole');
H=(H(1:1:501))';w=(w(1:1:501))';
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
grd=grpdelay(b,a,w);
Chương trình matlab chính:

M=20;
alpha=(M-1)/2;
l=0:M-1;
wl=(2*pi/M)*l;
Hrs=[1,1,1,zeros(1,15),1,1];
Hdr=[1,1,0,0];
wdl=[0,0.25,0.3,2];
k1=0:floor((M-1)/2);
k2=(floor((M-1)/2)+1):M-1;
angH=[-alpha*(2*pi)/M*k1,alpha*(2*pi)/M*(M-k2)];
H=Hrs.*exp(j*angH);
h=real(ifft(H,M));
[db,mag,pha,grd,w]=freqz_m(h,1);
[Hr,w,a,L]=Hr_Type2(h);
%subplot(1,1,1)
subplot(2,2,1); plot(wl/pi, Hrs,'o',wdl,Hdr);
axis([0,1,-0.1,1.1]); title('Frequency Samples: M=20')
14
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
xlabel('frequency in pi units'); ylabel('Hr(k)')
subplot(2,2,2);
stem(l,h);axis([-1,M,-0.1,0.3])
title('Impulse Response');
xlabel('n');
ylabel('h(n)');
subplot(2,2,3);
plot(w/pi,Hr,wl/pi,Hrs,'o')
axis([0,1,-0.2,1.2]); title('Amplitude Response')
xlabel('frequency in pi units'); ylabel('Hr(w)')
subplot(2,2,4); plot(w/pi,db); axis([0,1,-60,10]);grid

title('Magnitude Response'); xlabel('frequency in pi units');
ylabel('Decibels');
Kết quả mô phỏng
15
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
2. BỘ LỌC THÔNG CAO – PHẠM TUẤN SƠN
BÀI TOÁN: Thiết kế bộ lọc FIR thông cao với các thông số
Stopband
Passband
Chọn M=33, đây là bộ lọc fir loại 1
Vậy trong dải thông ta có 3 mẫu và trong dải chặn ta có 13 mẫu.

2.1.Chương trình Matlab
Các hàm sử dụng
Hàm Hr_Type1(h):Tính đáp biên độ của bộ lọc tần số loại 1
function [Hr,w,a,L] = Hr_Type1(h);
% Computes Amplitude response Hr(w) of a Type-1 LP FIR filter
% [Hr,w,a,L] = Hr_Type1(h)
% Hr = Amplitude Response
% w = 500 frequencies between [0 pi] over which Hr is computed
% a = Type-1 LP filter coefficients
% L = Order of Hr
% h = Type-1 LP filter impulse response
M = length(h);
L = (M-1)/2;
a = [h(L+1) 2*h(L:-1:1)]; % 1x(L+1) row vector
n = [0:1:L]; % (L+1)x1 column vector
w = [0:1:500]'*pi/500;
Hr = cos(w*n)*a';
freqz_m(b,a): Tính đáp ứng tần số của bộ lọc FIR có đáp ứng xung h.

function [db,mag,pha,grd,w]=freqz_m(b,a);
% Modified version of freqz subroutine
% [db,mag,pha,grd,w]=freqz_m(b,a);
% db=Relative magnitude in dB computed over 0 to pi radians
% mag=absolute magnitude computed over 0 to pi radians
% grd= Group delay over 0 to pi radians
% w=501 frequency samples between 0 to pi radians
% b=numerator polynomial of H(z) (for FIR: a=h)
% a=demonitor polynomial of H(z) (for FIR: a=[1])
[H,w]=freqz(b,a,1000,'whole');
16
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
H=(H(1:1:501))';w=(w(1:1:501))';
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
grd=grpdelay(b,a,w);
Chương trình thực hiện.
M=33; alpha=(M-1)/2;
l=0:M-1;
w1=(2*pi/M)*l;
T1=0.12; T2=0.8;
Hrs=[zeros(1,11),T1,T2,ones(1,8),T2,T1,zeros(1,10)];
Hdr=[0,0,1,1];
wdl=[0,0.6,0.8,1];
k1=0:floor((M-1)/2);
k2=floor((M-1)/2+1):(M-1);
angH=[-alpha*(2*pi)/M*k1,alpha*(2*pi)/M*(M-k2)];
H=Hrs.*exp(j*angH);
h=real(ifft(H,M));

[db,mag,pha,grd,w]=freqz_m(h,1);
[Hr,w,a,L]= Hr_type1(h);

%subplot(1,1,1)
subplot(2,2,1); plot(wl/pi, Hrs,'o',wdl,Hdr);
axis([0,1,-0.1,1.1]); title(' M=33')
xlabel('frequency in pi units'); ylabel('Hr(k)')
subplot(2,2,2);
stem(l,h);axis([-1,M,-0.1,0.3])
title('Impulse Response');
xlabel('n');
ylabel('h(n)');
subplot(2,2,3);
plot(w/pi,Hr,wl/pi,Hrs,'o')
axis([0,1,-0.2,1.2]); title('Amplitude Response')
xlabel('frequency in pi units'); ylabel('Hr(w)')
subplot(2,2,4); plot(w/pi,db); axis([0,1,-60,10]);grid
title('Magnitude Response'); xlabel('frequency in pi units');
ylabel('Decibels');
2.2.Kết quả mô phỏng:
17
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số

3. BỘ LỌC THÔNG DẢI – HUỲNH VĂN THỦY
BÀI TOÁN:
18
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
Các bước tính toán thiết kế lọc FIR thông dãi với các thông số sau:
dBA
dbR

dBR
dBA
Ss
pp
pp
SS
60;8,0
1;65,0
1;35,0
60;2,0
2
2
1
1
==
==
==
==
πω
πω
πω
πω
- Với A
S
=60dB chọn cửa sổ Blackman với hàm cửa sổ như sau:






≤≤






+







=
Mandnn
Mn
M
n
M
n
nw
** 00
0
4
cos08,0
2
cos5,042,0
)(

ππ
- Tính M với :
πππωωω
πππωωω
15,065.08,0
15,02,035,0
222
111
=−=−=∆
=−=−=∆
PS
SP
πωω
15.0),(
21
=∆∆=→ MINTW
→=+=+=⇒ 3.741
15,0
11
1
11
π
ππ
TW
M
chọn M=75
- Tìm tần số cắt:
( )
( ) ( )
πππωωω

πππωωω
725,02/8,065,02/
275,02/)35,02,0(2/
222
111
=+=+=
=+=+=
SPC
SPC
- Tìm H
d
(n) lý tưởng bộ lọc thông dãi có:
( )
n
Sin
n
nSin
dedenh
C
CC
C
CC
njnj
d
C
C
C
C
1
11

2
22
1
2
1
21
2
ω
ω
π
ω
ω
ω
π
ω
π
ωω
ω
ω
ω
ω
ω
ω
−=









+=⇒
∫∫


- Tìm đáp ứng xung h(n) của bộ lọc thực tế (bộ lọc cần thiết kế):
Đáp ứng xung của bộ lọc thông dải thực tế được tính bằng cách lấy đáp ứng
xung lý tưởng nhân với hàm cửa sổ đây chính là thao tác lấy cửa sổ.
h(n) = h
d
(n).w(n)
Đến đây chúng ta đã có được bộ lọc cần thiết kế.
3.2. Thiết kế bằng phương pháp lấy mẫu tần số:
3.2.1 Tính toán:
Theo ý tưởng cơ bản
Chúng ta chọn M=40 do đó chúng ta có mẫu tần số tại
1s
ω
đó là tại k =4
4
40
2
2.0
1
π
πω
==
s
Và mẫu tiếp theo tại

p1
ω
đó là tại k=7:
7
40
2
2.0
1
π
πω
==
p
19
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
Và mẫu tiếp theo tại
2s
ω
đó là tại k=13:
13
40
2
2.0
2
π
πω
==
p
Và mẫu tiếp theo tại
p2
ω

đó là tại k=16:
16
40
2
2.0
2
π
πω
==
s
Do đó chúng ta có 6 mẫu trong stopband [
s1
0
ωω
≤≤
] và 9 mẫu trong passband
[
pp 21
ωωω
≤≤
] và 6 mẫu trong stopband [
πωω
≤≤
p2
]. Từ 7.36 chúng ta có:
( )
KH
r
=[zeros(1,6),ones(1,9),zeros(1,11),ones(1,9),zeros(1,5)]
Khi chọn M=40,

5.19
2
140
=

=
α
với giá trị này thì thuộc bộ đáp ứng pha tuyến
Tính Type-2, từ [7.37] chúng ta có:





≤≤−+
≤≤−=−
=∠
3920),40(95.1
190,5.19
20
2
5.19
)(
kk
kkk
kH
π
π
π
Tìm đáp ứng xung h(n)

Phương pháp thiết kế tối ưu:
Điều kiện thuận lợi để chọn giá trị T1 và T2 cho M=40 và 7 mẫu trong
passband là:
59417456.0,109021.0
21
== TT
Do đó:
( )
=
ω
r
H
[zeros(1,5),T1,T2,ones(1,7),T2,T1,zeros(1,9),T1,T2,ones(1,7),T2,T1,zeros(1,4)]
3.2.2 Chương trình Matlab
Chương trình thực hiện.
* Theo ý tưởng cơ bản :
% Phuong phap tan so don gian
% Thiet ke lay mau tan so
%
M = 40; alpha = (M-1)/2; l = 0:M-1; wl = (2*pi/M)*l;
Hrs = [zeros(1,6),ones(1,9),zeros(1,11),ones(1,9),zeros(1,5)];
Hdr = [0,0,1,1,0,0]; wdl = [0,0.275,0.275,0.725,0.725,1];
k1 = 0:floor((M-1)/2); k2 = floor((M-1)/2)+1:M-1;
20
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
angH = [-alpha*(2*pi)/M*k1, alpha*(2*pi)/M*(M-k2)];
H = Hrs.*exp(j*angH);
h = real(ifft(H,M));
[db,mag,pha,grd,w] = freqz_m(h,1);
[Hr,ww,a,L] = Hr_Type2(h);

subplot(1,1,1)
subplot(2,2,1);plot(wl(1:21)/pi,Hrs(1:21),'o',wdl,Hdr);
axis([0,1,-0.1,1.1]); title('Frequency Samples : M=40')
xlabel(' '); ylabel('Hr(k)')
set(gca,'XTickMode','manual','XTick',[0,0.2,0.35,0.65,0.8,1])
set(gca,'YTickMode','manual','YTick',[0,1]); grid
subplot(2,2,2); stem(l,h); axis([-1,M,-0.4,0.4]);grid
title('Impulse Response');ylabel('h(n)');text(M+1,-0.1,'n')
subplot(2,2,3); plot(ww/pi,Hr,wl(1:21)/pi,Hrs(1:21),'o');
axis([0,1,-0.2,1.2]); title('DAP UNG BIEN DO')
xlabel('Frequency in pi units'); ylabel('Hr(w)')
set(gca,'XTickMode','manual','XTick',[0,0.2,0.35,0.65,0.8,11])
set(gca,'YTickMode','manual','YTick',[0,1]); grid
subplot(2,2,4);plot(w/pi,db); axis([0,1,-100,10]); grid
title('Magnitude Response '); xlabel('Frequency in pi units');
ylabel('dB');
set(gca,'XTickMode','Manual','XTick',[0,0.2,0.35,0.65,0.8,1]);
set(gca,'YTickMode','Manual','YTick',[-16;0]);
set(gca,'YTickLabelMode','manual','YTickLabels',['16';' 0'])
* Phương pháp thiết kế tối ưu:
% Phuong phap toi uu
% ws1=0.2pi, wp1=0.35pi, wp2=0.65pi, ws2=0.8pi, Rp=1dB,
As=60dB
% T2 = 0.59417456, T1=0.109021
M = 40; alpha = (M-1)/2; l = 0:M-1; wl = (2*pi/M)*l;
T1 = 0.109021; T2 = 0.59417456;
Hrs =
[zeros(1,5),T1,T2,ones(1,7),T2,T1,zeros(1,9),T1,T2,ones(1,7),T2,T1,zeros
(1,4)];
Hdr = [0,0,1,1,0,0]; wdl = [0,0.2,0.35,0.65,0.8,1];

k1 = 0:floor((M-1)/2); k2 = floor((M-1)/2)+1:M-1;
angH = [-alpha*(2*pi)/M*k1, alpha*(2*pi)/M*(M-k2)];
H = Hrs.*exp(j*angH);
h = real(ifft(H,M));
[db,mag,pha,grd,w] = freqz_m(h,1);
[Hr,ww,a,L] = Hr_Type2(h);
subplot(1,1,1)
subplot(2,2,1);plot(wl(1:21)/pi,Hrs(1:21),'o',wdl,Hdr);
axis([0,1,-0.1,1.1]); title('Frequency Sanmples: M=40,T1=0.5941,
T2=0.109')
21
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
xlabel(''); ylabel('Hr(k)')
set(gca,'XTickMode','manual','XTick',[0,0.2,0.35,0.65,0.8,1]); grid
%set(gca,'YTickMode','manual','YTick',[0,0.59,0.109,1]); grid
subplot(2,2,2); stem(l,h); axis([-1,M,-0.4,0.4]); grid
title('Impulse Response');ylabel('h(n)');text(M+1,-0.4,'n')
subplot(2,2,3); plot(ww/pi,Hr,wl(1:21)/pi,Hrs(1:21),'o');
axis([0,1,-0.1,1.1]); title('Amplitude Response')
xlabel('Frequency in pi units'); ylabel('Hr(w)')
set(gca,'XTickMode','manual','XTick',[0,0.2,0.35,0.65,0.8,1]); grid
%set(gca,'YTickMode','manual','YTick',[0,0.59,0.109,1]); grid
subplot(2,2,4);plot(w/pi,db); axis([0,1,-100,10]); grid
title('Magnitude'); xlabel('Frequency in pi units');
ylabel('Decibels');
set(gca,'XTickMode','Manual','XTick',[0,0.2,0.35,0.65,0.8,1]);
set(gca,'YTickMode','Manual','YTick',[-60;0]);
set(gca,'YTickLabelMode','manual','YTickLabels',['60';' 0'])
Kết quả chạy chương trình
* Theo ý tưởng cơ bản :

Hình 4.3: Mô tả đáp ứng sau khi thiết kế
Nhận xét:
- Lỗi xấp xỉ là hiệu của đáp ứng lý tưởng và đáp ứng thực tế bằng không tại các
tần số được lấy mẫu.
22
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
- Lỗi xấp xỉ ở tất cả các tần số khác nhau phụ thuộc vào hình dạng của đáp ứng
tần số lý tưởng; nghĩa là, đáp ứng tần số lý tưởng càng sắc nét thì lỗi xấp xỉ càng
lớn.
- Lỗi càng lớn khi ở gần cạnh dải và càng bé khi ở bên trong dải.
Quan sát độ thị hình 4.3 thì độ suy hao dải chắn tối thiểu khoảng 16dB không
thỏa mãn với giá trị As=60dB đã cho. Do vậy phương pháp xứ lý này không chấp
nhận được.
Để có được hệ số suy giảm tốt hơn, chúng ta phải tăng M tạo ra các mẫu tự do ở
dải chuyển tiếp nghĩa là, chúng ta thay đổi các giá trị của chúng để thu được hệ số suy
giảm lớn nhất đối với M và độ rộng dải chuyển tiếp đã cho. Trong thực tế thì trong dải
chuyến tiếp người ta chọn một hoặc hai mẫu. Đây được gọi là phương pháp thiết kế tối
ưu.
* Phương pháp thiết kế tối ưu:
Hình 4.4: Mô tả đáp ứng sau khi thiết kế
Nhận xét:
Độ suy hao dải chẵn tối thiểu bây giờ là 60dB. So với giá thiết thì có thể chấp
nhận được. Do đó chấp nhận bộ lọc FIR pha tuyến tính mà đáp ứng tấn số của nó độ
gợn song của biên độ là hằng số.
23
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
4. THIẾT KẾ BỘ LỌC FIR CHẮN DẢI - VŨ BẢO TOÀN
BÀI TOÁN
4.1. Thiết kế bằng phương pháp lấy mẫu tần số:
Các bước tính toán thiết kế lọc FIR chắn dải với các thông số sau:

dBA
dbR
dBR
dBA
Ss
pp
pp
SS
40;6,0
5,0;7,0
5,0;3,0
40;4,0
2
2
1
1
==
==
==
==
πω
πω
πω
πω
4.2. Tính toán:
Ta có:
πππωωω
πππωωω
1,06,07,0
1,03,04,0

222
111
=−=−=∆
=−=−=∆
sp
ps
Tần số cắt:
( )
( ) ( )
πππωωω
πππωωω
65,02/6,07,02/
35,02/)4,03,0(2/
222
111
=+=+=
=+=+=
SPC
SPC
Chúng ta chọn M=63 do đó chúng ta có mẫu tần số tại
p1
ω
đó là tại k = 9:
9
63
2
3.0
1
π
πω

==
p
Và mẫu tiếp theo tại
s1
ω
đó là tại k= 13:
13
63
2
4.0
1
π
πω
==
s
24
DSP – Thiết kế bộ lọc FIR bằng phương pháp lấy mẫu tần số
Và mẫu tiếp theo tại
s2
ω
đó là tại k= 19:
19
63
2
6.0
2
π
πω
==
s

Và mẫu tiếp theo tại
p2
ω
đó là tại k= 22:
22
63
2
7.0
2
π
πω
==
p
Do đó chúng ta có 9 mẫu trong stopband [
p1
0
ωω
≤≤
] và 6 mẫu trong
passband [
ss 21
ωωω
≤≤
] và 9 mẫu trong stopband [
πωω
≤≤
p2
]. Chúng ta có:
( )
KH

r
=[ones(1,9),zeros(1,13),ones(1,19),zeros(1,13),ones(1,9)]
Khi chọn M=63,
31
2
163
=

=
α
với giá trị này thì thuộc bộ đáp ứng pha tuyến
Tính Type-1, chúng ta có:





≤≤−+
≤≤−=−
=∠
6331),63(2
310,2
31
2
31
)(
kk
kkk
kH
π

π
π
Tìm đáp ứng xung h(n)
4.3. Chương trình Matlab
Các hàm sử dụng
Hàm Hr_Type1(h):Tính đáp biên độ của bộ lọc tần số loại 1
function [Hr,w,a,L] = Hr_Type1(h);
% Computes Amplitude response Hr(w) of a Type-1 LP FIR filter
% [Hr,w,a,L] = Hr_Type1(h)
% Hr = Amplitude Response
% w = 500 frequencies between [0 pi] over which Hr is computed
% a = Type-1 LP filter coefficients
% L = Order of Hr
% h = Type-1 LP filter impulse response
M = length(h);
L = (M-1)/2;
a = [h(L+1) 2*h(L:-1:1)]; % 1x(L+1) row vector
n = [0:1:L]; % (L+1)x1 column vector
w = [0:1:500]'*pi/500;
Hr = cos(w*n)*a';
freqz_m(b,a): Tính đáp ứng tần số của bộ lọc FIR có đáp ứng xung h.
function [db,mag,pha,grd,w]=freqz_m(b,a);
% Modified version of freqz subroutine
%
25

×