Документ взят из кэша поисковой машины. Адрес оригинального документа : http://lib.sinp.msu.ru/static/tutorials/52_p1.pdf
Дата изменения: Fri Nov 28 16:49:31 2008
Дата индексирования: Sun Apr 10 22:22:19 2016
Кодировка:
6 . . .., .., .. 1. , . - , , , ( ) . - () , : a) - - ; ) - ; ) - . - , . (), , , , , .. [1]. "", , - . , () .
97


- , , ( ) , . . 1. - (Trck/Hold) - - . , ( ) (- ). ( , . 1.). , . 2. - . .1, . , ( ""). 3. - - . . ( ) . . 4. (lock-in) - , SIN +1,-1 ; , .3. , . () - , ,
98


/(+). ) , -; ) (- ) - ( , ). (- ) , . , , , , . , , ( ). ( ) . , . 2. . 2.1 . ­ . , .. t = nT, T - . : h(n), h(nT), N1 n N2. , , . .

99


) . .1.

.1. , ( - ) (t) .

) , n . .1

.1. ) u1(n). .1

.1.

,



.

100


) g(n). .1

.1. ) . ej
n

= cos(n)+ j sin(n)

a(n) , :

(1) 2.2 . ( - x(n)) ( -y(n)). . x1(n) x2(n) - , y1(n) y2(n) - , (a x1(n) + b x2(n)) (a y1(n) + b y2(n)) (a b - ). , x(n) y(n), x(n-n0) n0 y(n-n0) , ..2.

.2. (-).
101


, - x(n) y(n) . h(n) - . ( h(n) ). (1) x(n)

(2) h(n) u0(n), , h(n-m) u0(n-m). , x(m)u0(n-m) x(m)h(n-m). , x(n)

(3) (3) , . (3)

(4) , h(n) -, .2. 2.3 . . - , n=n0 n n0. - , h(n) n<0. - ,
102


. :

2.4 . , x(n) y(n) , . - , ,

(5) bi ai , aM 0. , , (5) x(n). : . , . , y(n)=-a1 y(n-1)+b0x(n)+ b1x(n-1) , .3. "" .

103


.3. .

y(n)=-a1y(n-1)-a2y(n-2)+b0x(n)+b1x(n-1)+b2x(n-2) , .4.

.4. .









2.5 . x(n)=ejn,
104


- < n < . - , .. , , . x(n)= ejn , h(n),

(6) , H(ej), : (7)

x(n)= e , H(ej) , - . h(n) = an u-1(n), (|a| < 1).

jn

(8) |a| < 1, (8)

105


.5 h(n), a H(ej) 0 2 .

.5. .









2.6 . ,(7) j H(e ) , . , h(n) H(ej) :

106


(9) , (7) (9) . (9) , h(n) ejn H(ejn). (7) (9) (7),

(10) (11) (6), ejn H(ej)ejn, (10) (12) (13) , (12) , y(n). , , . , H(ej ) jn e , 0 < 2. (10), , ,
107


. 2.7 Z - . z-. x(n), n, :

(14) z - . ( (14), z, ). Z- z-. (14) , z, , .. z=ej,

(15) . p X(z), . , , X(z) N z=p1,p2,...,pN M z=z1,z2,...,zM, p

(16) A - p . p , , p X(z) pp z-1,..
108


(17) p (17) p p. 2.8 p z - . p zpp, p z-pp . p z-pp : 1. p p p p .

(18) p pp, pp, p p C1>R1, R - p z-pp. p p (18) p p :

2. X(z) p p. Z-pp (16) p p

, pp i(pi)n,

p z-

109


2.9 z - . 1. Z-pp . , X1(z) X2(z) z-pp x1(n) x2(n), p a b z-pp ax1(n) + bx2(n), p aX1(z) + bX2(z). 2. p x1(n) z-pp X1(z), z pp x1(n-n0) p n0 p z-no X1(z). 3. p x(n) y(n) p - pp h(n), Y(z)=X(z)H(z), X(z), H(z) Y(z) z-pp x(n), h(n) y(n). p, p p p p zpp. 2.10 p pp p. p (16) z-pp p p, p p p , X(z), - p , p z-pp X(z). pp p ( p ) , X(z) p, .. p z=ej. p,
110


(19) X(ej) |X(ej)|ej
argX(ej)



(21) (19)-(21) .6. z= ej, , . , - .

.6. .6 (N=3) (M=2), A 1,
111


