tnxls bai2 duy

26
BÀI 2: THỰC HIỆN CÁC BỘ LỌC IIR TRÊN KIT C6713 DSK I- Thực hiện bộ lọc IIR dạng ghép cascade các tầng bậc 2 1. Thiết kế bộ lọc IIR thông thấp loại Chybyshev 2 Các thông số thiết kế: Bậc bộ lọc : 10. Cạnh dải chắn : 1.6Khz. Độ gợn dải chắn : 60 dB. Tần số lấy mẫu : 8Khz. a. Thiết kế bộ lọc trên MatLab - Nhập dòng lệnh >>Sptool trên cửa sổ Command Window - Nhập các thông số yêu cầu của bộ lọc & Design, ta có đáp ứng theo tần số như sau: 1

Upload: luckyboybk-fc

Post on 17-Dec-2015

251 views

Category:

Documents


1 download

DESCRIPTION

f

TRANSCRIPT

BI 2: THC HIN CC B LC IIR TRN KIT C6713 DSKI- Thc hin b lc IIR dng ghp cascade cc tng bc 21. Thit k b lc IIR thng thp loi Chybyshev 2 Cc thng s thit k:

Bc b lc : 10.

Cnh di chn : 1.6Khz.

gn di chn : 60 dB.

Tn s ly mu : 8Khz.

a. Thit k b lc trn MatLab Nhp dng lnh >>Sptool trn ca s Command Window Nhp cc thng s yu cu ca b lc & Design, ta c p ng theo tn s nh sau:

Trong ca s Sptool : i tn cho b lc l lp1600 v xut ra vng WorkSpace T ca s Command Window, ta thc hin cc lnh sau xut ra ma trn sos (Second Order Section), dng np ln KIT.

>> [z,p,k]=tf2zp(lp1600.tf.num,lp1600.tf.den);

>> sos = zp2sos(z,p,k);

>> sos = sos*2^15;

>> format short g,sos

sos =

277.43 505.7 277.43 32768 -5205.4 685.96

32768 28730 32768 32768 -9808.1 4566.4

32768 1776.6 32768 32768 -16993 10999

32768 -13190 32768 32768 -24574 18719

32768 -19515 32768 32768 -31397 27563

Vic nhn sos vi 2^15 l do b x l s lng t ha cc h s vi mt s lng bit hu hn v vic nhn ln s gim i sai s. Lnh format short g,sos cc phn t trong ma trn sos hin th s khng c du chm ng 5 digits.b. Thc hin b lc ln KIT C713 DSK: M CCS ln, Connect vi KIT, ri Open Project c tn IIR.pjt c sn trong th mc C:\\CCStudio_v3.1\myprojects\IIR. Trong ca s Project View, tab File View, m tp tin coefficients.h(trong Includes). Nhp cc thng s cho b lc nh sau :

