
BÀI 4: TH C HI N M T S M CH ĐI U CH TRÊN KITỰ Ệ Ộ Ố Ạ Ề Ế
C6713 DSK
I- Th c hi n đi u ch PAM trên kit C6713 DSKự ệ ề ế
Gi i thu t đi u ch :ả ậ ề ế
M i m u vào đi u ch g m 16 bits. Tùy vào lo i đi u ch PAM, m t m t nỗ ẫ ề ế ồ ạ ề ế ộ ặ ạ
(mask) thích h p đ c s d ng. Các m u nh p vào s đ c AND v i m t n vàợ ượ ử ụ ẫ ậ ẽ ượ ớ ặ ạ
d ch v i s l n thích h p đ n h t chi u dài chu i. T ng ng v i m i ký hi uị ớ ố ầ ợ ế ế ề ỗ ươ ứ ớ ỗ ệ
(symbol) trên 1 m u nh p vào và lo i đi u ch ta có m c đi n áp khác nhau, đẫ ậ ạ ề ế ứ ệ ể
d ng sóng xu t sau khi ra b A/D có d ng sóng vuông, m i m c s đ c xu t raạ ấ ộ ạ ỗ ứ ẽ ượ ấ
12 l n tr c khi chuy n sang symbol k ti p. Sau đây chúng ta s đi vào c thầ ướ ể ế ế ẽ ụ ể
t ng lo i đi u ch .ừ ạ ề ế
1. Đi u ch PAM 4 m cề ế ứ
- C p ngu n đi n cho kit và ch y ch ng trình CCS trên máy tính.ấ ồ ệ ạ ươ
- M Project ởPAM.pjt folder ởC:\Program Files\CCStudio_v3.1\MyProjects\PAM4
- Trong c a s File View, m t p tin ử ổ ở ậ PAM4.c, n i dung t p tin này nh sau:ộ ậ ư
// PAM
#include "DSK6713_aic23.h"
Uint32 fs=DSK6713_AIC23_FREQ_8KHZ;
#include <math.h>
//Initialization:
int i_PAM;
int j_PAM;
int k;
int masked_value, output;
int data_4PAM[4] = {0x7FFF, 0x2AAA, -0x2AAB, -0x8000};//data table for 4-PAM MOD
int out_buffer[256];
int i=0;
interrupt void c_int11() //interrupt service routine
{
int sample_data; //4-PAM Modulator: Assigns sampled data coming from an input
//source to 4 predetermined voltage levels.
if (i_PAM==96) //new input is taken once every 96 samples (8 shifts x 12 repeated
outputs)
{
sample_data = input_sample(); //inputs data
i_PAM=0;
j_PAM=0;
1
1
2
3
4

}
masked_value = sample_data & 0x0003; //masks input sample as 2-bit segments
output = data_4PAM[masked_value]; //gets corresponding level from table
output_sample(output); //outputs corresponding voltage level 12 times
out_buffer[i++] = output;
if (i==256)
i = 0;
j_PAM++; //repeated output counter
if (j_PAM==12) //checks if repetition is over
{
j_PAM=0;
sample_data = sample_data >> 2; //shifts input to mask next segment
}
i_PAM++;
return;
}
void main()
{
i_PAM=0;
comm_intr(); //init DSK, codec, McBSP
while(1); //infinite loop
}
Gi i thích code:ả
+ Trong ch ng trình này hàm ươ main() đ t giá tr bi n i_PAM = 0 và kh i đ ng kit.ặ ị ế ở ộ
Sau đó s th c hi n m t vòng l p vô h n v i l nh ẽ ự ệ ộ ặ ạ ớ ệ while(1) .
+ Khi có tín hi u xung l y m u (t n s 8Khz), ng t 11 x y ra và trình ph c v ng tệ ấ ẫ ầ ố ắ ả ụ ụ ắ
c_int11() đ c g i. Trong trình ph c v ng t này, d li u vào đ c đ c vào bi nượ ọ ụ ụ ắ ữ ệ ượ ọ ế
sample_data (b ng l nh ằ ệ sample_data = input_sample(), ô chú thích s 3ố). M u dẫ ữ
li u này bi u di n d ng s nguyên 16 bits có d u.ệ ể ễ ở ạ ố ấ
+ Do đây th c hi n đi u ch PAM 4 m c, mà đ bi u di n đ c 4 m c thì c n 2ở ự ệ ề ế ứ ể ể ễ ượ ứ ầ
bit. Do đó m u vào s đ c chia làm 8 ký hi u (symbol), m i ký hi u 2 bit. Đ th cẫ ẽ ượ ệ ỗ ệ ể ự
hi n vi c chia này, m u d li u đ c AND v i m t n ệ ệ ẫ ữ ệ ượ ớ ặ ạ 0x0003 (ô chú thích s 4 ố)để
l y 2 bit LSB c u m u d li u. 2 bit này đ c ánh x thành 1 trong 4 m c đi n ápấ ả ẫ ữ ệ ượ ạ ứ ệ
theo b ng sau:ả
B ng tra 4 m c:ả ứ
Kh i kýố
hi uệM c đi n áp (d ngứ ệ ạ
hex)
M c đi n áp (d ng th pứ ệ ạ ậ
phân)
00 0x7FFF 32767
01 0x2AAA 10922
10 -0x2AAB 10923
2
5

