THỰC HIỆN THÍ NGHIỆM:

Một phần của tài liệu Báo cáo thí nghiệm xử lý số tín hiệu (Trang 29 - 35)

a) THỰC HIỆN MẠCH ĐIỀU CHẾ PAM TRÊN KIT C6713 DSK

 Trong thí nghiệm này, mạch điều chế PAM 4 mức, 8 mức và 16 mức sẽ được lần lượt thực hiện trên kit DSP.

(i) 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

 Hãy xem xét trường hợp PAM 16 mức (16-PAM). Trong trường hợp này, để biểu diễn 16 mức cần 4 bits, do đó mỗi ký hiệu sẽ có chiều dài 4 bits. Để đạt được tốc độ ký hiệu mong muốn, mẫu vào được chia làm các đoạn dài 4 bits. Như vậy, mỗi mẫu vào sẽ gồm 4 đoạn. Việc xử lý mẫu vào bao gồm việc áp dụng mặt nạ và dịch. Khối ký hiệu đầu tiên nhận được bằng cách dùng mẫu vào AND với mặt nạ 0x000F để lấy 4 bit LSB (0x000F là biểu diễn trong hệ thập lục phân của 0000 0000 0000 1111, khi AND một mẫu với mặt nạ này, chỉ 4 bit cuối của mẫu được giữ lại, tạo thành 1 ký hiệu). Khối ký hiệu thứ hai nhận được bằng cách dịch mẫu ban đầu sang phải 4 bit và áp dụng lại mặt nạ. Các bước này được lặp lại cho đến khi hết chiều dài của mẫu vào và tạo ra 4 ký hiệu.  Do mỗi ký hiệu có chiều dài 4 bit nên sẽ có tất cả 16 ký hiệu. 16 ký hiệu này được ánh xạ thành 16

 Cùng một cách thực hiện của bộ phát được áp dụng cho PAM 4 mức (4-PAM) và 8 mức (8- PAM) với sự khác nhau về mặt nạ, dịch và bảng tra. Đối với 8-PAM, 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à một bội số 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.

b) ĐIỀU CHẾ PAM 8 MỨC:

Hãy viết lại đoạn chương trình của file.c đã sửa vào đây. Giải thích và vẽ một vài dạng sóng điều chế thu được để kiểm chứng. // 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[8] = {0x7FFF, 0x5B6D, 0x36DB, 0x1249, -0x1249, -0x36DB, - 0x5B6D, -0x7FFF};

int out_buffer[256]; int i=0;

interrupt void c_int11() //interrupt service routine {

int sample_data; if (i_PAM==60) {

sample_data = 0x0007; //inputs data sample_data = sample_data >> 1 i_PAM=0;

j_PAM=0; }

masked_value = sample_data & 0x0007; output = data_4PAM[masked_value]; output_sample(output);

out_buffer[i++] = output; if (i==256)

i = 0; j_PAM++; if (j_PAM==12) { j_PAM=0; sample_data = sample_data >> 3; } i_PAM++; return; } void main() { i_PAM=0;

comm_intr(); //init DSK, codec, McBSP while(1); //infinite loop

}

Giải thích:

 Do đây mà PAM 8 mức để biểu diễn 8 mức mỗi symbol cần 3 bit mà input data lại là 16 bi1t  cần loại bỏ 1 bit LSB để còn lại 15 bit  dùng lệnh dời bit

sample_data = sample_data>>1;  Ta dùng mặt nạ để lấy 3 bit cuối bằng cách AND data & 0x0007

 Sau mỗi lần xuất data ra thì sample_data dời qua phải 3 bit tức là lấy symbol kế tiếp. Do đó đổi lệnh sau j_PAM =0 thành:

sample_data = sample_data >> 3;

 Đồng thời số lần xuất ra ứng với mỗi data input – mỗi mẫu là 5 symbols*12 = 60  i_PAM = 60 KẾT QUẢ:

c)

GIẢI THÍCH CODE: // 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[8] = {0x7FFF, 0x5B6D, 0x36DB, 0x1249, -0x1249, -0x36DB, - 0x5B6D, -0x7FFF}; int out_buffer[256];

int i=0;

interrupt void c_int11() //interrupt service routine {

int sample_data; if (i_PAM==48) {

sample_data = 0x0718; //inputs data i_PAM=0;

j_PAM=0; }

masked_value = sample_data & 0x000F; output = data_4PAM[masked_value];

output_sample(output); out_buffer[i++] = output; if (i==256) i = 0; j_PAM++; if (j_PAM==12) { j_PAM=0; sample_data = sample_data >> 4; } i_PAM++; return; } void main() { i_PAM=0;

comm_intr(); //init DSK, codec, McBSP while(1); //infinite loop

Giải thích:

 Để biểu diễn được PAM_16 cần 4 bit  Lúc này 1 datainput sẽ có 4 symbols  Ta dùng mặt nạ để lấy 4 bit cuối bằng cách AND data & 0x000F

 Sau mỗi lần xuất data ra thì sample_data dời qua phải 4 bit tức là lấy symbol kế tiếp. Do đó đổi lệnh sau j_PAM = 0 thành

sample_data = sample_data >> 4;

 Đồng thời số lần xuất ra ứng với mỗi data input – mỗi mẫu là 4 symbols*12 = 48  i_PAM = 48 (số 12 ở đây tức là 1 symbol sẽ xuất hiện 12 lần  độ rộng xung vuông)

Một phần của tài liệu Báo cáo thí nghiệm xử lý số tín hiệu (Trang 29 - 35)

w