@Thực hiện theo các bước:
1. Cấp nguồn điện cho kit và chạy chương trình Code Compose Studio trên máy tính.
2. Mở project PAM4 ở folder C:\CCStudio_v3.1\MyProjects\PAM4\.
3. Trong cửa sổ File View, double click lên tập tin PAM4.c để mở nó ra
4. Chỉnh sửa chương trình trong tập tin PAM.c sao cho phù hợp với yêu cầu đề bài
5.Sau khi chỉnh sửa chương trình Chọn Project => Rebuild All để biên dịch chương trình.
6.Sau khi biên dịch thành cơng, nạp chương trình lên kit (File => Load Program) và chạy thử chương trình.
7.Sửa câu lệnh sample_data = input_sample( ) thành sample_data = 0x???? (một giá trị bất kỳ 16 bit dạng số hex) rồi biên dịch, nạp và chạy lại chương trình.Vẽ lại dạng sóng xuất ra trong CCS
8.Chọn View =>Graph => Time/Frequency. Thay đổi các tùy chọn trong cửa sổ Graph Property Dialog như sau để vẽ trong miền thời gian
9. Thử một vài giá trị nhập vào và vẽ dạng sóng xuất ra.
@Bài tập:
Hãy chép tồn bộ Folder PAM4 sang một Folder mới và đặt tên tùy ý. Thực hiện các bài tập sau trên folder mới để không làm ảnh hưởng đến phần đã làm.
_Chỉnh sửa lại chương trình trên để thực hiện điều chế PAM 8 mức. Gợi ý:
- Mỗi symbol gồm 3bits. Do mẫu vào có 16 bits, cần bỏ 1 bits LSB (bằng cách dịch phải sample_data 1 bit) để còn lại 15 bits là bội số của 3 và mỗi mẫu sẽ tạo ra 5 symbols.
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
Chỉnh sửa lại chương trình trên để thực hiện điều chế PAM 16 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.
1. Chỉnh sửa đoạn chương trình trên thực hiện với PAM 8 mức
// 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
}
Với sample_data = 0x0007
Ta được dạng sóng điều chế như hình vẽ :
@Giải thích:
Với sample_data = 0x0007
Do thực hiện điều chế PAM 8 mức nên mỗi symbol sẽ gồm có 3 bit.Do mẫu vào gồm có 16 bit nên cần loại bỏ 1 bit LSB bằng cách dịch sang phải sample _data 1 bit với dòng lệnh sample_data = sample_data >> 1 khi đó sample_data cịn lại 15 bit là bội số của 3 và mỗi mẫu sẽ tạo ra 5 symbols
Đầu tiên sample_data = 0000 0000 0000 0111
sample_data = sample_data >> 1 => sample_data=0000 0000 0000 0011 Sample_data AND 0x0007 = 0000 0000 0000 0011 (= 3).
data_8PAM(3) = 0x1249 mức điện áp 0x1249 được xuất ra 12 lần Tiếp theo: sample_data dịch phải 3 bit 0000 0000 0000 0000 Sample_data AND 0x0003 = 0000 0000 0000 0000 ( =0)
data_8PAM(0) = 0x7FFF mức điện áp 0x7FFF được xuất ra 12 lần
- Quá trình tiếp tục cho đến khi hết 16 bit của mẫu vào, tức là dịch 5 lần, mỗi lần xuất 12 lần => số lần xuất tổng cộng i_PAM = 5 x 12 = 60 lần. Sau đó sẽ đọc vào mẫu kế tiếp và thực hiện điều chế.