Điều chế BPSK

Một phần của tài liệu (TIỂU LUẬN) báo cáo THÍ NGHIỆM xử lí số tín HIỆU THỰC HIỆN các bộ lọc FIR TRÊN KIT c6713 DSK (Trang 49 - 54)

II- Thực hiện mạch điều chế PSK trên kit C6713 DSK

1. Điều chế BPSK

- Cấp nguồn điện cho kit và chạy chương trình CCS trên 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 này như sau:

//BPSK#include "DSK6713_aic23.h" #include "DSK6713_aic23.h" Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; #include <math.h> //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 sample() 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 >> 1;

[Type text] Page 46 CuuDuongThanCong.com https://fb.com/tailieudientucntt

}

 Giải thích code:

+Hàm main() sẽ đặt 2 biến đếm i_BPSK = 64 và j_BPSK = 0, khởi động kit và bộ codec rồi chạy một vịng lặp vơ tận. Khi có xung lấy mẫu, ngắt 11 được kích hoạt và trình phục vụ ngắt c_int11() được gọi.

+Trình phục vụ ngắt sẽ đọc một mẫu dữ liệu ở ngõ vào. Mẫu này được biểu diễn bằng 16 bit. Khi điều chế BPSK, mỗi symbol chỉ gồm 1 bit (để phân biệt 2 pha 0o và 180o chỉ cần 1 bit), do đó, mẫu vào sẽ được chia ra làm 16 symbol bằng cách sử dụng mặt nạ 0x0001 để lấy bit LSB (ơ chú thích số 4). Tùy bit này là 0 hay 1 mà xuất ra dạng sóng sine có pha tương ứng.

+Trong chương trình trên, các giá trị được khai báo trong biến data_BPSK[2][4]. Đây la 1 mảng 2 chiều kích thước 2x4 thể hiện 2 dạng sóng sine: pha 0o là {0, 1000, 0, -1000} và pha 180o là {0, -1000, 0, 1000} (ơ chú thích số1). Giá trị này thể hiện biên độ của sóng sine trong 1 chu kỳ, tại thời điểm 0,T/4, T/2,3T/4 (T là chu kỳ).

+Sau khi xuất ra đủ 4 điểm, mẫu được dịch phải 1 bit (ơ chú thích số 5) và lấy mặt nạ bit LSB. Lặp lại cho đến hết chiều dài mẫu.

+Như vậy mỗi mẫu vào 16 bit có 16 symbol, mỗi symbol sẽ tạo ra 1 chu kỳ sóng sine gồm 4 điểm, do đó với mỗi mẫu vào, chương trình xuất ra 4x16 = 64 mẫu ra và biến đếm i_BPSK giúp xác định khi nào được phép lấy mẫu vào kế tiếp (ơ chú thích số 2

& 2’).

- Tương tự đối với PAM, sửa 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 chương

trình. Kiểm chứng kết quả thu được trên Plot của CCS.

sample_data = 0x0F0F = 0b0000 1111 0000 1111

đảo pha đảo pha đảo pha

sample_data = 0x5555 = 0b0101 0101 0101 0101

0 & 1 hoán đổi liên tục nên pha sẽ đảo liên tục từ phải sang trái như hình sau:

sample_data = 0x9999 = 0b1001 1001 1001 1001

Một phần của tài liệu (TIỂU LUẬN) báo cáo THÍ NGHIỆM xử lí số tín HIỆU THỰC HIỆN các bộ lọc FIR TRÊN KIT c6713 DSK (Trang 49 - 54)

Tải bản đầy đủ (DOCX)

(57 trang)
w