0 z z = +1 z = -1. 2.11 . x(n) N1 n N2 (N1 < N2), N1 N2 , z- X(z) (z)- , , , z=0 z=. -, , () , , -. - , . () () (), (..N1=-), (..N2=) . , x(n) 0 N1 n < , z- X(z) R1. R1 X(z), . R1<1 . . : . x(n) y(n) : y(n) = F[y(n-1), y(n-2),..., x(n), x(n-1),...], .. y(n)

112


, ( ). y(n) = F[x(n), x(n-1), ...], .. . . Z - , , Y(z)=X(z)H(z) - z-1

(22) (22)

(23) z Y(z) z- y(n-k), , z- (23),
-k

(24) b0=1, (24) y(n):

(25) .7
113


.7. (25).





2.12 (). -. 1. - arg H(ej). 2. - . 3. -, , .. , . -: 1. , , N. . 2. - - . - ( ) H(ej) ,
114


: (26) (27) , h(n) ( (7) (9)). (26) - . -, , (26), , (26) . -, , -, .. . , , H(ej) , . -, H(ej), (26) n= ± M. , , . -, w(n), . h(n) (26) , . .8. H(ej) h(n). w(n) W(ej). W(ej) , , , . - W(ej), (n) = h(n)w(n), ­M n M. .8 (n),
115


(ej), , H(ej) W(ej), (n) h(n) w(n). , .8 g(n), (n) .

.8. .
116


, : 1. , , . . 2. . . , , . , , .. . , , , , . , , "" . , , . . . N- , ( ) ,

(, N -)
117










(28) (28) .9 N = 25.

.10. . "" . , ,

118


0 1. =0.5 , =0.54 . WH(ej) WR(ej):

(29) .10 WH(ej), (=0.54, N=25), ­ . =4/N , .10 . , . , = 0.54, .. , 99.96 % , 40 ( 14).

119


.10. =0.54. -. , , , .. . . , :

(30) - , , I0(x) - . , ,

. -, . .

120


- ( ) - h(n), () H(k).

(32) , , , H(k), , z- , N- , .. (33) , z- - (33) z--.

(34) (34) , N ( ) , . .11() ( )
121


(). .11() .

.12. .

2.13 (). , -: , . - . , . , - , , .
122


:

e ( ) . - -

123


H z- - (. (14),(17))

(35) ai , . (bi ai (35) ), - , . , . , ( z- , s- ). s- . :

(36) . ( s-), ( s), (
124


), ( ) ( ). (..) . , ( )

(37) ai bi (, , ci di) .

(38) x(t) y(t) - . (37) : 1) . , (38 ) , , . , z- . 2) . , .
125


3) . s- :



z-



j s- z-., , o . 4) z-. s- z-. ( ) s=-a s ( ) z=e-aT z, T .

2.14 . . . ( ) . : (() ) 1. ; 2. (, ) - . 3. . , , . ( , ..
126


, ). () : , . , ) -e , , . , , ( , , ). ( ). . , , , . , . , , - , - . , , , , , , . . . , . ( ) - , . .
127


, ( ) . , , , ( ). , . , . , , , . . , RC- ( )- . : 1. - - , .. . - . 2. - . 3. - . 4. () - , . . , , . ,
128


. , . , , , , , . : 1. : 1.1 () ; 1.2 ( ( )); 1.3 ( ) (); 1.4 , , ; 1.5 ( ). 1.6 (IIR) ( (Infinite Impulse Response); 2. : 2.1 ( , ( ) LC - ); 2.2 ; 2.3 , ; 2.4
129


2.5 , . 2.6 (FIR) ( (Finite Impulse Response)) . . (), , . , ( ). , 60- ( - -), N*N N*Log(N), N - . , , (), . , , , , .. - , - ( 20% ). ( ) . , .

130


3. N1 " ". FDAS21K. . , , . - . - -. : - - ; - - . ADSP21K, INCLUDE , . , INCLUDE, , - -, . ASM21K LNK21K , . SIM21K , . , EZ-Lab21K, .
131


EZ-Lab21K , 32 ADSP2181, , , . , . . . 1. , . 2. , 1, - .

: - . 6; - . 12; : - ; - ;
132


: -- ; -- ; -- . . : -- ; -- 2 ; -- . : -- , ; -- , ; -- . 3. , 2, -.

133


: - ; - ; : - ; - . 4. , 3, .

134


: - ; - ; : - , , ; - , ; - c . N2 " ADSP2181 ". ) SIN(x). labsin.c (c. 2). 48000 (. 0xc85c, b.init initcmds ) , SIN . labsin.c : , fr[10], (1 -- 100, 200, 300, 400, 500, 600,700, 800, 900, 1000), (2 -- 10, 20, 30, 40, 50, 60, 70, 80, 90, 100), ; amp=30000; SIN ; SIN -- void count(int f);
135