11 -0x8000 32768
4 giá tr này đ c khai báo đ u ch ng trình (ị ượ ở ầ ươ ô chú thích s 1ố). M i symbol s choỗ ẽ
ra 1 m c đi n áp. M i m c đ c xu t ra 12 l n tr c khi chuy n sang m c ng v iứ ệ ỗ ứ ượ ấ ầ ướ ể ứ ứ ớ
symbol k ti p. Bi n đ m j_PAM đ đ m s l n xu t ra cho đ 12 l n. Nh v yế ế ế ế ể ế ố ầ ấ ủ ầ ư ậ
ng v i m u vào 16 bit, ta có 8 symbol. M i symbol xu t 12 l n nên s l n xu t raứ ớ ẫ ỗ ấ ầ ố ầ ấ
ng v i m i m u là 8x12 = 96 đ c th hi n b i bi n đ m i_PAM (ứ ớ ỗ ẫ ượ ể ệ ở ế ế ô chú thích s 2ố).
- Biên d ch và n p ch ng trình lên kit.ị ạ ươ
- Ki m tra k t qu trên Plot c a CCS. ể ế ả ủ
Vi c s d ng máy phát sóng r t khó đ ki m ch ng k t qu nên ta s ệ ử ụ ấ ể ể ứ ế ả ẽ gán cho
sample_data m t giá tr c th 16 bit (d ng s HEX, ộ ị ụ ể ạ ố ô chú thích s 3ố).
L u ý: thông s l a ch n cho vi c th hi n d ng sóng nh sauư ố ự ọ ệ ể ệ ạ ư :
•sample_data = 0x00E4 = 0b00 00 00 00 11 10 01 00
3

•sample_data = 0x001B = 0b00 00 00 00 00 01 10 11
4

•sample_data = 0x1BE4 = 0b00 01 10 11 11 10 01 00
Nh n xét :ậ K t qu thu đ c đúng v i lý thuy t, t ng ng v i biên đ l n nh t là ế ả ượ ớ ế ươ ứ ớ ộ ớ ấ 00,
âm nh t là ấ11.
2. Đi u ch PAM 8 m cề ế ứ
- Th c hi n l i t ng t nh PAM 4 m c.ự ệ ạ ươ ự ư ứ
- M Project ởPAM.pjt folder ởC:\Program Files\CCStudio_v3.1\MyProjects\PAM4
- S khác bi t so v i PAM 4 m c là ự ệ ớ ứ m t n , s bit d ch ặ ạ ố ị và b ng traả. Đ i v iố ớ
PAM 8, bit có tr ng s th p nh t (LSB) c a m u vào đ c lo i b đ s bit cònọ ố ấ ấ ủ ẫ ượ ạ ỏ ể ố
l i (15) là b i c a 3. Đi u này gây tác đ ng không đáng k lên d ng sóng đi uạ ộ ủ ề ộ ể ạ ề
ch và d ng sóng khôi ph c l i. Do đó s l n xu t ra ng v i m i m u làế ạ ụ ạ ố ầ ấ ứ ớ ỗ ẫ
(15/3)x12 = 60.
B ng tra 8 m cả ứ :
Kh i kýố
hi uệM c đi n áp (d ng sứ ệ ạ ố
Hex)
M c đi n áp (d ng th pứ ệ ạ ậ
phân)
000 0x7FFF 32767
001 0x5B6D 23405
010 0x36DB 14043
5