Thc hin bin dich chng trnh : Project ( ReBuild All Load file *.out : File ( Load Program dn ti file IIR.out trong th mc dubug.

Chy chng trnh : Debug ( Runc. Kim tra b lc thc hin : Thay i tn s ng vo tm tn s ct, ta quan st tn hiu trn DSP_Tools.exe, quan st ti khi bin cc i gim xung ln, thu c f_ct = 1.55 Khz. Kim tra b lc vi cc tn s vo iu chnh t dao ng k : 0.5 Khz 1 Khz:

2 Khz:

Nhn xt : B lc p ng c yu cu thit k. Cc tn hiu c tn s ngoi 1.55 Khz tn hiu suy hao ng k, v gn nh b trit tiu vi tn s vo l 2 Khz v ln hn.

2. Thit k b lc IIR thng di loi Chybyshev 2 Cc thng s thit k:

Bc b lc : 36 (Vi Matlab 2007 ta nhp trc tip bc l 36).

Tn s di chn : 1.6Khz v 2.4Khz.

gn di chn : 100 dB.

Tn s ly mu : 8Khz.

d. Thit k b lc trn MatLab

Nhp dng lnh >>Sptool trn ca s Command Window Nhp cc thng s yu cu ca b lc & Design, ta c p ng theo tn s nh sau:

Trong ca s Sptool : i tn cho b lc l bp2000 v xut ra vng WorkSpace. T ca s Command Window, ta thc hin cc lnh sau xut ra ma trn sos (Second Order Section), dng np ln KIT.

>> [z,p,k]=tf2zp(bp2000.tf.num,bp2000.tf.den);

>> sos = zp2sos(z,p,k);

>> sos = sos*2^15

sos =

1.602 3.0947 1.602 32768 3274.7 12928

32768 -63298 32768 32768 -3274.7 12928

32768 -51261 32768 32768 -8790.8 15119

32768 51261 32768 32768 8790.8 15119

32768 39945 32768 32768 12349 18265

32768 -39945 32768 32768 -12349 18265

32768 32302 32768 32768 14310 21411

32768 -32302 32768 32768 -14310 21411

32768 -27364 32768 32768 -15280 24186

32768 27364 32768 32768 15280 24186

32768 -24164 32768 32768 -15730 26536

32768 24164 32768 32768 15730 26537

32768 22117 32768 32768 15963 28537

32768 -22117 32768 32768 -15963 28537

32768 -20895 32768 32768 -16162 30299

32768 20895 32768 32768 16162 30299

32768 20322 32768 32768 16437 31947

32768 -20322 32768 32768 -16437 31947

Vic nhn sos vi 2^15 l do b x l s lng t ha cc h s vi mt s lng bit hu hn v vic nhn ln s gim i sai s.

e. Thc hin b lc ln KIT C713 DSK:

M CCS ln, Connect vi KIT, ri Open Project c tn IIR.pjt c sn trong th mc C:\\CCStudio_v3.1\myprojects\IIR. Trong ca s Project View, tab File View, m tp tin coefficients.h(trong Includes).

Nhp cc thng s cho b lc nh sau :

//coefficients.cof IIR bandpass coefficient file, centered at 2000 Hz#define stages 18 //number of 2nd-order stagesint a[stages][3]={ //numerator coefficients {1.602,3.0947, 1.602},

//a10, a11, a12 for 1st stage{32768,-63298, 32768},

//a20, a21, a22 for 2nd stage{32768,-51261, 32768},

//a30, a31, a32 for 3rd stage{32768, 51261, 32768},

//a40, a41, a42 for 4th stage{32768, 39945, 32768} ,{32768,-39945, 32768},{32768, 32302, 32768},{32768,-32302, 32768},{32768,-27364, 32768},{32768, 27364, 32768},{32768,-24164, 32768},{32768, 24164, 32768},{32768, 22117, 32768},{32768,-22117, 32768},{32768,-20895, 32768},{32768, 20895, 32768},{32768, 20322, 32768},{32768,-20322, 32768} };int b[stages][2]={ //*denominator coefficients {3274.7,12928},

//b11, b12 for 1st stage{-3274.7,12928},

//b21, b22 for 2nd stage{-8790.8,15119},

//b31, b32 for 3rd stage{8790.8, 15119},

//b41, b42 for 4th stage{12349, 18265},{-12349, 18265},{14310, 21411},{-14310, 21411},{-15280, 24186},{15280, 24186},{-15730, 26536},{15730, 26537},{15963, 28537},{-15963, 28537},{-16162, 30299},{16162, 30299},{16437, 31947},{-16437, 31947}

};//b51, b52 for 5th stage

Thc hin bin dich chng trnh : Debug ( ReBuild All Load file *.out : File ( Load Program dn ti file IIR.out trong th mc dubug.

Chy chng trnh : Debug ( Runf. Kim tra b lc thc hin : Thay i tn s ng vo tm tn s ct, ta quan st tn hiu trn DSP_Tools.exe.

Kim tra b lc vi cc tn s vo iu chnh t dao ng k : 1 Khz:

1.8 Khz:

2Khz:

2.2 Khz:

3Khz:

Nhn xt: Vi cc p ng tng ng vi tn s vo nh trn, b lc thng di tha yu cu.II- To hai tone bng cch s dng hai phng trnh sai phn bc 2

Trong th nghim ny, chng ta s to v cng 2 tones bng phng php phng trnh sai phn. Tn hiu ra cng c lu trong b nh v c v bng CCS. Phng trnh sai phn dng to 1 sng sine l:

y(n) = Ay(n-1) y(n-2)trong :

A = 2cos()

y(-1) = - sin()

y(-2) = - sin()

1. To hai tone c tn s 1.5Khz & 2Khz Tnh A, y(-1), y(-2)

Tn s 1.5 Khz:A1 = 2cos()* = 2cos()* = 12540y1(-1) = - sin()* = -1517y2(-2) = - sin()* = -11585 Tn s 2 Khz:A2 = 2cos()* = 0y2(-1) = - sin()* = -16384

y2(-2) = - sin()* = 0 Chy CCS v m project two_tones.pjt trong th mc C:\\CCStudio_v3.1\myprojects\two_tones. M tp tin ngun ca chng trnh two_tones.c. Chng ta gn cc gi tr va tnh ton to ra 2 tones l 2 tn s trn://two_tones.c Generates/adds two tones using difference equations

#include "DSK6713_AIC23.h"

//codec-DSK support fileUint32 fs=DSK6713_AIC23_FREQ_8KHZ;//set sampling rateshort sinegen(void);

//for generating toneshort output;

//for outputshort sinegen_buffer[256]; //buffer for output dataconst short bufferlength = 256; //buffer size for plot with CCSshort i = 0;

//buffer count index

short y1[3] = {0,-15137,-11585}; //y1(0),y1(-1),y1(-2) for 1.5kHzconst short A1 = 12540; //A1 = 2coswT scaled by 2^14short y2[3] = {0,-16384,0}; //y2(0),y2(-1),y2(-2) for 2kHzconst short A2 = 0; //A2 = 2coswT scaled by 2^14

interrupt void c_int11() //ISR{ output = sinegen();

//out from tone generation function sinegen_buffer[i] = output;

//output into buffer output_sample(output); //output result i++;

//increment buffer count if (i == bufferlength) i = 0;//if buffer count = size of buffer return;

//return to main}

short sinegen()

//function to generate tone{ y1[0] =((y1[1]*A1)>>14)-y1[2]; //y1(n)= A1*y1(n-1)-y1(n-2) y1[2] = y1[1]; //update y1(n-2) y1[1] = y1[0]; //update y1(n-1)

y2[0] =((y2[1]*A2)>>14)-y2[2]; //y2(n)= A2*y2(n-1)-y2(n-2) y2[2] = y2[1]; //update y2(n-2) y2[1] = y2[0]; //update y2(n-1)

return (y1[0] + y2[0]); //add the two tones}

void main(){ comm_intr();

//init DSK, codec, McBSP while(1);

//infinite loop}

Thc hin bin dich chng trnh : Debug ( ReBuild All Load file *.out : File ( Load Program dn ti file two_tones.out trong th mc dubug.

Chy chng trnh : Debug ( Run Xem ph bin FFT ca tn hiu ra: View ( Graph ( Time/FrequencyThit lp cc thng s nh sau xem c ph:

Ph thu c nh sau:

Kim chng kt qu bng DSP_tools :Nhn xt : Ph thu c l 2 ngn ph ti tn s 1.5 Khz & 2 Khz . B lc thc hin ng.

2. To hai tone c tn s 697Hz & 1209Hz Tnh A, y(-1), y(-2)

Tn s 697Hz:A1 = 2cos()* = 2cos()* = 27980y1(-1) = - sin()* = -8527y2(-2) = - sin()* = -14563 Tn s 1209Hz:A2 = 2cos()* = 19073y2(-1) = - sin()* = -13323y2(-2) = - sin()* = 15509 Chy CCS v m project two_tones.pjt trong th mc C:\\CCStudio_v3.1\myprojects\two_tones. M tp tin ngun ca chng trnh two_tones.c. Chng ta gn cc gi tr va tnh ton vo 2 v tr nh du nh phn trc. Ph trn CCS thu c nh sau:

Kim chng bng DSP_Tools:

Nhn xt: Kt qu thu c l 2 tone c tn s 697 Hz v 1209 Hz , y l 1 t hp tn s to nn m thanh khi nhn phm 1 trn in thoi. y l k thut to tn hiu DTMF (Dual tone multifrequency).III- To tn hiu hnh sine bng mt phng trnh sai phn

Mt tn hiu sine cng c th to ra bng 1 phng trnh sai phn khc:

Y(n) = Ay(n-1) + By(n-2) + Cx(n-1) vi B= -1.

n = 0, x(n-1) = x(0) = 1.

n = 1: y(1) = Ay(0) + By(-1) + Cx(0) = C; vi y(0) = 0, y(-1) = 0.

n 2: y(n) = Ay(n-1) y(n-2)

H s: A = 2cos(), C = sin() , Xc nh tn s ng ra: M CCS, Open project c tn l sinegenDE.pjt ti th mc C:\\CCStudio_v3.1\myprojects\sinegenDE Bin dch chng trnh v chy.

Quan st ph bng DSP_Tools xc nh c tn s ng ra l 2Khz: To mt tone c tn s 1Khz: Tnh A, y[3]

A = 2cos()* = 2cos()* = 23710y(0) = 0y(1) = C = sin()* = sin()* = 11585y(2) = (Ay(n-1) y(n-2) )*= AC* = 2cos() sin()* = sin()* = 16384 Trc khi thc hin ln KIT, Halt chng chnh CCS li, m tp tin ngun chnh sinegenDE.c v in li cc gi tr va tnh ton vo:

//SinegenDE.c Generates a sinewave using a difference equation

#include "dsk6713_aic23.h"

//codec-DSK file supportUint32 fs=DSK6713_AIC23_FREQ_8KHZ;

//set sampling rateshort y[3] = {0,11585,16384}; //y(0),y(1),y(2)const short A = 23710; //A = 2*coswT * 2^14int n = 2;

interrupt void c_int11()

//ISR{ y[n] = ((A*y[n-1])>>14) - y[n-2]; //y(n)=Ay(n-1)-y(n-2) y[n-2] = y[n-1];

//update y(n-2) y[n-1] = y[n];

//update y(n-1) output_sample(y[n]);

//output result return;

//return to main}

void main(){ comm_intr();

//init DSK, codec, McBSP while(1);

//infinite loop}

Bin dch chng trnh v chy.

Quan st ph bng DSP_Tools xc nh c tn s ng ra l 1Khz:

14