INTERRUPT, ie_flg; 2; 1 , 2; (INTERRUPT). ) . filstud.c (. 3). filstud.c : , (FIR) c ; SIN 2 ( 10, 20, 30, 40, 50, 60, 70, 80, 90, 100); HEXTODEC.exe : HEXTODEC.exe { } { }; INCLUDE ; fir( ); INTERRUPT;
136


SIN ; . :

1. - 2 50 10 20 5 . 2. . 3 . 3. - 1 . 1 4 .

4. 20 5 50 10 . 1. () . ,1995 . 2. . ., .. , , 1978. 3. - , . , , 2001 .
137


1. x(t) , XF(i) ||>2B; B x(t) , t . . x(t)

.. x(t) t x(tk) tk, 1/(2B). 2 SIN. #include "cdef2181.h" #include "math.h" #define MAX_INT (32767) #define bufset( buf, val, size) \ ( { int _i; for( _i=0; _i < size; _i++) buf[ _i] = val; } ) const int amp=10000; const float pi=3.141592654; int n=0, fr_num=0, sig=0, i=0, STOP_FLG = 0; /* 1 - stop count */ int CHAN = 1; /* current channel to output */ int fr[10] = {100,200,300,400,500,600,700,800,900,1000}; int num[1000]; /* adc/dac flags & buffers */ int volatile tx_flg = 0; /* adc input int. flag */
138


int volatile rx_flg = 0; /* dac output int. flag */ int volatile ie_flg = 0; /* button IRQE pressed flag */ extern volatile int rx_buf[3]; /* adc input data buffer */ extern volatile int tx_buf[3]; /* dac output data buffer */ void init_num() {int i; for(i=0;i<1000;i++) num[i]=0; } void count(int f) { } void main() { const int SYNC_HIGH = 30000, /* output sync high value */ SYNC_LOW = 0; /* output sync low value */ extern void ez_init(); ez_init(); /* init ezkit sport and codec */ init_num(); count(fr[0]); /* infinite loop */ while (1) { if(ie_flg) /* button pressed? */ { ie_flg = 0; asm("toggle fl1;"); STOP_FLG = (STOP_FLG)? 0 : 1; /* if( ! STOP_FLG)*/ init_num(); if(++fr_num>9) fr_num=0; count(fr[fr_num]); /*CHAN=0;*/ }; if(rx_flg) { rx_flg = 0; if( ! STOP_FLG) { register int D; D = rx_buf[2]; }
139

/* data received? */

/* data from adc2 */


}; if (tx_flg) /* previous data transmitted? */ { tx_flg = 0; tx_buf[1] = (CHAN == 0)? SYNC_HIGH : SYNC_LOW; /* sync to dac1 */ CHAN=1; tx_buf[2] = num[i]; if(++i>fr[fr_num]) i=0; }; } } 3 . #include "cdef2181.h" #include #define MAX_INT (32767) /* adc/dac flags & buffers */ int volatile tx_flg = 0; /* adc input int. flag */ int volatile rx_flg = 0; /* dac output int. flag */ int volatile ie_flg = 0; /* button IRQE pressed flag */ extern volatile int rx_buf[3]; /* adc input data buffer */ extern volatile int tx_buf[3]; /* dac output data buffer */ #define COEFFS 63 #define IIR 0 #define FIR 1 int pm coeffs1[COEFFS] = { #include "p.h" }; /* see p.L-16 */ extern int state[COEFFS+1]; int y; /* output data void main() {
140

/* data to dac2 */

/* while(1) */

*/


const int SYNC_HIGH = 30000, /* output sync high value */ SYNC_LOW = 0; /* output sync low value */ int CHOOSE_FLG = 0; /* choose filtr : 0-IIR; 1-FIR */ int i,flag_sig=0; int f_f=1; extern void ez_init(); ez_init(); /* infinite loop */ while (1) { if(ie_flg) /* button pressed? */ { ie_flg = 0; asm("toggle fl1;"); f_f++; if (f_f==7) { f_f=1; /*CHOOSE_FLG = (CHOOSE_FLG)? IIR : FIR;*/ } }; if(rx_flg) /* data received? */ { rx_flg = 0; /* if( ! STOP_FLG) */ { register int D; D = rx_buf[2]; /* data from adc2 */ /* WORK AROUND WITH D VALUE */ switch(f_f) { case 1: y = fir ( D , coeffs1 , state , COEFFS ); output */ break;
141

/* init ezkit sport and codec */

/* y holds the filtered


} }; if( tx_flg) { tx_flg = 0; tx_buf[1] = y; tx_buf[2] = y; } }; } } /* while(1) */ /* previous data transmitted? */

/* data to dac2 */

142