119
BÀI THC TP CHUYÊN Đ
KHO SÁT CÁC ĐC NH ĐÁP LNG B C THÔNG THP
1. Mc ích đ
Mc đích ca bài thí nghim này là s d lng mt b c tích cc cng đưc thiết
kế như là b lc thông thp 5 cc t l i c, đ o thành b c có th thay đ đư đ có đc tính
Butterwworth, hoc Chebyshev hay là Bessel .. Nó có tr kháng li vào khá ln
nhiu vào li vào và li ra ( Chú ý : Hãy gi đin áp li vào dưi 5 Volt đnh-đ đnh
tránh quá ti ) , Bên cnh đó sinh viên dùng chương trình MATLAB Signal Processing
Toolbox b l dđ thiết kế c này và s ng bn mch Startup kit TMS320C50 DSP (B
s lý s tín hiu) vi phn mm hp ng DSK áp có các đ t l c o ra b đ đc tính trên.
S m ơ đ khi ca thí nghi đưc mô t như sau :
a) Sơ dđ thí nghim s ng b lc tích cc cng :
b) Sơ đ thí nghim s dng TMS320C50 DSP
120
2. Dng c th m c nghi
i) Máy phát chc năng
ii) B lc tích cc vi ngun +/- 15
Volt
iii) Dao đng ký
iv) Volt kế RMS
v) Máy đo phase
vi) Máy tính vi phn mm DSK , MatLab
vii) Startup kit TMS320C50 DSP
viii) phát chc năng ( Function Generator);
A. PHN THUYT
1. Các đc tính đ áp ng b l c thông thp
Trong phn này sinh viên phi phân tích , đánh giá các đc tính tn s và đáp ng
truyn dn ca đưng truyn có đc trưng lc Butterwworth, hoc Chebyshev hay là
Bessel theo các ch dn dưi đây :
o Vi đáp ng tn s , phi chú ý đến giá tr áng k suy hao đ ti các tn s nào đó
. Các tn s n s này phi đưc đo và v theo t đưc chun hoá. Vi mi mt
b lc , các t n s đưc chu n hoá đưc s d ng đ v trên đ th sao cho chúng
có th bi l c tu din dáng điu chung nht ca b đ đó xem xét đưc đáp ng
mi khi có mt s i t thay đ n s.
o T đáp ng tn s , các tr i các t pha t n s đưc la chn phi c đư đo và các
đ đc tính đ đ khuyếch i, chm phase , tr phase và tr nhóm đươc tính toán t
các giá tr o c. đ đư
o Vi áp áp đ ng truyn dn , đ ng li ra ca mi b t b lc khi m ưc li vào đưc
s dng
a) Gi i thiu :
Mi m t b lc bc-5 có mt hàm truyn đưc chun hoá dưi dng :
e
H(s) =
-------------------------------------------------------------------
S
5
+ a S
4
+ b S
3
+ c S
2
+ d S
1
+ e
Trong đó a, b, c, d, e là các h s c l a b c
121
Butterworth có hàm truyn (TF) đưc chun hoá ti ω
c
= 1 rad/s
Chebyshev có 1 dB ripple ,
ω
c
= cosh [ (1/n) cosh
-1
(1/e) ]
Do b lc bc-5 có n=5 và e=0.50885 vì thế ω
c
1.0338 và sao cho
ω ω
r
không
dưi -3dB thì
r
= (20000/1.0338 ) = 19346 rad/s cà do vy TF
đư đc t l i b ng s/ω
r
= 20000/19346.
Bessel đưc chun hoá ti thi gian tr T
0
= 1 sec đ đ m bo cho ω
c
=
20000rad/s thì đ tr phi gim xung
t
o
= 1.21 x 10
-4
sec
TF đưc chun hoá bng cách đt li s = st
o
, trong đó t
0
là đ tr t k thiế ế
phase tĐ tr n s zero đưc xác đnh bng cách đt s hay
ω
ω
ω
ωω
bng
zero và vì vy ch còn h s b c-1 trong H(s) , xác đnh đ tr phase kết qu c u a bi
thc ( bng cách t s = jđ ω ) vi T
p
= -f(ω)/ω
Cho b l n c có th chuy đi thành các loi b lc Butterwworth, hoc
Chebyshev hay là Bessel cùng vi các thiết b thí nghim nêu trên , sinh viên hãy
tiến hành các bưc sau đây :
b) Đ tr phase tn s zero
Các mu s đưc chun hoá theo 3 hàm truy n là
9 Butterworth S
5
+ 3.236 S + 5.236 S + 5.236 S + 3.236 S
4 3 2 1
+ 1
9 Chebyshev S
5
+ 0.908 S
4
+ 1.601 S + 0.889 S + 0.509 S
3 2 1
+ 0.104
9 Bessel S
5
+ 6.181 S
4
+ 17.827 S
3
+ 29.381 S
2
+ 27.238 S
1
+ 11.222
s d lên tng tn s i ω
0
= 20 000 rad/s ( f
0
= 3.18 KHz ) sao cho đáp n ng t
s mong đi phù hp vi TF v i S đưc thay thế b ng jω/20000. Hãy s
dng các thông tin này đ tính toán đ tr phase tn s zero β/ω a đc tính c
mi m t b lc ( bng cách đt ω 0 vì th còn lế ch i đi l t ) ưng bc nh
c) Các tn s tim cn
122
Các tn s c la các b c bc 5 này đưc tính toán theo hàm truyn nêu
trong mc (a) trên đây
d) Quan sát đáp ng t n s
Biên đ : Vi m i m t b lc, hãy so sánh đin áp li ra tính theo đơn v
dB và ghi li các tn s mà ti v biên đó có s suy hao đáng k đ li ra
, tc là vi Butterworth và Bessel, các tn s cho -0.5dB, -1dB , -3dB ,
-10dB , -20dB , -30dB và -40dB , còn vi Chebyshev ti các tn s
và giá tr suy hao ng vi giá tr t i đa trong băng di và giá tr suy
hao ng v u t n mép bi giá tr ti thi i g ăng di , các tn s cho cho -
0.5dB, -1dB , -3dB , -10dB , -20dB , -30dB và -40dB
Hãy v đáp ng theo đơn v dB đi li vi thang logarithm t n s
đưc chun hoá
Hãy dùng máy đo phase chính xác và ghi li s chm phase ca b l c
ti m i m t trng thái c đa nó ti các tn s sau ây
40, 120, 400, 480, 700, 780, 1000, 1080, 1300, 1380, 1600, 1680,
1900, 1980, 2100, 2180, 2300, 2380, 2700, 2780, 3000, 3080, 4000,
4080, 5000, 5080Hz
Đ tr phase
β
β
β
ββ
/
ω
ω
ω
ωω
có th đưc xem xét bên cnh các tn s này và giá tr
tương i ng v đ tr / nhóm (β ω) có th đưc tính theo các tn s
80, 440, 740, 1040, 1340, 1640, 1940, 2140, 2340, 2740, 3040,
4040, 5040Hz
Hãy v s ch m phase , đ tr tr phase và đ nhóm ng vi m i m t trng
thái b lc khi dùng các thang tn s đưc chun hoá tuyến tính ri tính các
đ tr tn s zero
e) Quan sát đáp ng truyn dn
Cho li vào b l dc mt xung đin thế ng sóng hình vuông , hãy quan sát
thi gian cn thiết đ cho đin thế li ra đt giá tr n đnh sau mi mt
bưc ca sóng hình vuông
Vi m i m t b lc, hãy quan sát đ tr th i gian gia tín hiu li vào và
li ra khi l i cùng ci ra đt đưc 50% giá tr cu a nó. Chúng có th đưc
coi như lđ tr hiu d ng c a b c theo đáp ng li vào
f) Mô phng
Cho mch lc vi sơ đ theo hình v dưi đây :
123
Hãy s dng phn mm PSPICE ( hay là ELECTR)NIC WORKBENCH) đ
đưa ra đ áp ng tn s c l c a b
S dng các phn mm MatLab hay Mathematica đê tính đáp ng biên đ
và đáp ng phase ca b loc
Thay thế 1 vài giá tr ca mt vài ph n t trong b lc trên đây ( theo yêu cu
ca giáo viên ) r t qui mô phng và thu nhn li kế
2. Thiết kế b l c IIR dùng mu Analog.
Mt lp quan trng thiế ế t k b l c s IIR là da trên biến l c n đi b c tương t đi
Butterworth, Chebyshev I, Chebyshev II, và Cauter sang dng s t ng ng ươ ng. Phươ
pháp c lđin thiết kế các b c s IIR đưc thc hin vì nhng lý do sau đây:
a) i Ưu đ m ca thiết kế b l c IIR tương t. Do đó, rt thun tin s d ng đ
th t c thiết kế đã có đ phát trin b ng t lc tươ
b) Có rt nhiu phương pháp thiết kế b l h c c tương t u ích có công th
thết k t kế d ng đơn gin, phương pháp thiế ế m dch lc s a trên công thc
thiết kế tương t chun hơn là đơn gi ng c bin thc hin nó, s d ến i đ
tương t hay bt k dng nào.
124
c) Ph ương pháp xp x tiêu chun c ng ta b c t l ươ không cho ta công thc
thiết kế đơn gin khi các phương pháp này đư đc áp dng trc tiếp thiết
kế b lc FIR.
Bn hàm trong MATLAB
TM
SIGNAL PROCESSING TOOLBOX đ thiết kế b lc IIR
thông th p nói trên là :
[b,a]=butter(N,Wn)
[b,a]=cheby1(N,Rp,Wn)
[b,a]=cheby2(N,Rs,Wn)
[b,a]=ellip(N,Rp,Rs,Wn)
4 phương pháp thiết kế b l c c thông thp b n sc N có t t Wn,Wn nm trong
khong 0 và 1, vi 1.0 là mt na tn s n s ly mu( t Nyquist). Vi cheby1 và ellip,
biến Rp là decibel ca gn (ripple) trong di thông, vi cheby2 và ellip di chn c đư
đt là Rs decibel tr xung t giá tr đnh ca di thông.
Các hàm sau cho ta h s b l c có chiu dài N+1 hàng vector b và a. c h s b
lc là lũy tha ca z:
n
n
znazaa
znbzbb
zA
zB
zH
+++
+++
==
)1(...)2()1(
)1(...)2()1(
)(
)(
)(
1
1
(12)
Các giá tr nh hơn ca gn Rp thông di và các giá tr l i n hơn Rs chn d đu
dn đến đ quá đ ln hơn ( n hđc trưng ct ng ơn).
N lếu Wm là vector 2 thành phn, Wn=[w1,w2], thiết kế 4 hàm b c thông di bc
2N vi di w1<
ω
<w2.
B lc thông cao đưc thiết kế bng cách thêm chui high vào sau câu lnh:
[b,a]=ellip(N,Rp,Rs,Wn,’high’)
B lc chn di đưc thiế ế t k b ng cách thêm chui stop vào cui câu lnh:
[b,a]=butter(N,Rp,Rs,Wn,’stop’)
là b i b lc chn d c 2N nếu Wn=[w1,w2]. Di chn là w1<
ω
<w2.
125
Bc b l i c nh nht yêu cu ph đt đưc các tính cht thc hin t, c đc bi đư
đnh nghĩa trong hình 8.1, có th đưc tính toán s d lng mt hàm chn bc b c:
[N,Wn]=buttord(Wp,Ws,Rp,Rs)
[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs)
[N,Wn]=cheb2ord(Wp,Ws,Rp,Rs)
[N,Wn]=ellipord(Wp,Ws,Rp,Rs)
Các hàm này tr l di N và Wn s ng trong butter, cheby1,cheby2, hay ellip. Các
hàm chn bc này cũng b lđưc dùng đ thiết kế c chn di, thông di và thông cao.
Vi b lc thông cao, Wp>Ws, Vi b l i, c thông di và chn d đt Wp và Ws là vector
2 thành phàn xác đnh tn s 2 l c c la b c, l đu trưc l th 2. Wn, vi b l c
thông di, lđưc tr i là vector hàng có 2 thành phn đ đưa vào hàm thiế ết k b lc.
Ex1: Chn bc b lc Butterworth, Rp =3dB, Kết qu là li ra Wn =Wp. D liu vi tn
15 dB vi 150 Hz:
Wp=100/500;
Ws=150/500;
Rp=3;
Rs=15;
[N,Wn]=buttord(Wp,Ws,Rp,Rs)
[b,a]=butter(n,Wn);
126
Ex2: Thiết kế b l c thông di có d i thông t 100 Hz đến 200 Hz, có đ suy gim
nh h d cơn 3 dB i thông và dưi 30 dB 50 Hz 2 phía, gi s t n s l y
mu là 1000 Hz:
Wp=[100 200]/500;
Ws=[50 250]/500;
Rp=3;
Rs=30;
[N,Wn]=buttord(Wp,Ws,Rp,Rs)
[b,a]=butter(n,Wn);
Ex3: Chn bc b l tc Chebyshev I, th c cũng ging như trên D li u vi t n s l y
mu 1000 Hz, thiết kế b l c thông thp có suy gim nh h m ơn 3dB 100 Hz và gi
15 dB vi 150 Hz:
Wp=100/500;
Ws=150/500;
Rp=3;
Rs=15;
[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs)
[b,a]=cheby1(n,RpWn);
Ex4: Thiết kế b l c thông di Chebyshev loi I có di thông t 100 Hz đến 200 Hz,
suy gim nh h d c s t n ơn 3 dB i thông và dưi 30 dB 50 Hz 2 phía, gi
s ly mu là 1000 Hz:
Wp=[100 200]/500;
Ws=[50 250]/500;
Rp=3;
Rs=30;
[N,Wn]=cheb1ord(Wp,Ws,Rp,Rs)
[b,a]=cheby1(n,Rp,Wn);
Ex5: Chn bc b lc Chebyshev loi II, th tc cũng ging như trên D liu vi tn
s ly mu 1000 Hz, thiết kế b l c thông thp có suy gim nh hơn 3dB 100 Hz và
gim 15 dB vi 150 Hz:
Wp=100/500;
Ws=150/500;
Rp=3;
Rs=15;
[N,Wn]=cheb2ord(Wp,Ws,Rp,Rs)
[b,a]=cheby2(n,Rs,Wn);
127
Ex6: Thiết kế b l c thông di Chebyshev loi I có di thông t 100 Hz đến 200 Hz,
suy gim nh h d c s t n ơn 3 dB i thông và dưi 30 dB 50 Hz 2 phía, gi
s ly mu là 1000 Hz:
Wp=[100 200]/500;
Ws=[50 250]/500;
Rp=3;
Rs=30;
[N,Wn]=cheb2ord(Wp,Ws,Rp,Rs)
[b,a]=cheby2(n,Rs,Wn);
Ex7: Chn bc b lc elliptic, th tc cũng ging như trên D liu vi tn s l u y m
1000 Hz, thiết kế b l c thông thp có suy gi ơm nh h n 3dB 100 Hz và gim 15 dB
vi 150 Hz:
Wp=100/500;
Ws=150/500;
Rp=3;
Rs=15;
[N,Wn]=ellipord(Wp,Ws,Rp,Rs)
[b,a]=ellip(n,Rp,Rs,Wn);
Ex8: Thiết kế b l c thông di elliptic có di thông t 100 Hz đến 200 Hz, suy gim
nh h d c sơn 3 dB i thông và dưi 30 dB 50 Hz 2 phía, gi tn s l u y m
là 1000 Hz:
Wp=[100 200]/500;
Ws=[50 250]/500;
Rp=3;
Rs=30;
[N,Wn]=ellipord(Wp,Ws,Rp,Rs)
[b,a]=ellip(n,Rp,Rs,Wn);
Thc hin b l c IIR
B l c áp ng đ đơn xung vô hn ( IIR ) đưc s dng rng rãi trong các ng dng
s lý s tín hiu. Hàm truyn ca b lc IIR đưc cho bi :
( )
(
)
( )
zX
zY
zaza
zbzbb
zH
N
N
M
M
=
+++
+++
=
L
L
1
1
1
10
1
128
Hình dưI n lđây cho ta gi đ khI ca b c IIR ( ki u 2 ) b c-N Direction-form
. Trong min thi gian n mt b lc IIR bc N đưc biu di n b I hai biu thc khác
nhau như sau :
Ti khong thi gian th n
- x(n) là mu li vào hin hành
- y(n) là mu li ra hin hành
Æ d(n) = x(n) d(n 1)a
1
... d(n N + 1)a
N-1
Æ y(n) = d(n)b
0
+ d(n 1)b
1
+ ... + d(n N + 1)b
N-1
Hai biu thc trên d ng cho TMS320C50 khi dùng các l dàng đưc s d nh
nhân accumulator ( MAC, MACD, MADS, MADD ) . ý rng biu thc th hai cũng
d(n) .
Đ thc hin b lc IIR tnh bày phương tnh (9) trc tiếp. 2 cách thc hin
b lc IIR trc tiếp là : Direct-Form I và Direct-Form II. Thc hin Direct-Form I
phương tnh sai phân bc N đưc ch ra trên hình 8.2. C u tc m ng đưc ch ra trên
hình 8.2 có phương tnh sai phân như sau:
==
+=
M
k
k
N
k
k
knxbknyany
01
][][][ (13)
129
vi x [n ] và y [n ] là li vào và li ra tương ng. Phương tnh này cho thy li ra
t iương t v li b c FIR, đ u này có th thc hin trc tiế p và có hi u qu trên
TMS320C50,
Thc hin Direct-Form II ca phưong tnh sai phân bc N đưc cho trên hình 8.3. Vì
dng Direct-Form II có tr nh nht ( các nhánh có nhãn
1
z ), nó cn ít thanh ghi lưu tr
khi tính toán. Cu tc này rt thun li vi b nh u nh d li khi thc hin b lc IIR.
Phương tnh sai phân cho mng này là:
=
+=
N
k
k
kndanxnd
1
)()()( (14)
=
=
N
k
k
kndbny
1
)()( (15)
vi x(n) và y(n) tương ng là li vào và li ra; d(n) là biến trung gian. Khi N=2, phương
trình tr thành:
)2()1()()(
21
+
+= ndandanxnd (16)
)2()1()()(
210
+
+= ndbndbndbny (17)
130
Cu tc mng ca nó đưc cho trên hình 8.4. Chú ý r ng s d ng Direct-Form II
này, d(n) là tn s cn lưu trong b l . Sưu giá tr tr p x p lế ưu giá tr delay-node cho
Direct-Form II IIR đưc tnh bày tn hình 8.5.
B. PHN THC NGHIM
1. Th tc
1) T t ngu n, ni bn mch vi cng PC RS232-C tn máy tính. Ni 9 Vac Adapter
vi bn mch và cm ra bên ngoài. Bt máy tính và thay đi đưng dn có cha
phn mm DSK.
2) Ch y chương trình DSKL( DSK5L) và kim tra là chương tnh DSK_COMM
đưc ti chính xác. Bây gi thc hin AUTOTEST (lnh A) và xác minh là đã
kim tra vòng lp. Nếu DSK đưc kết ni và chc năng chính xác thì bn có th
bt đu thc hin. Dng chương tnh DSKL.
3) Thi ết kế b l c IIR thông thp. các yêu cu như sau:
passband 0-3 KHz
passband ripple 0.5db
stopband attenuation 45db
sampling frequency 15 KHz
transition width 450 Hz
Xác đnh các h s l d cho b c s ng Matlab.
131
4) Lưng t hóa các h s và lit kê các h c s ch s t l s đư d ng đ ng tràn.
Lit kê các h s t l s s l này và tt c các h , h ưng t. th ph thuc vào
h s t l thiết kế.
5) Tr ưc khi thc hiên b l áp cc, so sánh đ ng tn s a h s i áp ng tính toán v đ
ca h , và ch s l ưng t ng minh r ng l ng t ư không làm gim áp đ ng tn s
ca b lc.
6) To ra c c hiu tc thc hin và biu b lđ miêu t c ging như bô lc th n
dùng DSP.
7) To ra mã ngun đ thc hin b l c. Đưa 1 Vrms vào DSK và chy chương trình.
Quan sát li ra ca DSK trên dao đng ký và xác nhn r đng ó là xung sin khi tn
s l l c. li vào nm trong phn thông di ca b Đo biên đ i ra khi tn s thay
đ đếi trong khong 50 Hz n 3500 Hz. Nếu li ra là sóng sin, dùng máy đo đin áp
xoay chiu o đ đo biên đ. So sánh ph đ đc c a b lc vi giá tr mong mun.
2. Yêu c u ti ến hành thc tp
Dưi đây là các chương trình ví d v b l c IIR . Chương tnh ví d (*) dưi
đ ây dùng cho b l c IIR thông th p b c N=4 , t n s c t kho ng 3.4KHz, dùng các lnh
vòng lp đơn ( RPT ) và nhân accumulator ( MAC, MACD ) Do bn cht có th hi quy
đưc ca mt b lc IIR nên vic lưng t hoá các h s c l a b c có th gây ra s thay
đi ln so v ng ti áp đ n s mong mun. c Đ tránh đư điu này, hàm chuyn đi b
lc mong mun có th đưc b c th thành các phn có b p hơn, liên tiếp nhau.
ca b l t s b lc IIR bc-2 N ng Các h cc và các biến s trng thái đưc ct gi
trong b nh d li u. Lưu ý vi c s d ng các ch d n LTD và MPYA đ thc hi n các
hot y. đng di chuyn d liu và đa tích lũ
Hãy tn dng chương trình này đ tiến hành các thí nghim sau
1. Trong các thí nghim sau, tn s y m u c l a mch TMS320C50 cn đt là
22,321 KHz và tn s c b lt cu c tương t thông thp ca mch là 10KHz. Các
b lc IIR dưi ây đ đưc thiết kế và thc hin, có đ suy gim 3 dB tn s thông
di và 30 dB tn s chn di.
2. B l cc thông thp có tn s t 2 KHz;
132
3. B l cc thông cao có tn s t 3.4 KHz;
4. B lc thông di có d i thông n m trong khong 300 Hz và 3.4 KHz.
5. B lc chn d n ni có di ch m gia 2 KHz và 3 KHz.
Thí nghim 2 và 4 là không bt buc. Các b lc Butterworth, Chebyshev I,II và
elliptic có th s d ng. Hiu sut ca các b lc IIR có th u đưc kim tra so sánh vi hi
sut ca b lc FIR , ghi li và báo cáo nhng gì bn thy.
Bài báo cáo phi tnh bày th tc thiết kế và kết qu thc hin.
------------------------------------------------------------------------------------------------------------
Ví d (*). Nth-Order IIR Filter Using RPT and MACD Instructions
.title Nth Order IIR Type II Filter”
.mmregs
N .set 4
N-1 .set 3
.ds 0f00h
TA .word 20 ;
RA .word 20 ; Freq Sampling 8KHz
TAp .word 1 ; not used
RAp .word 1 ; not used
TB .word 31 ; <10>
RB .word 31 ;
AIC_CTR .word 09h ;
YN .word 0
YN-1 .word 0
YNLAST .word 0
POUBY .word 0
MA .word 0 ;
XN .word 0,0,0,0 ; <20>
XNLAST .word 0
POUBX .word 0 ;
.ps 0980h
COEFFA .word -5249,19621,-30929,24108
COEEFB .word 186,-107,296,-107,186
133
;**************************************
; Set up the ISR vector *
;**************************************
.ps 080ah ;
rint: B RECEIVE ;0A ; Serial port receive interrupt
RINT.
xint: B TRANSMIT ;0C ; Serial port transmit interrupt
XINT.
;*********************************************
; TMS32C05X INITIALIZATION *
;*********************************************
.ps 0a00h
.entry
SETC INTM ; Disable interrupts
LDP #0 ; Set data page pointer
OPL #0834h,PMST ; OR the status register
LACC #0
SAMM CWSR ; Set software wait state to 0
SAMM PDWSR ;
SETC SXM
SPLK #022h,IMR ; Using XINT syn TX & RX
CALL AICINIT ; initialize AIC and enable interrupts
SPLK #12h,IMR ; Select serial port receive interrupt
CLRC OVM
SPM 0
CLRC INTM ; Enable interrupts
forever IDLE
B forever
;------- end of main program ----------;
;-------------------------- RECIEVER ISR --------------------------
RECEIVE:
LDP #XN
CLRC INTM
LAMM DRR ; get input in ACC
134
SACL XN
; start IIR
;********************************************************
;* This routine implements an Nth order type II IIR filter. *
;* d(n) = x(n) d(n1)a1 d(n2)a2 ... d(nN+1)aN1 *
;* y(n) = d(n)b0 + (dn1)b1 +...+ d(nN+1)bN1 *
;* Memory Requirement: State variables (low to high data memory): *
;* d(n) d(n1) ... d(nN+1) *
;* Coefficient (low to high program memory): *
;* a(N1) a(N2) ... a(1) b(N1) b(N2) ... b(1) b(0) *
;* Entry Conditions: *
;* AR0 > Input *
;* AR1 > d(nN+1) *
;* AR2 > Output *
;* COEFFA > a(N1) *
;* COEFFB > b(N1) *
;* ARP = AR0 *
;********************************************************
LAR AR0,#XN
LAR AR1,#XNLAST
LAR AR2,#YNLAST
IIR_N:
ZPR ; Clear P register
LACC *,15,AR1 ; Get Q15 input
RPT #3 ; For i=1,i<=N1,++i
MAC COEFFA,* ; Acc+=a(Ni))*d(nN+i)
APAC ; Final accumulation
SACH *,1 ; Save d(n)
ADRK 4 ; AR1 > d(nN+1)
LAMM BMAR ; Acc > a(N1)
ADD #4 ; Acc > b(N1)
SAMM BMAR ; BMAR > b(N1)
RPTZ #4 ; For i=1,i<=N,++i
MACD COEFFB,* ; Acc+=b(Ni)*d(nN+i)
LTA *,AR2 ; Final accumulation
SACH *,1 ; ??? Save Yn
LACC YNLAST
AND #0fffch ; and ls 2 bits of top 16 bits, for DAC.
SAMM DXR
RETE
135
;-------------------------- Transmit ISR --------------------------
TRANSMIT:
RETE
;********************************************************
;* DESCRIPTION: This routine initializes the TLC32040 for *
;* your sample rate and command word *
;********************************************************
;* aic initialization data
AICINIT:
SPLK #01h,PRD
SPLK #20h,TCR ; make a 10 mhz clock signal
MAR *,AR0
LACC #0008h ; Non continuous mode
SACL SPC ; FSX as input
LACC #00c8h ; 16 bit words
SACL SPC
LACC #080h ; Pulse AIC reset by setting it low
SACH DXR
SACL GREG
LAR AR0,#0FFFFh
RPT #10000 ; and taking it high after 10000 cycles
LACC *,0,AR0 ; (.5ms at 50ns)
SACH GREG
LDP #TA ;
SETC SXM ;
LACC TA,9 ; Initialized TA and RA register
ADD RA,2 ;
CALL AIC_2ND ;
;------------------------
LDP #TB
LACC TB,9 ; Initialized TB and RB register
ADD RB,2 ;
ADD #02h ;
CALL AIC_2ND ;
;------------------------
LDP #AIC_CTR
LACC AIC_CTR,2 ; Initialized control register
ADD #03h ;
;LACC #11100000b
CALL AIC_2ND ;
136
RET ;
AIC_2ND:
LDP #0
SACH DXR ;
CLRC INTM
IDLE
ADD #6h,15 ; 0000 0000 0000 0011 [X..X]
16
b
SACH DXR ;
IDLE
SACL DXR ;
IDLE
LACL #0 ;
SACL DXR ; make sure the word got sent
IDLE
SETC INTM
RET ;
.end
Ví d (**) Nth-Order IIR Filter Using RPT and MACD Instructions
.title Nth Order IIR Type II Filter”
.mmregs
********************************************************
* This routine implements an Nth order type II IIR filter. *
* d(n) = x(n) d(n1)a1 d(n2)a2 ... d(nN+1)aN1 *
* y(n) = d(n)b0 + (dn1)b1 +...+ d(nN+1)bN1 *
* *
* Memory Requirement: *
* State variables (low to high data memory): *
* d(n) d(n1) ... d(nN+1) *
* *
* Coefficient (low to high program memory): *
* a(N1) a(N2) ... a(1) b(N1) b(N2) ... b(1) b(0) *
* *
* Entry Conditions: *
* AR0 > Input *
* AR1 > d(nN+1) *
* AR2 > Output *
* COEFFA > a(N1) *
* COEFFB > b(N1) *
* ARP = AR0 *
* *
137
********************************************************
IIR_N:
ZPR ;Clear P register
LACC *,15,AR1 ;Get Q15 input
RPT #(N2) ;For i=1,i<=N1,++i
MAC COEFFA,* ;Acc+=a(Ni))*d(nN+i)
APAC ;Final accumulation
SACH *,1 ;Save d(n)
ADRK N1 ;AR1 > d(nN+1)
LAMM BMAR ;Acc > a(N1)
ADD #N1 ;Acc > b(N1)
SAMM BMAR ;BMAR > b(N1)
RPTZ #(N1) ;For i=1,i<=N,++i
MACD COEFFB,* ;Acc+=b(Ni)*d(nN+i)
LTA *,AR2 ;Final accumulation
SACH *,1 ;Save Yn
Ví d (***). N Cascaded BiQuad IIR Filter Using LTD and MPYA Instructions
.title N Cascaded BiQuad IIR Filters
.mmregs
*****************************************************************
* This routine implements N cascaded blocks of biquad IIR canonic type II *
* filters. Each biquad requires 3 data memory locations d(n),d(n1),d(n2), *
* and 5 coefficients a1,a2,b0,b1,b2. *
* For each block: d(n) = x(n)d(n1)a1d(n2)a2 *
* y(n) = d(n)b0+d(n1)b1+d(n2)b2 *
* *
* Coefficients Storage (low to high data memory): *
* a2,a1,b2,b1,b0, ... ,a2,a1,b2,b1,b0 *
* 1st biquad Nth biquad *
* *
* State Variables (low to high data memory): *
* d(n),d(n1),d(n2), ... ,d(n),d(n1),d(n2) *
* Nth biquad 1st biquad *
* *
* Entry Conditions: *
* AR1 > d(n2) of 1st biquad *
* AR2 > a2 of 1st biquad *
138
* AR3 > input sample (Q15 number) *
* AR4 > output sample (Q15 number) *
* DP = 0, PM = 0, ARP = 3 *
*****************************************************************
BIQUAD: ;Setup variables
ZPR ;Clear P register
LACC *,15,AR1 ;Get Q15 input
SPLK #2,INDX ;Setup index register
SPLK #N1,BRCR ;Setup count
;Begin computation;
RPTB ELOOP1 ;Repeat for N biquads
LOOP:
LT *,AR2 ;T = d(n2)
MPYA *+,AR1 ;Acc = x(n), P = d(n2)a2
LTA *,AR2 ;Acc += d(n2)a2, T = d(n1)
MPY *+ ;P = d(n1)a1
LTA *+,AR1 ;Acc += d(n1)a1, T = b2
SACH *0+,1 ;Save d(n)
MPY * ;P = d(n2)b2
LACL #0 ;Acc = 0
LTD *,AR2 ;T = d(n1), d(n2) = d(n1)
MPY *+,AR1 ;Acc += d(n2)b2, P = d(n1)b1
LTD *,AR2 ;T = d(n), d(n1) = d(n)
MPY *+,AR1 ;Acc += d(n1)b1, P = d(n)b0
ELOOP:
LTA *,AR4 ;Final accumulation
SACH *,1 ;Save output in Q15 format

