Tài liệu Báo cáo thực tập-thiết kế bộ lọc fir thông cao bằng phương pháp lấy mẫu tần số

  • Số trang: 22 |
  • Loại file: PDF |
  • Lượt xem: 152 |
  • Lượt tải: 0
quangtran

Đã đăng 3721 tài liệu

Mô tả:

ĐẠI HỌC QUY NHƠN --- oOo --- BÀI TẬP LỚN MÔN HỌC: XỬ LÝ SỐ TÍN HIỆU ĐỀ TÀI: THIẾT KẾ BỘ LỌC FIR THÔNG CAO BẰNG PHƯƠNG PHÁP LẤY MẪU TẦN SỐ Người hướng dẫn : Sinh viên thực hiện : Lớp : Quy Nhơn , tháng 5/2011 Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 2 LỜI NÓI ĐẦU Với xu hướng số hóa các hệ thống thông tin hiện nay,việc xử lý tín hiệu số ngày càng trở nên quan trọng với khả năng xử lý thông tin một các ưu việt. Để có thể tiếp cận được lĩnh vực này, chúng ta cần có những kiến thức cơ bản về tín hiệu số và các phương pháp xử lý. Một trong những kiến thức quan trọng đó là thiết kế bộ lọc số - hệ thống có thể làm thay đổi tín hiệu để phù hợp với mục đích của con người. Trong xử lý số tín hiệu, tồn tại nhiều bộ lọc số khác nhau như: bộ lọc thông thấp, bộ lọc thông dải, bộ lọc vi phân,… Để thiết kế các bộ lọc thích hợp, trước hết phải xác định yêu cầu thực tế dựa trên các chỉ tiêu kỹ thuật cho trước, trên cơ sở đó định hình cấu trúc bộ lọc và phương pháp thiết kế tối ưu. Cấu trúc bộ lọc có thể là: cấu trúc FIR (bộ lọc số có đáp ứng xung chiều dài xác định) hoặc cấu trúc IIR (bộ lọc số có đáp ứng xung chiều dài không xác định). Phương pháp thiết kế có thể là: phương pháp cửa sổ, phương pháp lấy mẫu tần số, hoặc phương pháp xấp xỉ tối ưu,… Được sự phân công của thầy giáo , trên cơ sở những kiến thức đã học, tôi đã tìm hiểu bộ lọc FIR theo phương pháp lấy mẫu tần số. Tôi xin chân thành cám ơn thầy giáo , bạn bè cùng lớp đã tận tình hướng dẫn để tôi có thể hoàn thành đề tài này. Chắc chắn đề tài sẽ không tránh khỏi những thiếu sót rất mong được sự góp ý của quý thầy cô và các bạn. Xin chân thành cảm ơn! Quy nhơn, tháng 5 năm 2011 Người thực hiện Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 3 MỤC LỤC LỜI NÓI ĐẦU.............................................................................................................2 MỤC LỤC...................................................................................................................3 Phần 1. CƠ SỞ LÝ THUYẾT......................................................................................4 1.1. Dẫn nhập...........................................................................................................4 1.2. Cấu trúc của bộ lọc FIR.....................................................................................6 a. Cấu trúc dạng trực tiếp .....................................................................................6 b. Cấu trúc dạng ghép tầng:..................................................................................7 c. Cấu trúc dạng pha tuyến tính:...........................................................................7 1.3. Các đặc tính của bộ lọc FIR pha tuyến tính .......................................................8 a. Đáp ứng xung h(n): ..........................................................................................9 b. Đáp ứng tần số H(ej):....................................................................................11 1.4 Phương pháp thiết kế lấy mẫu tần số : ..............................................................14 a. Phương pháp thiết kế đơn giản .......................................................................15 b. Phương pháp thiết kế tối ưu............................................................................15 Phần 2. THIẾT KẾ LỌC FIR THÔNG CAO .............................................................16 2.1. Bài toán thiết kế ..............................................................................................16 2.2. Phương pháp thiết kế.......................................................................................16 2.3. Thuật toán và chương trình Matlab..................................................................17 a. Lưu đồ thuật toán: ..........................................................................................17 b) Chương trình..................................................................................................19 c) Kết quả ..........................................................................................................21 TÀI LIỆU THAM KHẢO..........................................................................................22 Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 4 Phần 1. CƠ SỞ LÝ THUYẾT 1.1. Dẫn nhập 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: Trước khi thiết kế một bộ lọc 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 cụ thể khác nhau.  Tìm các xấp xỉ: 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. Và đây là chủ đề chính của việc thiết kế lọc số.  Thực hiện bộ lọc: Kết quả của các bước trên cho 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 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ở. Có 2 nhóm chỉ tiêu: Các chỉ tiêu tuyệt đối (Absolute Specifications) và các chỉ tiêu tương đối (Relative Specifications - DB). 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): |H(ejw)| 1+1 Độ gợn dải thông 1 1-1 Độ gợn dải chắn Dải chuyển tiếp 2 0 0 wp ws  Rp As Decibels Hình 1.1 Các chỉ tiêu của bộ lọc FIR: các chỉ tiêu tuyệt đối và tương đối Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 5 Trong đó:  Band [0, wp] đượ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 [ws,  ] được gọi là dải chắn, và 2 là dung sai ở dải chắn.  Band [wp , ws] đượ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 Các chỉ tiêu tương đối gồm có:  Rp: Độ gợn sóng trong dải thông tính theo dB.  As : Suy hao trong dải chắn tính theo dB. Quan hệ giữa các chỉ tiêu này như sau: R p  20 log10 1 1  0 (0) 1  1 (1.1) A s  20 log10 2  0 (>>1) 1  1 (1.2) 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 (tolerance or ripples and band-edge frequencies). 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. 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 Đá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. Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 6  Đố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 thực hiện bộ lọc có pha tuyến tính. 1.2. Cấu trúc của bộ lọc FIR Một bộ lọc đáp ứng xung hữu hạn với hàm hệ thống có dạng: M 1 H( z)  b 0  b1 z 1    b M 1 z1M   b n z n (1.3) n 0 Như vậy đáp ứng xung h(n) là: bn 0  n  M  1 h( n)   else 0 (1.4) Và phương trình sai phân là: y(n )  b 0 x ( n)  b1 x (n  1)    b M1 x (n  M  1) (1.5) Đâ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: a. 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: (1.6) y(n )  b 0 x ( n )  b1 x (n  1)    b M 1 x (n  M  1) 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: x(n) b0 z-1 b1 z-1 b2 z-1 b3 z-1 b4 y(n) Hình 1.2 Cấu trúc lọc FIR dạng trực tiếp Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 7 b. 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. b  b  H( z)  b 0  b1 z 1    b M 1z1M  b 0 1  1 z 1    M 1 z1 M  b0  b0  K  b 0  (1  B k ,1z 1  B k , 2 z 2 ) (1.7) k 1 M  trong đó K    , Bk,1 và Bk,2 là các số thực đại diện cho các hệ số của các khâu bậc 2 2. Cấu trúc dạng ghép tầng được cho trong hình 1.3 với M = 7: x(n) b0 z-1 B 1,1 z-1 B 2,1 z-1 B 3,1 z-1 B 1,2 z-1 B 2,2 z-1 B 3,2 y(n) Hình 1.3 Cấu trúc lọc FIR dạng ghép tầng c. 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 theo tần số, nghĩa là: H(e j )           trong đó   0 hoặc  (1.8)  và  là một hằng số. 2 Đố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à: h (n )  h( M  1  n );   0, 0  n  M  1 (1.9) h (n )   h (M  1  n );     / 2, 0  n  M  1 (1.10) Xét phương trình sai phân được cho trong phương trình (1.5) với đáp ứng xung đối xứng trong phương trình (1.9), ta có: y(n )  b 0 x ( n )  b1 x ( n  1)    b1 x ( n  M  2)  b 0 x( n  M  1)  b 0 [ x (n )  x (n  M  1)]  b1 [ x (n  1)  x( n  M  2)]   Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 8 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 z-1 x(n) z-1 z-1 -1 z b0 z b1 b3 b2 z-1 x(n) M=7 z-1 -1 y(n) z-1 z-1 z b0 -1 z b1 M=6 -1 b2 y(n) 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ẻ 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. 1.3. 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à: M 1 M 1 n 0 n 0 H( z)   h ( n )z  n  z ( M 1)  h (n )z M 1n (1.11) 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à: M 1 H ( e j  )   h ( n )e  j  n ,       n 0 (1.12) Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 9 a. Đáp ứng xung h(n): Chúng ta có thể đưa ra ràng buộc pha tuyến tính: H(e j )  ,       (1.13) trong đó:  là một hằng số trễ pha. Ta đã biết rằng h(n) phải đối xứng, nghĩa là: h (n )  h ( M  1  n ), 0  n  M  1,   M 1 2 (1.14) Do đó h(n) là đối xứng theo , là chỉ số đối xứng. Có hai kiểu đối xứng:  M lẻ: Trong trường hợp này,   M 1 là một số nguyên. Đáp ứng xung 2 được mô tả trong hình 1.5 dưới đây: Hình 1.5 Đáp ứng xung đối xứng, M lẻ  M chẵn: Trong trường hợp này,   M 1 không phải là một số nguyên. Đáp 2 ứng xung được mô tả bằng hình 1.6 dưới đây: Hình 1.6 Đáp ứng xung đối xứng, M chẵn Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 10 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 H e j  thoả mãn điều kiện: H(e j )     với       (1.15) Đá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H(e j )   d (1.16) 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. Nhưng một số tần số có thể được làm trễ với tốc độ lớn hơn hoặc nhỏ hơn. Đối với kiểu pha tuyến tính này, có thể thấy rằng: h (n )  h (M  1  n ), 0  n  M  1 và   M 1  ,  2 2 (1.17) Đ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à   M 1 . Một lần nữa chúng ta lại có 2 kiểu, cho M lẻ và M chẵn. 2  M lẻ: Trong trường hợp này,   M 1 là một số nguyên. Đáp ứng xung 2 được mô tả bằng hình 1.7 dưới đây: Hình 1.7 Đáp ứng xung phản đối xứng, M lẻ Lưu ý rằng mẫu h() tại   M 1  M 1 phải bằng 0, nghĩa là, h    0. 2  2  Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số  M chẵn: Trong trường hợp này,   Trang 11 M 1 không phải là một số nguyên. Đáp 2 ứng xung được mô tả trong hình 1.8. Hình 1.8 Đáp ứng xung phản đối xứng, M chẵn b. Đáp ứng tần số H(ej): 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(ej) như sau:  M 1 H(e j )  H r (e j )e j() ;    ,   2 2 (1.18) trong đó Hr(ej) 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ẻ Trong trường hợp này   0 ,   M 1 là một biến nguyên, và h n   h M  1  n  , 2 0  n  M  1 , thì ta có thể chứng tỏ rằng: M 1  / 2 H(e j )    a n  cos n e  j M 1 / 2  n 0  trong đó: (1.19) Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số  M 1 a 0   h    2  Trang 12 với mẫu ở chính giữa  M 1  a n   2h   n  2  với 1  n  (1.20) M 3 2  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 , h n   h M  1  n  , 0  n  M  1 , nhưng   M 1 2 không phải là một biến nguyên, thì ta có thể chứng tỏ rằng: M / 2   1  H(e j )    bn cos n   e  jM 1 / 2 2     n 1 (1.21) trong đó: M  bn   2h   n   2  với n  1,2,..., M 2 (1.22) So sánh (1.21) và (1.18), ta có: M/2   1  H r ()   bn cos n   n 1 2    (1.23) M/2   1  Lưu ý: Tại    , ta có H r ()   bn cos n    0 mà không cần quan tâm n 1 2    đế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  M 1 2 là một biến nguyên,  M 1 h n   h M  1  n  , 0  n  M  1 , và h    0 thì ta có thể chứng tỏ:  2     M 1     2   j   M 1  / 2 H(e )    cn sin n  e  2   n 0  j (1.24) trong đó  M 1  cn   2h   n  2  với n  1,2,..., M 2 (1.25) Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 13 So sánh (1.24) và (1.18), ta có: M 1  / 2 H r    cn sin n (1.26) n 0 Lưu ý: Tại   0 và    , ta có H r   0 mà không cần quan tâm c(n) hoặc h(n). Hơn thế nữa, e j  2  j , điều đó có nghĩa là jH r  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    M 1 , h n   h M  1  n  , 0  n  M  1 , nhưng   2 2 không phải là một biến nguyên, thì ta có thể chứng tỏ rằng:   M / 2   1  j 2  H(e )    dn sin  n  e 2      n 1 j M 1     2   (1.27) trong đó: M  d n   2h   n   2  với n  1,2,..., M 2 (1.28) So sánh (1.27) và (1.18), ta có: M/2   1  H r ()   d n sin  n   n 1 2    Lưu ý: Tại    , H r (0)  0 và e j  2 (1.29)  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: Type FIR Type 1 FIR Type 2 LPF HPF BPF SBF         FIR Type 3 FIR Type 4  Hilbert Differentiator     Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 14 1.4 Phương pháp thiết kế lấy mẫu tần số : Theo phương pháp lấy mẫu tần số, đáp ứng tần số yêu cầu Hd(ejw) trước tiên được lấy mẫu đều ở M điểm cách đều nhau giữa 0 và 2pi : H(k)= Hd(ej2k/M) k=0,1,........M-1 Các mẫu tần số này tạo thành DFT M điểm mà biến đổi nghịch là bộ lọc FIR có bậc M-1: h( n )  1 M M 1  H ( k )e j 2  nk / M 0  n  M 1 k 0 Đáp ứng thực tế là nội suy của các mẫu được cho bởi: M 1 H ( z )   h( n) z  n  n 0 1  z M M M 1 1 z k 0 H (k ) e j 2  nk / M 1 Đáp ứng pha đối với kiểu 1 và 2 :   M  1  2k   M  1 k  0, ,    2  M ,     2  H ( k )      M  1  2 ( M  k ) , k   M  1  1, , M  1  2  M    2  Đáp ứng pha đối với kiểu 3 và 4     M  1  2k   M  1 k  0, ,    2    2  M ,       2  H (k )          M  1  2 ( M  k ) , k   M  1   1, , M  1  2    2   2  M  Hình 1.9 mô tả kỹ thuật lấy mẫu tần số : 1 ... 0 1 2 1 . 3. . 4 ... . 5 6 7 ... 0 1 2 .3 .4 . . 5 ... 6 7 8 Từ hình trên ta nhận thấy : 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. Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 15 Lỗi xấp xỉ ở tất cả các tần số khác 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. - Có hai cách tiếp cận thiết kế : a. Phương pháp thiết kế đơn giản : sử dụng ý tưởng cơ bản và không đưa ra một ràng buộc nào về lỗi xấp xỉ, nghĩa là chấp nhận lỗi sinh ra do thiết kế. Trong phương pháp này ta đặt H(k)= Hd(ej2k/M) k=0,1,........M-1 và sử dụng các công thức để thu được đáp ứng xung h(n). Phương pháp này ít được sử dụng trong thực tế. b. Phương pháp thiết kế tối ưu : cố gắng tối thiểu hóa lỗi trong dải chắn bằng cách thay đổi các giá trị của mẫu trong dải chuyển tiếp. Trong phương pháp này, chúng ta phải tăng M để tạo ra các mẫu tự do trong 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. Đây là một bài toán tối ưu hóa và được giải quyết bằng kỹ thuật quy hoạch tuyến tính. Trong thực tế độ rộng dải chuyển tiếp nói chung khá bé, chỉ chưa được một hoặc hai mẫu. Do đó chúng ta cần tối ưu hóa tốt nhất hai mẫu để thu được hệ số suy giảm dải chắn lớn nhất. Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 16 Phần 2. THIẾT KẾ BỘ LỌC FIR THÔNG CAO 2.1. Bài toán thiết kế Hãy thiết kế bộ lọc FIR thông cao pha tuyến tính theo phương pháp lấy mẫu tần số, với các chỉ tiêu bộ lọc cần thiết kế được cho như sau:  Cạnh dải chắn: ws  Cạnh dải thông: wp  Độ gợn sóng trong dải thông: Rp  Suy hao trong dải chắn: As Các đại lượng này có thể được mô tả trên hình 2.1 như sau: Mag(dB) 0 RP As ws wp F (Hz) Hình 2.1 Các chỉ tiêu của bộ lọc thông cao HPF (high pass filter) Điều kiện: ws< wp<1 Hoặc bài toán cho các chỉ tiêu 1 và 2 ta cũng có thể tính được As và Rp dựa vào quan hệ giữa chúng theo công thức (1.1) và (1.2). 2.2. Phương pháp thiết kế Bước 1. Chọn số mẫu để lấy mẫu tần số của bộ lọc lý tưởng: Trong phương pháp lấy mẫu tần số, việc chọn số mẫu để lấy mẫu bộ lọc lý tưởng là rất quan trọng. Ở đây, chọn số mẫu M để có 02 mẫu rơi vào dải chuyển tiếp. M = [round(1/(ws1-wp1))]*6+1; Bước 2. Thực hiện lấy M mẫu tần số bộ lọc lý tưởng Lúc này ta có M điểm lấy mẫu, trong đó đáp ứng tần số biên độ của các điểm trong dải thông là 1, trong dải chắn là 0. Việc xác định đáp ứng tần số biên độ của 02 mẫu Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 17 trong dải chuyển tiếp được thực hiện lặp để xác đinh được bộ lọc có Rp và As là tốt nhất. Bước 3. Tìm đáp ứng xung của bộ lọc thông cao cần thiết kế Đáp ứng xung của bộ lọc thông cao có thể tìm được bằng phép biển đổi DFT ngược các mẫu hd(n) : h( n )  1 M M 1  H ( k )e j 2  nk / M 0  n  M 1 k 0 2.3. Thuật toán và chương trình Matlab Trong phần này sẽ thực hiện chương trình thiết kế bộ lọc thông cao bằng phương pháp lấy mẫu tần số. Chương trình sẽ nhận các chỉ tiêu yêu cầu của bộ lọc cần thiết kế, sau đó thực hiện các bước thiết kế để tìm được đáp ứng xung h(n). Để khảo sát bộ lọc vừa thiết kế, chương trình cũng sẽ thực hiện tính toán và vẽ đáp ứng biên độ - tần số của bộ lọc theo dB, cũng như vẽ các đáp ứng xung lý tưởng hd(n), hàm cửa sổ w(n) và đáp ứng xung bộ lọc thực tế h(n). Chương trình được viết và chạy trên nền Matlab, với việc sử dụng một số hàm hỗ trợ có sẵn của Matlab cho xử lý tín hiệu số, và một số hàm viết thêm được tham khảo từ tài liệu [1] (các hàm dưới dạng các file .m). a. Lưu đồ thuật toán: Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 18 BEGIN Nhập các chỉ tiêu ws, wp As, Rp No Chỉ tiêu có hợp lệ không? Yes Tính số mẫu M Tìm gía trị của T1, T2 tốt nhất ( ứng với Rpd và Asd tốt nhất ) Rpd và Asd có thỏa mãn yêu cầu không? Yes Tính hd(n) Vẽ hd(n), h(n) và đáp ứng biên độ (dB) của bộ lọc thiết kế. END No Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số b) Chương trình function [ws wp As Rp]=loc_FIR_thongcao() fprintf('\n'); fprintf('Nhap vao cac thong so cua bo loc thong cao :'); fprintf('\n'); ws1=input('Nhap 0ws ,0ws ,021, As = '); while(As1<=21) As1=input('Nhap sai, nhap lai As>21, As = '); end Rp1=input('Nhap 0 < Rp < 1, Rp = '); while((Rp1<=0)|(Rp1>=1)) Rp1=input('Nhap sai, nhap lai 0 < Rp < 1, Rp = '); end ws=ws1; wp=wp1; As=As1; Rp=Rp1; M=round(1/(wp-ws))*6+1; alpha = (M-1)/2; l = 0:M-1; wl = (2*pi/M)*l; %Tim cac gia tri toi uu MaxAs=As; MinRp=Rp; N1=ceil(ws*alpha)+1; N2=ceil((2-wp)*alpha)+1; for T1 = 0.05:0.01:0.5 for T2 = 1:-0.01:0.5 Hrs = [zeros(1,N1),T1,T2,ones(1,N2-N1-2),T2,T1,zeros(1,M-N2-2)]; Hdr = [0,0,1,1]; wdl = [0,ws,wp,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_Type1(h); delta_w=1/500; Asd = -max( db(1:ws/delta_w+1)); Rpd = -min(db(wp/delta_w+1):501) if((Asd>=MaxAs)&(Rpd<=MinRp)) MaxAs=Asd; Trang 19 Thiết kế lọc FIR thông cao bằng phương pháp lấy mẫu tần số Trang 20 MinRp=Rpd; T1op=T1; T2op=T2; end end end Hrs = [zeros(1,N1),T1op,T2op,ones(1,N2-N1-2),T2op,T1op,zeros(1,M-N2-2)]; Hdr = [0,0,1,1]; wdl = [0,ws,wp,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_Type1(h); subplot(1,1,1); subplot(2,2,1);plot(wl(1:alpha+1)/pi,Hrs(1:alpha+1),'o',wdl,Hdr); axis([0,1,-0.1,1.1]); title('Frequency Samples at M=%2.4f',M); xlabel('Frequency in pi units'); ylabel('Hr(k)') set(gca,'XTickMode','manual','XTick',[0;ws;wp;1]) set(gca,'XTickLabelMode','manual','XTickLabels',[0;ws;wp; 1]) set(gca,'YTickMode','manual','YTick',[0,T1op,T2op,1]); grid subplot(2,2,2); stem(l,h); axis([-1,M,-0.4,0.4]) title('Impulse Response'); xlabel('n');ylabel('h(n)');text(M+1,-0.4,'n') subplot(2,2,3); plot(ww/pi,Hr,wl(1:alpha+1)/pi,Hrs(1:alpha+1),'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;ws;wp;1]) set(gca,'XTickLabelMode','manual','XTickLabels',[ 0;ws;wp;1]) set(gca,'YTickMode','manual','YTick',[T1op,T2op]); grid subplot(2,2,4);plot(w/pi,db); axis([0,1,-100,10]); grid title('Magnitude Response');xlabel('Frequency in pi units'); ylabel('Decibels'); set(gca,'XTickMode','manual','XTick',[0;ws;wp;1]) set(gca,'XTickLabelMode','manual','XTickLabels',[ 0;ws;wp; 1]) set(gca,'YTickMode','Manual','YTick',[-As;0]); set(gca,'YTickLabelMode','manual','YTickLabels',[As; 0])
- Xem thêm -