Luận văn Đề tài: Thiết kế bộ lọc thông thấp theo cấu trúc IIR sử dụng bộ lọc ELLIPTIC và phương pháp biến đổi bất biến xung... Bài toỏn thiết kế : Thiết kế bộ lọc thụng thấp theo cấu trỳ
Trang 1Luận văn
Đề tài: Thiết kế bộ lọc thông thấp theo cấu trúc IIR sử dụng bộ lọc ELLIPTIC và phương pháp biến đổi bất biến xung
Trang 2Bài toỏn thiết kế :
Thiết kế bộ lọc thụng thấp theo cấu trỳc IIR sử dụng bộ lọc ELLIPTIC và phương phỏp biến đổi bất biến xung
2 Phương phỏp thiết kế :
Cỏc bước thiết kế
Bước 1: Chỉ định cỏc chỉ tiờu của bộ lọc số :
- Tần số dải thụng wp
- tần số dải chắn ws
- Độ gợn súng dải thụng Rp
- Độ suy hao dải chắn As
và tham số T
Bước 2: Chiếu cỏc tần số cắt wp và ws từ miền tần số số lờn miền tần số tương tự pvà s
Bước 3: Thiết kế bộ lọc thụng thấp tương tự cú hàm truyền Ha(s) thỏa món
cỏc chỉ tiờu tương tự trờn cỏc điểm Ω p , Ω s.
Bước 4: Biến đổi bộ lọc thụng thấp tương tự Ha(s) thành bộ lọc thụng thấp
số HLP(Z) theo phộp biến đổi bất biến xung
Bước 5: Chuyển đổi tần số để đạt được bộ lọc số mong muốn
H(z) = HLP(Z)Z1G(z1)
2.1 Giới thiệu chung :
Bộ lọc IIR cú đỏp ứng xung vụ hạn , vỡ vậy chỳng cú thể khớp với cỏc bộ lọc analog , mà núi chung đều cú đỏp ứng xung dài vụ hạn Kỹ thuật cơ bản để thiết kế lọc IIR là biến đổi cỏc bộ lọc analog điển hỡnh (well-known) thành cỏc bộ lọc digital sử dụng cỏc ỏnh xạ giỏ trị-phức Sự thuận tiện của kỹ thuật này là ở chỗ cú sẵn cỏc bảng thiết kế lọc analog (AFD) và cỏc ỏnh xạ được mở rộng trong thư viện Cỏc kỹ thuật cơ bản được gọi là cỏc phộp biến đổi lọc A/D
Tuy nhiờn, cỏc bảng AFD chỉ dựng cho cỏc bộ lọc thụng thấp Trong khi ta cần thiết kế cỏc bộ lọc chọn tần khỏc (thụng cao, thụng dải, chắn dải, v.v…)
Cần ỏp dụng cỏc phộp biến đổi băng tần đối với cỏc bộ lọc thụng thấp Cỏc phộp biến đổi này cũng được gọi là ỏnh xạ giỏ trị-phức, và chỳng cũng cú sẵn trong thư viện
Để thiết kế mạch lọc số mong muốn từ các mạch lọc tương tự , có hai kỹ thuật
được áp dụng:
1 Biến đổi mạch lọc tương tự thông thấp đã được chuẩn hóa thành một mạch lọc tương tự khác chưa chuẩn hóa rồi sau đó số hóa mạch lọc tương tự này để trở thành một mạch lọc số mong muốn
2 Anh xạ mạch lọc thông thấp tương tự từ mặt phẳng -s sang mặt phẳng -z và sau đó áp phép biến đổi dải tần để tạo thành mạch lọc số mong muốn; Trong đó phép biến đổi là công cụ chủ chốt Cả hai kỹ thuật trên được mô tả trên sơ đồ sau đây:
Trang 32.2 Thiết kế bộ lọc IIR : 2.2.1 Một số lưu lý đối với bộ lọc tương tự:
Đáp ứng biên độ của mạch lọc thông thấp tương tự có thể được biểu thị dưới dạng bình phương hoặc theo thang dB như trên hình 2.1
Đối với dải thông: H aj P
1
Đối với dải chặn: Q
A j
Trong đó là thông số mấp mô của dải thông, P là tần số của dải thông đo bằng rad/sec, A là độ suy giảm của dải chặn và S là tần số cắt của dải chặn
Các đặc tính này được biểu diễn trên hình 2.1 Như vậy ta sẽ tìm được:
1
1
2 2
Và a khi S
A j
Các thông số và A liên hệ với các thông số RP và AS được tính nằng đơn vị dB
Các thông số này quan hệ với nhau qua công thức:
1 10
1
1 log
10 10 2 10
P
2
log
A
Ngoài ra độ gợn sóng 1 và 2 tỉ lệ trị tuyệt đối Liên hệ với và A bằng các hệ thức:
1
1 2
1
1
1
2 1
1 1
1
(2.7)
Và
2 1 1
Thiết kế mạch lọc thông thấp tương tự
Áp dụng biến đổi dải tần S S
Áp dụng biến đổi mạch lọc s Z Mạch lọc số IIR
mong muốn
Thiết kế mạch lọc thông thấp tương
tự
Áp dụng biến đổi mạch lọc
S Z
Áp dụng biến đổi dải tần
Z Z Mạch lọc số
IIR mong muốn
Kỹ thuật 1:
Kỹ thuật 2:
Trang 4Đáp ứng tần số Ha(j) của mạch lọc tương tự liên hệ với hàm truyền Ha(s) của nó bằng hệ thức:
Ha(j) = Ha(s) s j Nên H aj2 H a s H assj (2.9) Hay H a s H as H aj 2 sj (2.10)
Do vậy, các điểm cực và các điểm không của hàm bình phương biên độ phân bố
đối xứng ảnh gương đối với trục ảo j Để mạch lọc tương tự ổn định và nhân quả thì
các điểm cực của hàm truyền của nó bắt buộc phải nằm ở nửa trái của mặt phẳng -s
Các điểm không của Ha(s) có thể nằm đâu đó trong mặt phẳng -s, do đó chúng không
được xác định một cách duy nhất trừ khi tất cả đều nằm trên trục j Ta sẽ chọn các
điểm không của Ha(s)Ha(-s) nằm bên trong hoặc ngay trên trục j như các điểm không như vậy được gọi là mạch lọc pha cực tiểu
2.2.2 Các bộ lọc thông thấp Elliptic:
Cỏc bộ lọc này thường cõn bằng gợn súng ở dải thụng cũng như dải chắn Chỳng
cú cỏc đặc trưng đỏp ứng biờn độ tương tự như cỏc bộ lọc FIR cõn bằng gợn song Vỡ vậy cỏc bộ lọc elliptic là cỏc bộ lọc tối ưu trong đú đạt được bậc tối thiểu N đối với cỏc chỉ tiờu đó cho Cỏc bộ lọc này, vỡ nhiều lý do đó xột trước đõy, là rất khú để phõn tớch
và thiết kế Khụng thể thiết kế chỳng bằng cỏc cụng cụ đơn giản, và thường phải dựng cỏc chương trỡnh hoặc bảng để thiết kế chỳng
Đỏp ứng xung bỡnh phương độ lớn của bộ lọc Elliptic được cho bởi:
1
2 1
1
2
1
A
2
j
H a
Hỡnh 2.1 : Cỏc đặc tớnh của bộ lọc Analog thụng thấp
(2.22)
) ( 1
1 )
(
2 2 2
c N
a
U
j H
Trong đú: N: bậc; epsilon: gợn súng dải thụng; U N() là bậc của hàm Jacobian elliptic thứ-N
Trang 51 2 1
1
2
1
) ( j
H a
c
2
1
A
) ( j
H a
c
2 1
1
N chẳn
Các kiểu đáp ứng đối với N chẵn và lẻ ở hình dưới đây:
Tính toán cho bộ lọc bậc N:
Thực hiện trong MATLAB:
Matlab cung cấp một hàm được gọi là [z,p,k] = ellipap(N,Rp, As) để thiết kế bộ lọc chuẩn hoá tương tự Elliptic có bậc N và gợn sóng dải thông Rp và Suy giảm ở dải chắn
As Cho kết quả điểm zeros trong mảng z, điểm cực trong mảng p và giá trị độ lợi k
Chúng ta cần bộ lọc Eliiptic chưa chuẩn hoá với c tuỳ ý Điều này đạt được bởi độ lớn mảng p và z của bộ lọc đã được chuẩn hoá bởi c Hàm dưới đây, được gọi là U_elipap(N,Rp, As, Omegac) Chúng ta thiết kế một bộ lọc Elliptic chưa chuẩn hoá nó trả lại Ha(s) theo dạng trực tiếp
2.2.3 Các phép biến đổi bộ lọc tương tự thành bộ lọc số:
Sau khi khảo sát các tiếp cận khác nhau để thiết kế các bộ lọc tương tự , chúng ta sẵn sàng biến đổi chúng thành bộ lọc số Các phép biến đổi này đạt được bằng cách bảo toàn các aspects khác nhau của các bộ lọc tương tự và lọc số
Cách phương pháp biến đổi:
Biến đổi bất biến xung:
Bảo toàn hình dang của đáp ứng xung từ lọc tương tự thành lọc số
Kỹ thuật xấp xỉ sai phân hữu hạn:
Chuyển đổi biểu diễn một phương trình vi phân thành một phương trình sai phân tương ứng
Bất biến bước nhảy:
Bảo toàn hình dạng của đáp ứng bước nhảy
Biến đổi song tuyến tính:
Bảo toàn biểu diễn hàm hệ thống từ miền tương tự sang miền số
Do yêu cầu của bài toán nên trong tiểu luận này chỉ đưa ra phương pháp biến đổi bất biến xung
2
0 1 2 sin 2
) (
x
d x
K
1
2 1
A
s
c
k
) 1
( ) (
) 1
( ) (
2 1
2 1
k K
k K
k K
k K N
Trang 60 ) / ( ) (j H j T
Biến đổi bất biến xung:
Trong phương pháp thiết kế này Đáp ứng xung của bộ lọc số trông tương tự như đáp ứng xung của bộ lọc chọn tần analog Sau đó Lấy mẫu ha(t) ở các chu kỳ lấy mẫu T ta thu được h(n): h(n)=ha(nT)
Thông số T được chọn sao cho hình dạng của ha(t) thu được bởi lấy mẫu Trong quá trình lấy mẫu tần số tương tự và tần số số có quan hệ bởi:
T
hoặc ej ejT
Do z=ejω trên đường tròn đơn vị và s=j Ω trên trục ảo, ta có phép biến đổi sau đây từ mặt phẳng s sang mặt phẳng z:
Hàm hệ thống H(z) và Ha(s) có quan hệ với nhau thông qua biểu thức phổ miền tần số (1.6)
Các tính chất:
Sử dụng:
1 σ = Re(s): Lưu ý rằng:
σ < 0, ánh xạ vào |z|<1 (bên trong đường tròn đơn vị)
σ = 0, ánh xạ vào |z|=1 (trên đường tròn đơn vị )
σ >0, ánh xạ vào |Z|>1 (bên ngoài đường tròn đơn vị)
2 Ánh xạ nhiều s lên một z : Ánh xạ many-to-one
3 Mỗi dải bán-vô hạn bên trái (nằm bên mặt phẳng trái) ánh xạ vào bên trong đường tròn đơn vị
Tính nhân quả và ổn định là không thay đổi;
Aliasing xuât hiện nếu bộ lọc không có băng tần-hữu hạn
1 ( / ), )
T e
Ưu điểm của phương pháp này:
Hình 2.8 Ánh xạ mặt phẳng phức trong biên đổi bất biến xung
Trang 7Những ưu điểm của bất biến xung đó là thiết kế được ổn định, tần số và w có quan hệ tuyến tính với nhau Nhưng nhược điểm đó là một vài nơi bị chồng phổ trong đáp ứng tần số tương tự và trong một số trường hợp hiện tượng chồng phổ này là không chấp nhận được Do đó phương pháp thiết kế này chỉ được dùng khi bộ lọc tương tự có băng thông giới hạn đối với thông thấp và thông dải hoặc khi không có sự
dao động trong dải chắn
Thủ tục thiết kế:
Cho các đặc tính kỹ thuật bộ lọc thông thấp số ωp,ωs,Rp và As, chúng ta muốn xác định H(z) bằng cách thiết kế trước tiên một bộ lọc analog tương đương và sau đó ánh
xạ chúng thành bộ lọc số mong muốn Thủ tục thiết kế:
Ωp=ωp/T, Ωs=ωs/T
2 Thiết kế một bộ lọc analog Ha(s) sử dụng các đặc tính của bộ lọc Elliptic trong phần trước
3 Sử dụng phép khai triển riêng phần khai triển Ha(s) thành
4 Biến đổi các điểm cực analog {pk} thành các điểm cực số {epkT} để thu được bộ lọc số
3 Thuật toán và chương trình thiết kế :
Yêu cầu cụ thể sau:
Thiết kế bộ lọc thông thấp IIR với các chỉ tiêu sau:
Tần số cắt của dải thông (Passband Edge Frequency)ωp -Tần số cắt của dải chắn (Stopband Edge Frequency) ωs -Độ gợn sóng của dải thông (Passband Ripple) Rp -Độ suy giảm của dải chắn (Stopband Attenuation) As
3.1 Sơ đồ thuật toán:
N k
k
k a
p s
R s
H ( ) 1
Trang 8Nhập các chỉ tiêu cần thiết kế
W p , w s , R p , A s và T
Kiểm tra chỉ tiêu có hợp lệ không ?
No
Tính Ω p , Ω s
Xác định hàm truyền của
bộ lọc tương tự H a (s)
Vẽ đáp ứng biên độ - pha tần số và trễ nhóm của
bộ lọc cần thiết kế
Yes
BEGIN
End
Xác định hàm truyền của bộ lọc số H LP (z)
Trang 93.2 Các hàm cơ bản:
function [b,a] = u_elipap(N,Rp,As,Omegac);
%unnormalized Eliptic analog Lowpass filter prototype
% -
%[b,a] = u_chblap(N,Rp,Omegac);
% b = numerator polynomial coefficients
% a = denominator polynomial coefficients
% N = Order of the Elliptic Filter
% Rp = Passband ripple in dB,Rp > 0
%Omegac = Cutoff frequency in radians/sec [z,p,k] = ellipap(N,Rp,As);
a = real(poly(p));
aNn = a(N+1);
p = p*Omegac;
a = real(poly(p));
aNu = a(N+1);
b = real(poly(z));
M = length(b);
bNn = b(M);
z = z*Omegac;
b = real(poly(z));
bNu = b(M);
k=k*(aNu*bNn)/(aNn*bNu);
b0=k;
b=k*b;
function [b,a] = afd_elip(Wp,Ws,Rp,As);
% Analog Lowpass Filter Design :
% b = Numetor coefficients of Ha(s)
% a = denominator oefficients of Ha(s)
% Wp = Passband edge frequency in rad/sec;Wp > 0
% Ws = stpband edge frequency in rad/sec;Ws>Wp > 0
% Rp = Passband ripple in +dB;(Rp > 0 )
% As = stpband attenuation in +dB;(As>0)
if Wp <=0 error('passband adge must be large than 0') end
if Ws <= Wp error('passband adge must be large than passband edge') end
if (Rp <= 0) (As < 0) error('Pb ripple and/or Sb attenuation must be large than 0') end
ep = sqrt (10^(Rp/10)-1);
A = 10^(As/20);
OmegaC = Wp;
k= Wp/Ws;
Trang 10k1 = ep/sqrt(A*A-1);
capk = ellipke([k.^2 1-k.^2]);
capk1 = ellipke([(k1.^2) 1-(k1.^2)]);
N = ceil(capk(1)*capk1(2)/(capk(2)*capk1(1)));
fprintf('\n*** Elliptic Filter order = %2.Of \n',N) [b,a]=u_elipap(N,Rp,As,OmegaC) ;
function [a,b]=imp_invr(c,d,T);
%Bien doi tuong tu sang so [R,p,k]=residue(c,d);
P=exp(p*T);
[a,b]=residue(R,p,k);
b=real(b');a=real(a');
function [C,B,A] = dir2par(b,a);
M = length(b);N = length(a);
[r1,p1,C] = residuez(b,a);
p = cplxpair(p1,100*eps);
I = cplxcomp(p1,p);
r = r1(I);
K = floor(N/2); B = zeros(K,2); A = zeros(K,3);
if K*2 ==N; %N even, order of A(z)odd, one factor is first order for i=1:2:N-2
Brow = r(i:1:i+1,:);
Arow = p(i:1:i+1,:);
[Brow,Arow] = residuez(Brow,Arow,[]);
B(fix((i+1)/2),:) = real(Brow);
A(fix((i+1)/2),:) = real(Arow);
end [Brow,Arow] = residuez(r(N-1),p(N-1),[]);
B(K,:) = [real(Brow) 0]; A(K,:) = [real(Arow) 0];
else for i=1:2:N-1 Brow = r(i:1:i+1,:);
Arow = p(i:1:i+1,:);
[Brow,Arow] = residuez(Brow,Arow,[]);
B(fix((i+1)/2),:) = real(Brow);
A(fix((i+1)/2),:) = real(Arow);
end end
3.3 Chương trình chính:
thiết kế bộ lọc
% IIR LOWPASS FILTER DESIGN USING IMPULSE INVARIANCE TRANSFORMATION
function varargout = tieuluan(varargin)
Trang 11% TIEULUAN M-file for tieuluan.fig
% TIEULUAN, by itself, creates a new TIEULUAN or raises the existing
% singleton*
%
% H = TIEULUAN returns the handle to a new TIEULUAN or the handle to
% the existing singleton*
%
% TIEULUAN('CALLBACK',hObject,eventData,handles, ) calls the local
% function named CALLBACK in TIEULUAN.M with the given input arguments
%
% TIEULUAN('Property','Value', ) creates a new TIEULUAN or raises the
% existing singleton* Starting from the left, property value pairs are
% applied to the GUI before tieuluan_OpeningFunction gets called An
% unrecognized property name or invalid value makes property application
% stop All inputs are passed to tieuluan_OpeningFcn via varargin
%
% *See GUI Options on GUIDE's Tools menu Choose "GUI allows only one
% instance to run (singleton)"
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help tieuluan
% Last Modified by GUIDE v2.5 10-Jun-2009 21:03:58
% Begin initialization code - DO NOT EDIT gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename,
'gui_Singleton', gui_Singleton,
'gui_OpeningFcn', @tieuluan_OpeningFcn,
'gui_OutputFcn', @tieuluan_OutputFcn,
'gui_LayoutFcn', [] ,
'gui_Callback', []);
if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1});
end
if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% - Executes just before tieuluan is made visible
function tieuluan_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to tieuluan (see VARARGIN)
Trang 12% Choose default command line output for tieuluan handles.output = hObject;
% Update handles structure guidata(hObject, handles);
% UIWAIT makes tieuluan wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% - Outputs from this function are returned to the command line
function varargout = tieuluan_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure varargout{1} = handles.output;
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
% - Executes during object creation, after setting all properties
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows
% See ISPC and COMPUTER
if ispc set(hObject,'BackgroundColor','white');
else set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end