Preview text:

BÀI THỰC TẬP CHUYÊN ĐỀ
KHẢO SÁT CÁC ĐẶC TÍNH ĐÁP ỨNG BỘ LỌC THÔNG THẤP 1. Mục đích
Mục đích của bài thí nghiệm này là sử dụng một bộ lọc tích cực cứng được thiết
kế như là bộ lọc thông thấp 5 cực để tạo thành bộ lọc có thể thay đ i
ổ được, đẻ có đặc tính
Butterwworth, hoặc Chebyshev hay là Bessel .. Nó có trở kháng lối vào khá lớn
(khoảng 10k) và trở kháng lối ra khá nhỏ và vì thế hoạt động của nó không phụ thuộc
nhiều vào lối vào và lối ra ( Chú ý : Hãy giữ điện áp lối vào dưới 5 Volt đỉnh-đỉnh để
tránh quá tải ) , Bên cạnh đó sinh viên dùng chương trình MATLAB Signal Processing
Toolbox để thiết kế bộ lọc này và sử dụng bản mạch Startup kit TMS320C50 DSP (Bộ
sử lý số tín hiệu) với phần mềm hợp ngữ DSK để tạo ra bộ lọc đáp có các đặc tính trên.
Sơ đồ khối của thí nghiệm được mô tả như sau :
a) Sơ đồ thí nghiệm sử dụng bộ lọc tích cực cứng :
b) Sơ đồ thí nghiệm sử dụng TMS320C50 DSP 119
2. Dụng cụ thực nghiệm i) Máy phát chức năng ii)
Bộ lọc tích cực với nguồn +/- 15Volt iii) Dao động ký iv) Volt kế RMS v) Máy đo phase vi)
Máy tính với phần mềm DSK , MatLab vii) Startup kit TMS320C50 DSP
viii) phát chức năng ( Function Generator); A. PHẦN LÝ THUYẾT
1. Các đặc tính đáp ứng bộ lọc thông thấp
Trong phần này sinh viên phải phân tích , đánh giá các đặc tính tần số và đáp ứng
truyền dẫn của đường truyền có đặc trưng lọc Butterwworth, hoặc Chebyshev hay là
Bessel theo các chỉ dẫn dưới đây :
o Với đáp ứng tần số , phải chú ý đến giá trị suy hao đáng kể tại các tần số nào đó
. Các tần số này phải được đo và vẽ theo tần số được chuẩn hoá. Với mỗi một
bộ lọc , các tần số được chuẩn hoá được sử dụng để vẽ trên đồ thị sao cho chúng
có thể biểu diễn dáng điệu chung nhất của bộ lọc để từ đó xem xét được đáp ứng
mỗi khi có một sự thay đổi tần số.
o Từ đáp ứng tần số , các trễ pha tại các tần số được lựa chọn phải được đo và các
đặc tính độ khuyếch đại, độ chậm phase , trễ phase và trễ nhóm đươc tính toán từ các giá trị đo đư c ợ .
o Với đáp ứng truyền dẫn , đáp ứng lối ra của mỗi bộ lọc khi một bước lối vào được sử dụng a) Giới thiệu :
Mỗi một bộ lọc bậc-5 có một hàm truyền được chuẩn hoá dưới dạng : e
H(s) = -------------------------------------------------------------------
S5 + a S4 + b S3 + c S2 + d S1 + e
Trong đó a, b, c, d, e là các hệ số của bộ lọc 120
• Butterworth có hàm truyền (TF) được chuẩn hoá tới ωc = 1 rad/s
• Chebyshev có 1 dB ripple ,
ωc = cosh [ (1/n) cosh-1(1/e) ]
Do bộ lọc bậc-5 có n=5 và e=0.50885 vì thế ωc ≈ 1.0338 và sao cho
ωr không dưới -3dB thì ωr = (20000/1.0338 ) = 19346 rad/s cà do vậy TF
được đặt lại bằng s/ωr = 20000/19346.
• Bessel được chuẩn hoá tới thời gian trễ T0 = 1 sec để đảm bảo cho ωc =
20000rad/s thì độ trễ phải giảm xuống to = 1.21 x 10-4 sec
TF được chuẩn hoá bằng cách đặt lại s = sto , trong đó t0 là độ trễ thiết kế
Độ trễ phase “ tần số zero “ được xác định bằng cách đặt s hay ω bằng
zero và vì vậy chỉ còn hệ số bậc-1 trong H(s) , xác định độ trễ phase kết quả của biểu
thức ( bằng cách đặt s = jω ) với Tp = -f(ω)/ω
Cho bộ lọc có thể chuyển đổi thành các loại bộ lọc Butterwworth, hoặc
Chebyshev hay là Bessel cùng với các thiết bị thí nghiệm nêu ở trên , sinh viên hãy
tiến hành các bước sau đây :

