Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 57 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
57
Dung lượng
6,37 MB
Nội dung
[BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA ĐIỆN-ĐIỆN TỬ oOo BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU Nhóm: A08 Cù Xn Đức Nguyễn Khánh Hịa TP HỒ CHÍ MINH - 4/2013 [Type text] CuuDuongThanCong.com Page https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 BÀI 1: THỰC HIỆN CÁC BỘ LỌC FIR TRÊN KIT C6713 DSK Thiết kế lọc FIR chắn dải phương pháp Kaiser Window có thông số sau: a Chiều dài đáp ứng xung N = 89 (Bậc lọc: 88) b Tần số cắt: 2500 2900 Hz c Giá trị β= d Tần số lấy mẫu: kHz Thực lọc lên kit kiểm tra kết Thực lọc matlab: Sau dùng lệnh h=round(bs2700.tf.num*2^15) để lấy thông số nhập vào file coefficient.h ccs Thực lọc : Mở c6713dsk: Kết nối CCS với KIT: Debug Connect [Type text] CuuDuongThanCong.com Page https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 Mở tập tin project có tên FIR.pjt C:\Program Files\CCStudio_v3.1\myproject\FIR Mở tập tin coeficients.h phần include mở rộng thuộc project view Nhập số liệu : N=89, copy ma trận cof từ Array Editor MatLab thay khoảng trắng dấu “,” (Bằng lệnh “Ctr + H”) [Type text] CuuDuongThanCong.com Page https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 Thiết lập thông số Project Build Options Trong thẻ Compiler Trong thẻ Linker [Type text] CuuDuongThanCong.com Page https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 Lúc thư mục C:\Program Files\CCStudio_v3.1\MyProjects\FIR\Debug Sẽ xuất tập tin FIR.out , tập tin ta dung để nạp lên KIT Biên dịch: Project Rebuild All Sau CCS chạy xong : Vào File Load Program dẫn tới file FIR.out Chạy chương trình Debug [Type text] Run : Page CuuDuongThanCong.com https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 Quan sát đáp ứng lọc Graph Time/Frequency Thiết lập thông số Graph Property Dialog sau: [Type text] CuuDuongThanCong.com Page https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 Đáp ứng sau: [Type text] CuuDuongThanCong.com Page https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 Kiểm tra lọc vừa thiêt kế: Kết mô kit: Thiết kế lọc FIR thông dải phương pháp Kaiser Window với thông số sau: a Chiều dài đáp ứng xung: 81 b Tần số cắt: 1500 2000 Hz c Giá trị β = d Tần số lấy mẫu: kHz Thực lọc kiểm tra kết Thực lọc matlab [Type text] CuuDuongThanCong.com Page https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 Sau dùng lệnh h=round(bp1750 f.num*2^15) để lấy thông số nhập vào file coefficient.h ccs Đáp ứng quan sát sau nạp giá trị cof CCS: Kết mô kit: [Type text] CuuDuongThanCong.com Page https://fb.com/tailieudientucntt - [Type text] CuuDuongThanCong.com Page 40 https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 { j_PAM=0; sample_data = sample_data >> 3; } i_PAM++; return; } void main() { i_PAM=0; comm_intr(); while(1); - Biên dịch & nạp chương trình lên kit & kiểm tra kết tương tự PAM sample_data = 0x8D10 = 0b100 011 010 001 000 [Type text] CuuDuongThanCong.com Page 41 https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 sample_data = 0x72EF = 0b011 100 101 110 111 sample_data = 0x3546 = 0b001 101 010 100 011 Nhận xét: Kết thu phù hợp với lý thuyết Điều chế PAM 16 mức - Thực lại tương tự PAM mức [Type text] CuuDuongThanCong.com Page 42 https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 - Mở Project PAM.pjt folder C:\Program Files\CCStudio_v3.1\MyProjects\PAM4 Điều chế PAM 16 mức, để biểu diễn cần bit Do mẫu ta có symbol(16/4), số lần xuất ứng với mẫu 4x12 = 48 Mặt nạ 0x000F để lấy bit LSB mẫu liệu Bảng tra 16 mức: Khối ký hiệu 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Sửa lại tập tin PAM4.c s u: #include "DSK6713_aic23.h" Uint32 fs=DSK6713_AIC23 FREQ 8KHZ; #include //Initialization: int i_PAM; int j_PAM; int k; int masked value, output; int data_4PAM[16] = {0x7FFF, 0x6EEE, 0x5DDD, 0x4CCC, 0x3BBB, 0x2AAA, 0x1999, 0x0888, 0x0889, -0x199A, -0x2AAB, -0x3BBC, -0x4CCD, -0x5DDE, -0x6EEF, -0x8000}; - int out_buffer[256]; int i=0; interrupt void c_int11() //interrupt service routine { int sample_data; if (i_PAM==48) // (4 shifts x 12 repeated outputs) { sample_data = input_sample(); i_PAM=0; j_PAM=0; } masked_value = sample_data & 0x000f; //masks input sample as 4-bit segments output = data_4PAM[masked_value]; output_sample(output); out_buffer[i++] = output; if (i==256) i = 0; [Type text] CuuDuongThanCong.com Page 43 https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 j_PAM++; //repeated output counter if (j_PAM==12) //checks if repetition is over { j_PAM=0; sample_data = sample_data >> 4; //shifts input to mask next segment } i_PAM++; return; } void main() { } i_PAM=0; comm_intr(); while(1); - //init DSK, codec, McBSP //infinite loop Biên dịch & nạp chương trình lên kit & kiểm tra kết tương tự PAM sample_data = 0x3210 = 0b0011 0010 0001 0000 [Type text] CuuDuongThanCong.com Page 44 https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 sample_data = 0xFEDC = 0b1111 1110 1101 1100 sample_data = 0x9687 = 0b1001 0110 1000 0111 Nhận xét: Kết thu phù hợp với lý thuyết II- Thực mạch điều chế PSK kit C6713 DSK Giải thuật điều chế: Mỗi mẫu vào thu lưu vào vị trí nhớ, chứa 16 bits Tùy theo kiểu điều chế PSK (2 hay pha), mặt nạ thích hợp sử dụng Đối với BPSK, [Type text] CuuDuongThanCong.com Page 45 https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 giá trị vào chia làm 16 phần, thành phần bit; QPSK, mẫu vào chia thành dibits (mỗi dibit gồm bit) Việc đạt cách áp mặt nạ tương ứng 0x0001 0x0003 lên mẫu vào Sau đó, mẫu dịch phải bit (BPSK) bit (QPSK) lặp lại cho hết chiều dài mẫu vào Mỗi mẫu vào biểu diễn 16 bits Mỗi mẫu gồm 16 đoạn (với BPSK) đoạn (với QPSK) Do ký hiệu truyền hình sine tạo theo phương pháp số điểm, 64 mẫu (với BPSK) 32 mẫu (với QPSK), mẫu vào lấy vào Điều chế BPSK - Cấp nguồn điện cho kit chạy chương trình CCS máy tính Mở Project BPSK.pjt folder C:\Program Files\CCStudio_v3.1\MyProjects\BPSK Trong cửa sổ File View, mở tập tin BPSK.c, nội dung tập tin sau: //BPSK #include "DSK6713_aic23.h" Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; #include //Initialization: int i_BPSK; int j_BPSK; int k; int masked_value, output; int out_buffer[256]; int i=0; //Data table for BPSK int data_BPSK[2][4]={0, 1000, 0, -1000, 0, -1000, 0, 1000}; //0 degree //180 degree interrupt void c_int11() { int sample_data; if (i_BPSK==64) { sample_data = i put sam i_BPSK=0; j_BPSK=0; } masked val e = sample data & 0x0001; //masks input sample as 1-bit segments output = data_BPSK[masked_value][j_BPSK];//gets corresponding level from table outp t sample(output*10); out b ffer[i++] = output*10; if (i==256) i = 0; j_BPSK++; if (j_BPSK==4) { j_BPSK=0; sample_data = sample_data >> } i_BPSK++; return; } void main() { i_BPSK=64; j_BPSK=0; [Type text] CuuDuongThanCong.com Page 46 https://fb.com/tailieudientucntt comm_intr(); while(1); } Giải thích code: - + Hàm main() đặt biến đếm i_BPSK = 64 j_BPSK = 0, khởi động kit codec chạy vịng lặp vơ tận Khi có xung lấy mẫu, ngắt 11 kích hoạt trình phục vụ ngắt c_int11() gọi + Trình phục vụ ngắt đọc mẫu liệu ngõ vào Mẫu biểu diễn o o 16 bit Khi điều chế BPSK, symbol gồm bit (để phân biệt pha 180 cần bit), đó, mẫu vào chia làm 16 symbol cách sử dụng mặt nạ 0x0001 để lấy bit LSB (ơ thích số 4) Tùy bit hay mà xuất dạng sóng sine có pha tương ứng + Trong chương trình trên, giá trị khai báo biến data_BPSK[2][4] Đây la mảng chiều kích thước 2x4 thể dạng sóng sine: pha 0o {0, 1000, 0, -1000} pha 180o {0, -1000, 0, 1000} (ơ thích số1) Giá trị thể biên độ sóng sine chu kỳ, thời điểm 0,T/4, T/2,3T/4 (T chu kỳ) + Sau xuất đủ điểm, mẫu dịch phải bit (ơ thích số 5) lấy mặt nạ bit LSB Lặp lại hết chiều dài mẫu + Như mẫu vào 16 bit có 16 symbol, symbol tạo chu kỳ sóng sine gồm điểm, với mẫu vào, chương trình xuất 4x16 = 64 mẫu biến đếm i_BPSK giúp xác định phép lấy mẫu vào (ơ thích số & 2’) Tương tự PAM, sửa lệnh sample data = input_sample() thành sample_data = 0x???? (một giá trị 16 bit dạng số hex) biên dịch, nạp chạy chương trình Kiểm chứng kết thu Plot CCS Lưu ý: thông số lựa chọn c o việc thể dạng sóng sau: [Type text] Page 47 CuuDuongThanCong.com https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 sample_data = 0x0F0F = 0b0000 1111 0000 1111 đảo pha đảo pha đảo pha sample_data = 0x5555 = 0b0101 0101 0101 0101 & hoán đổi liên tục nên pha đảo liên tục từ phải sang trái hình sau: sample_data = 0x9999 = 0b1001 1001 1001 1001 Lý giải kết tương tự, ta có hình sau: [Type text] CuuDuongThanCong.com Page 48 https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 Điều chế QPSK - Thực hoàn toàn tương tự điều chế BPSK Điều chế QPSK cần pha: 0o, 90o, 180o, 270o nên cần khai báo mảng 4x4: sóng o sine lệch pha 90 , sóng có điểm Số mẫu cho QPSK 4x8 = 32 Mặt nạ thích hợp để lấy bit (biểu diễn trạng thái) 0x0003, lần dịch bit Do sửa lại tập tin BPSK.c sau : #include "DSK6713 aic23.h" Uint32 fs=DSK6713 AIC23 FREQ_8KHZ; #include //Initialization: int i_BPSK; int j_BPSK; int k; int masked value, output; int out_buffer[256]; int i=0; int data_QPSK[4][4]={0, 1000, 0, -1000, //0 degree 1000, 0, -1000, 0, //90 degree 0, -1000, 0, 1000, //180 degree -1000, 0, 1000, 0}; //270 degree interrupt void c_int11() { int sample_data; //interrupt service routine if (i_BPSK==32) //determines when to get new input { sample_data = input_sample(); //inputs data i_BPSK=0; j_BPSK=0; [Type text] CuuDuongThanCong.com Page 49 https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 } masked_value = sample_data & 0x0003; output = data_QPSK[masked_value][j_BPSK]; output_sample(output*10); out_buffer[i++] = output*10; if (i==256) i = 0; j_BPSK++; if (j_BPSK==4) { j_BPSK=0; sample_data = sample_data } i_BPSK++; return; } void main() { i_BPSK=32; j_BPSK=0; comm_intr(); while(1); } - Sửa lệnh sample_data = input_sample() thành sample_data = 0x???? (một giá trị 16 bit dạng số hex) biên dị h, nạp chạy chương trình Kiểm chứng kết thu Plot CCS sample_data = 0x00E4 = 0x00 00 00 00 11 10 01 00 0o 270o 180o 90o o [Type text] CuuDuongThanCong.com Page 50 https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 sample_data = 0xE4FF = 0x11 10 01 00 11 11 11 11 270o 180o 90o 0o 270 o sample_data = 0x1BE4 = 0b00 01 10 11 11 10 01 00 0o 90o 180o 270o 270o 180o 90o 0o Nhận xét: Kết thu chưa đáp ứng thực theo mã Gray để giảm cực tiểu lỗi o o nhiễu trình truyền Khi pha 270 ứng với 10 180 ứng với 11 Cần điều chỉnh lại code điều chế [Type text] CuuDuongThanCong.com Page 51 https://fb.com/tailieudientucntt ... [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 BÀI : THỰC HIỆN CÁC BỘ LỌC THÍCH NGHI TRÊN KIT C6713 DSK I – Bộ lọc thích nghi dùng để lọc nhiễu hình sine: Cơ sở lý thuyết: - Cấu trúc lọc. ..[BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 BÀI 1: THỰC HIỆN CÁC BỘ LỌC FIR TRÊN KIT C6713 DSK Thiết kế lọc FIR chắn dải phương pháp Kaiser Window có thông số sau: a Chiều... https://fb.com/tailieudientucntt [BÁO CÁO THÍ NGHIỆM XỬ LÍ SỐ TÍN HIỆU] March 21, 2013 6.2 Một lọc FIR multiband Hãy thiết kế thực lên kit C6713 DSK lọc FIR multiband với hai dải thơng có tần số trung tâm 2500