b) Độ trễ phase “ tần số zero “
Các mẫu số được chuẩn hoá theo 3 hàm truyền là
9 Butterworth S5 + 3.236 S4 + 5.236 S3 + 5.236 S2 + 3.236 S1 + 1
9 Chebyshev S5 + 0.908 S4 + 1.601 S3 + 0.889 S2 + 0.509 S1 + 0.104 9 Bessel
S5 + 6.181 S4 + 17.827 S3 + 29.381 S2 + 27.238 S1 + 11.222
sử dụng tần số lên tới ω0 = 20 000 rad/s ( f0 = 3.18 KHz ) sao cho đáp ứng tần
số mong đợi phù hợp với TF với S được thay thế bằng jω/20000. Hãy sử
dụng các thông tin này để tính toán độ trễ phase “ tần số zero ” β/ω đặc tính của
mỗi một bộ lọc ( bằng cách đặt ω → 0 vì thế chỉ còn lại đại lượng bậc nhất )
c) Các tần số tiệm cận 121
Các tần số của các bộ lọc bậc 5 này được tính toán theo hàm truyền nêu trong mục (a) trên đây
d) Quan sát đáp ứng tần số
• Biên độ : Với mỗi một bộ lọc, hãy so sánh điện áp lối ra tính theo đơn vị
dB và ghi lại các tần số mà tại đó có sự suy hao đáng kể về biên độ lối ra
, tức là với Butterworth và Bessel, các tần số cho -0.5dB, -1dB , -3dB ,
-10dB , -20dB , -30dB và -40dB , còn với Chebyshev tại các tần số
và giá trị suy hao ứng với giá trị tối đa trong băng dải và giá trị suy
hao ứng với giá trị tối thiểu tại gần mép băng dải , các tần số cho cho -
0.5dB, -1dB , -3dB , -10dB , -20dB , -30dB và -40dB
Hãy vẽ đáp ứng theo đơn vị dB đối lại với thang logarithm tần số được chuẩn hoá
• Hãy dùng máy đo phase chính xác và ghi lại sự chậm phase của bộ lọc
tại mỗi một trạng thái của nó tại các tần số sau đ ây
40, 120, 400, 480, 700, 780, 1000, 1080, 1300, 1380, 1600, 1680,
1900, 1980, 2100, 2180, 2300, 2380, 2700, 2780, 3000, 3080, 4000, 4080, 5000, 5080Hz
Độ trễ phase β/ω có thể được xem xét bên cạnh các tần số này và giá trị
tương ứng với độ trễ nhóm (∆β / ∆ω) có thể được tính theo các tần số
80, 440, 740, 1040, 1340, 1640, 1940, 2140, 2340, 2740, 3040, 4040, 5040Hz
Hãy vẽ sự chậm phase , độ trễ phase và đ
ộ trễ nhóm ứng với mỗi một trạng
thái bộ lọc khi dùng các thang tần số được chuẩn hoá tuyến tính rồi tính các độ trễ tần số zero
e) Quan sát đáp ứng truyền dẫn
• Cho lối vào bộ lọc một xung điện thế dạng sóng hình vuông , hãy quan sát
thời gian cần thiết để cho điện thế lối ra đạt giá trị ổn định sau mỗi một
bước của sóng hình vuông
• Với mỗi một bộ lọc, hãy quan sát độ trễ thời gian giữa tín hiệu lối vào và
lối ra khi lối ra đạt được 50% giá trị cuối cùng của nó. Chúng có thể được
coi như độ trễ hiệu dụng của bộ lọc theo đáp ứng lối vào f) Mô phỏng
Cho mạch lọc với sơ đồ theo hình vẽ dưới đây : 122
• Hãy sử dụng phần mềm PSPICE ( hay là ELECTR)NIC WORKBENCH) để
đưa ra đáp ứng tần số của bộ lọc
• Sử dụng các phần mềm MatLab hay Mathematica đê tính đáp ứng biên đ ộ
và đáp ứng phase của bộ loc
• Thay thế 1 vài giá trị của một vài phần tử trong bộ lọc trên đây ( theo yêu cầu
của giáo viên ) rồi mô phỏng và thu nhận lại kết quả
2. Thiết kế bộ lọc IIR dùng mẫu Analog.
Một lớp quan trọng thiết kế bộ lọc số IIR là dựa trên biến đổi bộ lọc tương tự cổ điển
Butterworth, Chebyshev I, Chebyshev II, và Cauter sang dạng số tương ứng. Phư n ơ g
pháp cổ điển thiết kế các bộ lọc số IIR được thực hiện vì những lý do sau đây:
a) Ưu điểm của thiết kế bộ lọc IIR tương tự. Do đó, rất thuận tiện để sử dụng
thủ tục thiết kế đã có để phát triển bộ lọc tương tự
b) Có rất nhiểu phương pháp thiết kế bộ lọc tương tự hữu ích có công thức
thết kế dạng đơn giản, phương pháp thiết kế mạch lọc số dựa trên công thức
thiết kế tương tự chuẩn hơn là đơn giản thực hiện nó, sử dụng cả biến đổi
tương tự hay bất kỳ dạng nào. 123
c) Phương pháp xấp xỉ tiêu chuẩn của bộ lọc tương tự không cho ta công thức
thiết kế đơn giản khi các phương pháp này được áp dụng trực tiếp để thiết kế bộ lọc FIR.
Bốn hàm trong MATLABTM SIGNAL PROCESSING TOOLBOX để thiết kế bộ lọc IIR
thông thấp nói trên là : [b,a]=butter(N,Wn) [b,a]=cheby1(N,Rp,Wn) [b,a]=cheby2(N,Rs,Wn)
[b,a]=ellip(N,Rp,Rs,Wn)
Có 4 phương pháp thiết kế bộ lọc thông thấp bậc N có tần số cắt Wn,Wn nằm trong
khoảng 0 và 1, với 1.0 là một nửa tần số lấy mẫu( tần số Nyquist). Với cheby1 và ellip,
biến Rp là decibel của gợn (ripple) trong dải thông, với cheby2 và ellip dải chặn được
đặt là Rs decibel trở xuống từ giá trị đỉnh của dải thông.
Các hàm sau cho ta hệ số bộ lọc có chiều dài N+1 hàng vector b và a. Các hệ số bộ
lọc là lũy thừa của z: − 1 − n B (z ) b ) 1 ( + b( )
2 z +... + b(n − ) 1 z H ( z) = = (12) −1 n A(z ) a ) 1 ( + a( )
2 z + ... + a(n − ) 1 z
Các giá trị nhỏ hơn của gợn Rp thông dải và các giá trị lớn hơn Rs chặn dải đều
dẫn đến độ quá độ lớn hơn (đặc trưng cắt ngắn hơn).
Nếu Wm là vector 2 thành phần, Wn=[w1,w2], thiết kế 4 hàm bộ lọc thông dải bậc 2N với dải w1<ω
Bộ lọc thông cao được thiết kế bằng cách thêm chuỗi “high” vào sau câu lệnh:
[b,a]=ellip(N,Rp,Rs,Wn,’high’)
Bộ lọc chặn dải được thiết kế bằng cách thêm chuỗi “stop” vào cuối câu lệnh:
[b,a]=butter(N,Rp,Rs,Wn,’stop’)
là bộ lọc chặn dải bậc 2N nếu Wn=[w1,w2]. Dải chặn là w1<ω 124
Bậc bộ lọc nhỏ nhất yêu cầu phải đạt được các tính chất thực hiện đặc biệt, được
định nghĩa trong hình 8.1, có thể được tính toán sủ dụng một hàm chọn bậc bộ lọc:
[N,Wn]=buttord(Wp,Ws,Rp,Rs) [N,Wn]=cheb1ord(Wp,Ws,Rp,Rs) [N,Wn]=cheb2ord(Wp,Ws,Rp,Rs)
[N,Wn]=ellipord(Wp,Ws,Rp,Rs)

Các hàm này trả lại N và Wn sử dụng trong butter, cheby1,cheby2, hay ellip. Các
hàm chọn bậc này cũng được dùng để thiết kế bộ lọc chặn dải, thông dải và thông cao.
Với bộ lọc thông cao, Wp>Ws, Với bộ lọc thông dải và chặn dải, đặt Wp và Ws là vector
2 thành phàn xác định tần số ở cả 2 lề của bộ lọc, lề đầu trước lề thứ 2. Wn, với bộ lọc
thông dải, được trả lại là vector hàng có 2 thành phần để đưa vào hàm thiết kế bộ lọc.
Ex1:
Chọn bậc bộ lọc Butterworth, Rp =3dB, Kết quả là lối ra Wn =Wp. Dữ liệu với tần
số lấy mẫu 1000 Hz, bộ lọc thông thấp có độ suy giảm nhỏ hơn 3dB ở 100 Hz và giảm 15 dB với 150 Hz: Wp=100/500; Ws=150/500; Rp=3; Rs=15; [N,Wn]=buttord(Wp,Ws,Rp,Rs) [b,a]=butter(n,Wn); 125
Ex2: Thiết kế bộ lọc thông dải có dải thông từ 100 Hz đến 200 Hz, có độ suy giảm
nhỏ hơn 3 dB ở dải thông và dưới 30 dB ở 50 Hz ở cả 2 phía, giả sử tần số lấy mẫu là 1000 Hz: Wp=[100 200]/500; Ws=[50 250]/500; Rp=3; Rs=30; [N,Wn]=buttord(Wp,Ws,Rp,Rs) [b,a]=butter(n,Wn);
Ex3: Chọn bậc bọ lọc Chebyshev I, thủ tục cũng giống như trên Dữ liệu với tần số lấy
mẫu 1000 Hz, thiết kế bộ lọc thông thấp có suy giảm nhỏ hơn 3dB ở 100 Hz và giảm 15 dB với 150 Hz: Wp=100/500; Ws=150/500; Rp=3; Rs=15; [N,Wn]=cheb1ord(Wp,Ws,Rp,Rs) [b,a]=cheby1(n,RpWn);
Ex4: Thiết kế bộ lọc thông dải Chebyshev loại I có dải thông từ 100 Hz đến 200 Hz,
suy giảm nhỏ hơn 3 dB ở dải thông và dưới 30 dB ở 50 Hz ở cả 2 phía, giả sử tần số lấy mẫu là 1000 Hz: Wp=[100 200]/500; Ws=[50 250]/500; Rp=3; Rs=30; [N,Wn]=cheb1ord(Wp,Ws,Rp,Rs) [b,a]=cheby1(n,Rp,Wn);
Ex5: Chọn bậc bọ lọc Chebyshev loại II, thủ tục cũng giống như trên Dữ liệu với tần
số lấy mẫu 1000 Hz, thiết kế bộ lọc thông thấp có suy giảm nhỏ hơn 3dB ở 100 Hz và giảm 15 dB với 150 Hz: Wp=100/500; Ws=150/500; Rp=3; Rs=15; [N,Wn]=cheb2ord(Wp,Ws,Rp,Rs) [b,a]=cheby2(n,Rs,Wn); 126
Ex6: Thiết kế bộ lọc thông dải Chebyshev loại I có dải thông từ 100 Hz đến 200 Hz,
suy giảm nhỏ hơn 3 dB ở dải thông và dưới 30 dB ở 50 Hz ở cả 2 phía, giả sử tần số lấy mẫu là 1000 Hz: Wp=[100 200]/500; Ws=[50 250]/500; Rp=3; Rs=30; [N,Wn]=cheb2ord(Wp,Ws,Rp,Rs) [b,a]=cheby2(n,Rs,Wn);
Ex7: Chọn bậc bộ lọc elliptic, thủ tục cũng giống như trên Dữ liệu với tần số lấy mẫu
1000 Hz, thiết kế bộ lọc thông thấp có suy giảm nhỏ hơn 3dB ở 100 Hz và giảm 15 dB với 150 Hz: Wp=100/500; Ws=150/500; Rp=3; Rs=15; [N,Wn]=ellipord(Wp,Ws,Rp,Rs) [b,a]=ellip(n,Rp,Rs,Wn);
Ex8: Thiết kế bộ lọc thông dải elliptic có dải thông từ 100 Hz đến 200 Hz, suy giảm
nhỏ hơn 3 dB ở dải thông và dưới 30 dB ở 50 Hz ở cả 2 phía, giả sử tần số lấy mẫu là 1000 Hz: Wp=[100 200]/500; Ws=[50 250]/500; Rp=3; Rs=30; [N,Wn]=ellipord(Wp,Ws,Rp,Rs) [b,a]=ellip(n,Rp,Rs,Wn);
Thực hiện bộ l c IIR
Bộ lọc đáp ứng đơn xung vô hạn ( IIR ) được sử dụng rộng rãi trong các ứng dụng
sử lý số tín hiệu. Hàm truyền của bộ lọc IIR được cho bởi : b + b z −1 + 0 1 L + b z M Y M (z) H(z) = = 1 + a z −1 + 1 L + a z N X (z ) N 127
Hình dướI đây cho ta giản đồ khốI của bộ lọc IIR ( kiểu 2 ) bậc-N Direction-form
. Trong miền thời gian n một bộ lọc IIR bậc N được biểu diễn bởI hai biểu thức khác nhau như sau :
Tại khoảng thời gian thứ n
- x(n) là mẫu lối vào hiện hành
- y(n) là mẫu lối ra hiện hành
Æ d(n) = x(n) – d(n – 1)a1 – ... – d(n – N + 1)aN-1 Æ
y(n) = d(n)b0 + d(n – 1)b1 + ... + d(n – N + 1)bN-1
Hai biểu thức trên dễ dàng được sử dụng cho TMS320C50 khi dùng các lệnh
nhân –accumulator ( MAC, MACD, MADS, MADD ) . Cú ý rằng biểu thức thứ hai cũng
đòi hỏi các lệnh di chuyển dữ liệu để nâng cấp ( update ) trạng thái xâu biến đổI đư c ợ d(n) .
Để thực hiện bộ lọc IIR trình bày ở phương trình (9) trực tiếp. Có 2 cách thực hiện
bộ lọc IIR trực tiếp là : Direct-Form I và Direct-Form II. Thực hiện Direct-Form I
phương trình sai phân bậc N được chỉ ra trên hình 8.2. Cấu trúc mạng được chỉ ra trên
hình 8.2 có phương trình sai phân như sau: N M y n [ ] = ∑ a y n [ − k ] + b x n [ k ] (13) k ∑ − k k=1 k =0 128
với x [n ] và y [n ] là lối vào và lối ra tương ứng. Phương trình này cho thấy lối ra
của bộ lọc là tổng các trọng số của lối vào và lối ra của bộ lọc. Sử dụng các kỹ thuật
tương tự với bộ lọc FIR, điều này có thể thực hiện trực tiếp và có hiệu quả trên TMS320C50,
Thực hiện Direct-Form II của phưong trình sai phân bậc N được cho trên hình 8.3. Vì
dạng Direct-Form II có trễ nhỏ nhất ( các nhánh có nhãn 1 −
z ), nó cần ít thanh ghi lưu trữ
khi tính toán. Cấu trúc này rất thuận lợi với bộ nhớ dữ liệu nhỏ khi thực hiện bộ lọc IIR.
Phương trình sai phân cho mạng này là: N
d (n) = x(n) + ∑ a d(n k) (14) k k =1 N
y(n) = ∑b d(n k) (15) k k =1
với x(n) và y(n) tương ứng là lối vào và lối ra; d(n) là biến trung gian. Khi N=2, phương trình trở thành: d( ) n = ( x )
n + a d (n − ) 1 + a d(n− 2) (16) 1 2
y (n) = b d (n) + b d (n − ) 1 + b d (n − ) 2 (17) 0 1 2 129
Cấu trúc mạng của nó được cho trên hình 8.4. Chú ý rằng sử dụng Direct-Form II
này, d(n) là tần số cần lưu trong bộ lưu giá trị trễ. Sắp xếp lưu giá trị delay-node cho
Direct-Form II IIR được trình bày trên hình 8.5.
B. PHẦN THỰC NGHIỆM 1. Thủ tục
1) Tắt nguồn, nối bản mạch với cổng PC RS232-C trên máy tính. Nối 9 Vac Adapter
với bản mạch và cẳm ra bên ngoài. Bật máy tính và thay đổi đường dẫn có chứa phần mềm DSK.
2) Chạy chương trình DSKL( DSK5L) và kiểm tra là chương trình DSK_COMM
được tải chính xác. Bây giờ thực hiện AUTOTEST (lệnh “A”) và xác minh là đã
kiểm tra vòng lặp. Nếu DSK được kết nối và chức năng chính xác thì bạn có thể
bắt đầu thực hiện. Dừng chương trình DSKL.
3) Thiết kế bộ lọc IIR thông thấp. Có các yêu cầu như sau:  passband 0-3 KHz  passband ripple 0.5db  stopband attenuation 45db  sampling frequency 15 KHz  transition width 450 Hz
 Xác định các hệ số cho bộ lọc sử dụng Matlab. 130
4) Lượng tử hóa các hệ số và liệt kê các hệ số tỉ lệ sẽ được sử dụng để chống tràn.
Liệt kê các hệ số tỉ lệ này và tất cả các hệ số, hệ số lượng tử. Có thể phụ thuộc vào
hệ số tỉ lệ thiết kế.
5) Trước khi thực hiên bộ lọc, so sánh đáp ứng tần số của hệ số tính toán với đáp ứng
của hệ số lượng tử , và chứng minh rằng lượng tử không làm giảm đáp ứng tần số của bộ lọc.
6) Tạo ra cấu trúc thực hiện và biểu đồ miêu tả bộ lọc giống như bô lọc thực hiện dùng DSP.
7) Tạo ra mã nguồn để thực hiện bộ lọc. Đưa 1 Vrms vào DSK và chạy chương trình.
Quan sát lối ra của DSK trên dao động ký và xác nhận rằng đó là xung sin khi tần
số lối vào nằm trong phần thông dải của bộ lọc. Đo biên độ lối ra khi tần số thay
đổi trong khoảng 50 Hz đến 3500 Hz. Nếu lối ra là sóng sin, dùng máy đo điện áp
xoay chiều để đo biên độ. So sánh phổ đo đạc của bộ lọc với giá trị mong muốn.
2. Yêu cầu tiến hành thực tập
Dưới đây là các chương trình ví dụ về bộ lọc IIR . Chương trình ví dụ (*) dưới
đây dùng cho bộ lọc IIR thông thấp bậc N=4 , tần số cắt khoảng 3.4KHz, dùng các lệnh
vòng lặp đơn ( RPT ) và nhân accumulator ( MAC, MACD ) Do bản chất có thể hồi quy
được của một bộ lọc IIR nên việc lượng tử hoá các hệ số của bộ lọc có thể gây ra sự thay
đổi lớn so với đáp ứng tần số mong muốn. Để tránh đư c
ợ điều này, hàm chuyển đổi bộ
lọc mong muốn có thể được bẻ thành các phần có bậc thấp hơn, liên tiếp nhau.
Các ví dụ (**) và chương trình ví dụ (***) dưới đây cho ta thấy một ứng dụng
của bộ lọc IIR bậc-2 N tầng Các hệ số bộ lọcc và các biến số trạng thái được cất giữ
trong bộ nhớ dữ liệu. Lưu ý việc sử dụng các chỉ dẫn LTD và MPYA để thực hiện các
hoạt động di chuyển dữ liệu và đa tích lũy.
Hãy tận dụng chương trình này để tiến hành các thí nghiệm sau
1. Trong các thí nghiệm sau, tần số lấy mẫu của mạch TMS320C50 cần đặt là
22,321 KHz và tần số cắt cuả bộ lọc tương tự thông thấp của mạch là 10KHz. Các
bộ lọc IIR dưới đây được thiết kế và thực hiện, có độ suy giảm 3 dB ở tần số thông
dải và 30 dB ở tần số chặn dải.
2. Bộ lọc thông thấp có tần số cắt 2 KHz; 131
3. Bộ lọc thông cao có tần số cắt 3.4 KHz;
4. Bộ lọc thông dải có dải thông nằm trong khoảng 300 Hz và 3.4 KHz.
5. Bộ lọc chặn dải có dải chặn nằm giữa 2 KHz và 3 KHz.
Thí nghiệm 2 và 4 là không bắt buộc. Các bộ lọc Butterworth, Chebyshev I,II và
elliptic có thể sử dụng. Hiệu suất của các bộ lọc IIR có thể được kiểm tra so sánh với hiệu
suất của bộ lọc FIR , ghi lại và báo cáo những gì bạn thấy.
Bài báo cáo phải trình bày thủ tục thiết kế và kết quả thực hiện.
------------------------------------------------------------------------------------------------------------
Ví dụ (*). Nth-Order IIR Filter Using RPT and MACD Instructions
.title ”Nth Order IIR Type II Filter” .mmregs N .set 4 N-1 .set 3 .ds 0f00h TA .word 20 ; RA .word 20 ; Freq Sampling 8KHz TAp .word 1 ; not used RAp .word 1 ; not used TB .word 31 ; <10> RB .word 31 ; AIC_CTR .word 09h ; YN .word 0 YN-1 .word 0 YNLAST .word 0 POUBY .word 0 MA .word 0 ; XN .word 0,0,0,0 ; <20> XNLAST .word 0 POUBX .word 0 ; .ps 0980h COEFFA
.word -5249,19621,-30929,24108 COEEFB .word 186,-107,296,-107,186 132
;************************************** ; Set up the ISR vector *
;************************************** .ps 080ah ; rint: B RECEIVE
;0A ; Serial port receive interrupt RINT. xint: B TRANSMIT
;0C ; Serial port transmit interrupt XINT.
;********************************************* ; TMS32C05X INITIALIZATION *
;********************************************* .ps 0a00h .entry SETC INTM ; Disable interrupts LDP #0 ; Set data page pointer OPL
#0834h,PMST ; OR the status register LACC #0 SAMM CWSR
; Set software wait state to 0 SAMM PDWSR ; SETC SXM SPLK #022h,IMR ; Using XINT syn TX & RX CALL AICINIT
; initialize AIC and enable interrupts SPLK #12h,IMR
; Select serial port receive interrupt CLRC OVM SPM 0 CLRC INTM ; Enable interrupts forever IDLE B forever
;------- end of main program ----------;
;-------------------------- RECIEVER ISR -------------------------- RECEIVE: LDP #XN CLRC INTM LAMM DRR ; get input in ACC 133 SACL XN ; start IIR
;********************************************************
;* This routine implements an N–th order type II IIR filter. * ;*
d(n) = x(n) – d(n–1)a1 – d(n–2)a2 –...– d(n–N+1)aN–1 * ;*
y(n) = d(n)b0 + (dn–1)b1 +...+ d(n–N+1)bN–1 *
;* Memory Requirement: State variables (low to high data memory): * ;* d(n) d(n–1) ... d(n–N+1) *
;* Coefficient (low to high program memory): *
;* –a(N–1) –a(N–2) ... –a(1) b(N–1) b(N–2) ... b(1) b(0) * ;* Entry Conditions: * ;* AR0 –> Input * ;* AR1 –> d(n–N+1) * ;* AR2 –> Output * ;* COEFFA –> –a(N–1) * ;* COEFFB –> b(N–1) * ;* ARP = AR0 *
;******************************************************** LAR AR0,#XN LAR AR1,#XNLAST LAR AR2,#YNLAST IIR_N: ZPR ; Clear P register LACC *,15,AR1 ; Get Q15 input RPT #3 ; For i=1,i<=N–1,++i MAC COEFFA,*–
; Acc+=–a(N–i))*d(n–N+i) APAC ; Final accumulation SACH *,1 ; Save d(n) ADRK 4 ; AR1 –> d(n–N+1) LAMM BMAR ; Acc –> a(N–1) ADD #4 ; Acc –> b(N–1) SAMM BMAR ; BMAR –> b(N–1) RPTZ #4 ; For i=1,i<=N,++i MACD COEFFB,*– ; Acc+=b(N–i)*d(n–N+i) LTA *,AR2 ; Final accumulation SACH *,1 ; ??? Save Yn LACC YNLAST AND #0fffch
; and ls 2 bits of top 16 bits, for DAC. SAMM DXR RETE 134
;-------------------------- Transmit ISR -------------------------- TRANSMIT: RETE
;********************************************************
;* DESCRIPTION: This routine initializes the TLC32040 for *
;* your sample rate and command word *
;******************************************************** ;* aic initialization data AICINIT: SPLK #01h,PRD SPLK #20h,TCR ; make a 10 mhz clock signal MAR *,AR0 LACC #0008h ; Non continuous mode SACL SPC ; FSX as input LACC #00c8h ; 16 bit words SACL SPC LACC #080h
; Pulse AIC reset by setting it low SACH DXR SACL GREG LAR AR0,#0FFFFh RPT #10000
; and taking it high after 10000 cycles LACC *,0,AR0 ; (.5ms at 50ns) SACH GREG LDP #TA ; SETC SXM ; LACC TA,9
; Initialized TA and RA register ADD RA,2 ; CALL AIC_2ND ; ;------------------------ LDP #TB LACC TB,9
; Initialized TB and RB register ADD RB,2 ; ADD #02h ; CALL AIC_2ND ; ;------------------------ LDP #AIC_CTR LACC AIC_CTR,2
; Initialized control register ADD #03h ; ;LACC #11100000b CALL AIC_2ND ; 135 RET ; AIC_2ND: LDP #0 SACH DXR ; CLRC INTM IDLE ADD #6h,15
; 0000 0000 0000 0011 [X..X]16 b SACH DXR ; IDLE SACL DXR ; IDLE LACL #0 ; SACL DXR ; make sure the word got sent IDLE SETC INTM RET ; .end
Ví dụ (**) Nth-Order IIR Filter Using RPT and MACD Instructions
.title ”Nth Order IIR Type II Filter” .mmregs
********************************************************
* This routine implements an N–th order type II IIR filter. *
* d(n) = x(n) – d(n–1)a1 – d(n–2)a2 –...– d(n–N+1)aN–1 *
* y(n) = d(n)b0 + (dn–1)b1 +...+ d(n–N+1)bN–1 * * * * Memory Requirement: *
* State variables (low to high data memory): *
* d(n) d(n–1) ... d(n–N+1) * * *
* Coefficient (low to high program memory): *
* –a(N–1) –a(N–2) ... –a(1) b(N–1) b(N–2) ... b(1) b(0) * * * * Entry Conditions: * * AR0 –> Input * * AR1 –> d(n–N+1) * * AR2 –> Output * * COEFFA –> –a(N–1) * * COEFFB –> b(N–1) * * ARP = AR0 * * * 136
******************************************************** IIR_N: ZPR ;Clear P register LACC *,15,AR1 ;Get Q15 input RPT #(N–2) ;For i=1,i<=N–1,++i MAC COEFFA,*– ;Acc+=–a(N–i))*d(n–N+i) APAC ;Final accumulation SACH *,1 ;Save d(n) ADRK N–1 ;AR1 –> d(n–N+1) LAMM BMAR ;Acc –> a(N–1) ADD #N–1 ;Acc –> b(N–1) SAMM BMAR ;BMAR –> b(N–1) RPTZ #(N–1) ;For i=1,i<=N,++i MACD COEFFB,*– ;Acc+=b(N–i)*d(n–N+i) LTA *,AR2 ;Final accumulation SACH *,1 ;Save Yn
Ví dụ (***). N Cascaded BiQuad IIR Filter Using LTD and MPYA Instructions
.title ”N Cascaded BiQuad IIR Filters” .mmregs
*****************************************************************
* This routine implements N cascaded blocks of biquad IIR canonic type II *
* filters. Each biquad requires 3 data memory locations d(n),d(n–1),d(n–2), *
* and 5 coefficients –a1,–a2,b0,b1,b2. *
* For each block: d(n) = x(n)–d(n–1)a1–d(n–2)a2 * *
y(n) = d(n)b0+d(n–1)b1+d(n–2)b2 * * *
* Coefficients Storage (low to high data memory): * *
–a2,–a1,b2,b1,b0, ... ,–a2,–a1,b2,b1,b0 * * 1st biquad Nth biquad * * *
* State Variables (low to high data memory): * *
d(n),d(n–1),d(n–2), ... ,d(n),d(n–1),d(n–2) * * Nth biquad 1st biquad * * * * Entry Conditions: *
* AR1 –> d(n–2) of 1st biquad *
* AR2 –> –a2 of 1st biquad * 137
* AR3 –> input sample (Q15 number) *
* AR4 –> output sample (Q15 number) * * DP = 0, PM = 0, ARP = 3 *
***************************************************************** BIQUAD: ;Setup variables ZPR ;Clear P register LACC *,15,AR1 ;Get Q15 input SPLK #2,INDX ;Setup index register SPLK #N–1,BRCR ;Setup count ;Begin computation; RPTB ELOOP–1 ;Repeat for N biquads LOOP: LT *–,AR2 ;T = d(n–2) MPYA *+,AR1
;Acc = x(n), P = –d(n–2)a2 LTA *–,AR2
;Acc += –d(n–2)a2, T = d(n–1) MPY *+ ;P = –d(n–1)a1 LTA *+,AR1 ;Acc += –d(n–1)a1, T = b2 SACH *0+,1 ;Save d(n) MPY *– ;P = d(n–2)b2 LACL #0 ;Acc = 0 LTD *–,AR2
;T = d(n–1), d(n–2) = d(n–1) MPY *+,AR1
;Acc += d(n–2)b2, P = d(n–1)b1 LTD *–,AR2 ;T = d(n), d(n–1) = d(n) MPY *+,AR1
;Acc += d(n–1)b1, P = d(n)b0 ELOOP: LTA *,AR4 ;Final accumulation SACH *,1 ;Save output in Q15 format 138