Professional Documents
Culture Documents
om
BÁO CÁO THÍ NGHIỆM
.c
XỬ LÍ SỐ TÍN HIỆU ng
co
an
Nhóm: A08
th
om
.c
ng
co
an
th
g
on
du
u
cu
Sau đó dùng lệnh h=round(bs2700.tf.num*2^15) để lấy thông số nhập vào file coefficient.h của ccs.
Mở c6713dsk:
om
.c
Mở tập tin project có tên FIR.pjt trong
ng
C:\Program Files\CCStudio_v3.1\myproject\FIR.
co
an
th
g
on
du
Mở tập tin coeficients.h trong phần include mở rộng thuộc project view.
u
cu
Nhập số liệu :
N=89, copy ma trận cof từ Array Editor ở MatLab và thay khoảng trắng
bằng dấu “,” (Bằng lệnh “Ctr + H”)
om
.c
ng
co
an
th
g
on
du
u
cu
om
.c
ng
co
Lúc này trong thư mục C:\Program Files\CCStudio_v3.1\MyProjects\FIR\Debug
Sẽ xuất hiện tập tin FIR.out , đây là tập tin ta dung để nạp lên KIT.
an
th
om
.c
ng
co
an
th
g
on
du
u
cu
om
.c
Đáp ứng như sau:
ng
co
an
th
g
on
du
u
cu
om
.c
ng
co
an
th
g
on
du
2. Thiết kế bộ lọc FIR thông dải bằng phương pháp Kaiser Window với các thông số như sau:
a. Chiều dài đáp ứng xung: 81
u
om
.c
ng
co
an
th
Sau đó dùng lệnh h=round(bp1750.tf.num*2^15) để lấy thông số nhập vào file coefficient.h của ccs.
g
Đáp ứng quan sát sau khi đã nạp các giá trị cof trên CCS:
on
du
u
cu
om
3. Thực hiện và thiết kế bộ lọc thông cao sau bằng phương pháp Kaiser Window.
.c
Sau đó, cho một tín hiệu xung vuông tần số 1 kHz vào và hiển thị tín hiệu ra. Giải
thích kết quả. Các thông số của bộ lọc như sau: ng
a. Chiều dài đáp ứng xung: 81
co
b. Tần số cắt: 2200 Hz.
an
om
.c
ng
co
an
th
Sau đó dùng lệnh h=round(hp2200.tf.num*2^15) để lấy thông số nhập vào file coefficient.h của ccs.
g
on
om
.c
ng
co
an
Hãy thiết kế và thực hiện lên kit C6713 DSK một bộ lọc FIR multiband với hai dải
g
thông có tần số trung tâm lần lượt là 2500 và 3500 Hz. Băng thông của mỗi dải thông là
on
phổ của ngõ ra. Giải thích tại sao có dạng phổ này?
cu
3. Thay đổi tần số của tín hiệu vào. Quan sát phổ ngõ ra. Giải thích sự thay đổi.
4. Vẽ phổ của tín hiệu ngõ ra khi tần số của tín hiệu vào là 0.5kHz, 1kHz và 1.5kHz.
Giải thích?
Thực hiện bằng matlab:
om
.c
ng
co
an
th
g
on
du
u
cu
om
.c
ng
co
an
th
g
on
2.Tạo một sóng vuông tần số 800Hz ở đầu vào bộ lọc.Hiển thị dạng song và giải thích phổ ngõ ra
om
.c
Phổ ngõ ra :
ng
(2k+1)*800Hz. Khi cho qua bộ lọc Multiband ở trên (dựa theo đáp ứng của CCS) thì chỉ cho qua tần số 2400Hz. ….
co
nhưng do hài cơ bản là 800Hz có biên độ lớn nên tuy bị suy hao nhưng ta vẫn quan sát được.• P h ổ : Giải thích dạng phổ
: Ta thấy có 2 vạch phổ là 800Hz. 2400Hz Sóng vuông 800Hz khi phân tích Fourier ta thu được các hài có tần số
800Hz.5Khz : 17 . 4000Hz. 2400Hz. các tần số còn lại bị suy hao.
an
3.Thay đổi tần số của tín hiệu vào.Quan sát phổ ngõ ra.
th
Sóng vuông tần số 2.5Khz->cho thành phần hài cơ bản qua nhiều nhất.Vạch phổ là hài cơ bản ở 2.5KHz
g
on
du
u
cu
om
.c
ng
co
4.Phổ tín hiệu ngõ ra khi tần số tín hiệu vào là 0.5KHz,1KHz,1.5KHz, 0.5KHz
an
th
g
on
du
u
cu
(2k+1)*500Hz. Khi cho qua bộ lọc Multiband ở trên (dựa theo đáp ứng của CCS) thì chỉ cho qua tần số 2500Hz và
3500Hz. …. nhưng do hài cơ bản là 500Hz có biên độ lớn nên tuy bị suy hao nhưng ta vẫn quan sát được.• P h ổ : Giải
thích dạng phổ : Ta thấy có 3 vạch phổ là 500Hz. 2500Hz,3500Hz
1KHz
om
.c
ng
(2k+1)*1000Hz. Khi cho qua bộ lọc Multiband ở trên (dựa theo đáp ứng của CCS) thì tần số 3000Hz bị suy hao ….
nhưng do hài cơ bản là 1000Hz có biên độ lớn nên tuy bị suy hao nhưng ta vẫn quan sát được.• P h ổ : Giải thích dạng phổ
co
: Ta thấy có 2 vạch phổ là 100Hz,3000Hz
1.5KHz
an
th
g
on
du
u
cu
6.1 Thực hiện bộ lọc IIR dạng ghép cascade các tầng bậc 2
Ví dụ : Thiết kế một bộ lọc IIR chắn dải bậc 10 bằng phương pháp Elliptic với tần số
trung tâm 1750 Hz, tần số lấy mẫu 8 kHz, tần số cắt 1700 và 1800 Hz, độ gợn dải chắn
và dải thông tương ứng là 60dB và 1dB. Thực hiện nó trên kit C6713 DSK dạng ghép
om
Thực hiện bộ lọc bằng matlab
.c
ng
co
an
th
g
on
du
u
cu
1. Thiết kế một bộ lọc IIR thông thấp thuộc loại Chebyshev 2 có các thông số như
sau:
a. Bậc bộ lọc: 10
Thực hiện bộ lọc lên trên kit và kiểm tra kết quả
om
.c
ng
co
- Từ cửa sổ Command Window, ta thực hiện các lệnh sau để xuất ra ma trận sos
(Second Order Section), dùng để nạp lên KIT.
an
>> [z,p,k]=tf2zp(bp2000.tf.num,bp2000.tf.den);
th
sos =
1.602 3.0947 1.602 32768 3274.7 12928
du
Việc nhân sos với 2^15 là do bộ xử lý sẽ lượng tử hóa các hệ số với một số lượng bit hữu hạn
và việc nhân lên sẽ giảm đi sai số. Lệnh format short g,sos để các phần tử trong ma trận
sos hiện thị số không có dấu chấm động 5 digits.
om
.c
ng
co
an
th
- T
h
g
- Load file *.out : File Load Program dẫn tới file IIR.out trong thư mục dubug.
- Chạy chương trình : Debug Run
du
- Thay đổi tần số ngỏ vào để tìm tần số cắt, ta quan sát tín hiệu trên DSP_Tools.exe,
cu
quan sát tới khi biên độ cực đại giảm xuống √ lần, thu được f_cắt = 1.55 Khz.
- Kiểm tra bộ lọc với các tần số vào điều chỉnh từ dao động ký :
0.5 Khz
om
.c
ng
co
an
th
g
on
du
2. Thiết kế bộ lọc IIR thông dải thuộc loại Chebyshev 2 với các thông số như sau:
u
om
.c
ng
co
an
th
- Từ cửa sổ Command Window, ta thực hiện các lệnh sau để xuất ra ma trận sos
(Second Order Section), dùng để nạp lên KIT.
g
on
>> [z,p,k]=tf2zp(bp2000.tf.num,bp2000.tf.den);
>> sos = zp2sos(z,p,k);
du
sos =
cu
Việc nhân sos với 2^15 là do bộ xử lý sẽ lượng tử hóa các hệ số với một số lượng bit
hữu hạn và việc nhân lên sẽ giảm đi sai số.
om
{32768,-39945, 32768},
{32768, 32302, 32768},
.c
{32768,-32302, 32768},
{32768,-27364, 32768},
{32768, 27364, 32768},
{32768,-24164, 32768},
{32768, 24164, 32768},
ng
co
{32768, 22117, 32768},
{32768,-22117, 32768},
an
{32768,-20895, 32768},
{32768, 20895, 32768},
th
{-12349, 18265},
cu
{14310, 21411},
{-14310, 21411},
{-15280, 24186},
{15280, 24186},
{-15730, 26536},
{15730, 26537},
{15963, 28537},
{-15963, 28537},
{-16162, 30299},
{16162, 30299},
{16437, 31947},
{-16437, 31947}
om
2 Tạo
hai tone bằng cách sử dụng hai phương trình sai phân bậc 2
.c
Tín hiệu ra là tổng của 2 tone có tần số 1.5KHz và 2 KHz
ng
co
an
th
g
on
du
u
cu
Y1[3]=[0,-8528,-14563]
Y2[3]=[0, -13323,-15508]
A1=27979
A2=19072
om
.c
ng
co
an
th
g
on
du
6.3 Tạo tín hiệu sine bằng một phương trình sai phân
om
Tính A và y[3] để tạo một tone có tần số 1kHz. Sau đó hãy hiệu chỉnh project
.c
và dịch lại. Kiểm tra tín hiệu ra có phải là tone có tần số 1kHz không?
A=2*cos(wt)=2*cos(2*pi*1000/8000)*2^14=23170 ng
co
Y(1)=sin(wt)=sin(2*pi*1000/8000)*2^14=11585
Y(2)=A*y(1)-y(0)=16384
an
th
g
on
du
u
cu
BÀI 3 : 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:
1. Cơ sở lý thuyết:
- Cấu trúc bộ lọc thích nghi cho khử nhiễu :
2
Tín hiệu mong muốn d, đã bị sửa đổi bởi nhiễu cộng n, không tương quan. Nhiễu n’ có thể
om
đến từ vài nguồn giống như n nhưng đã bị thay đổi bởi điều kiện môi trường. Ngỏ ra y được
thích ứng với nhiễu n, khi điều này xảy ra, tín hiệu sai số e tiến đến gần tín hiệu mong muốn
d, toàn bộ ngỏ ra là tín hiệu sai số e này.
.c
- Hai kiểu lọc chủ yếu chung nhất được dùng cho khử nhiễu là các bộ lọc FIR và các bộ lọc
IIR.
Đối với các bộ lọc FIR: ng
+ Có độ ổn định cao. Nó cũng tốt cho việc loại bỏ các tần số nào đó. Đây là ưu
co
điểm để nó được chọn trước cho các ứng dụng để thiết kế các loại khác nhau của
các hệ thống tuyến tính bất biến theo thời gian.
an
+ Bất lợi chính của kiểu lọc này là đáp ứng xung bị giới hạn trong thời gian bằng
các số nhịp hệ số tác động trong bộ lọc.
th
chúng có cả các điểm cực và các điểm 0 ở trong hàm truyền của nó. Vì vậy đáp
on
ứng xung của nó là vô hạn, nó không phụ thuộc nhiều vào các thông số bộ lọc cho
sự thực hiện kéo dài đáp ứng xung.
du
+ Bất lợi chính của các kiểu lọc này là tính không ổn định của chúng trong ứng
dụng. Vì chúng có các điểm cực ở trong hàm truyền của chúng.
2. Thực hiện bộ lọc FIR thích nghi triệt nhiễu
u
Ví dụ:
cu
om
.c
ng
co
an
Yêu cầu:
th
MATLAB)
- Mở CCS, connect với KIT và mở project Adaptnoise.pjt.
- Biên dịch và chạy chương trình.
- Mở file out_type.gel (File Load GEL). Sau đó chọn GELOutputType Output-
signal.
- Quan sát trên DSP_Tool tương ứng với vị trí thanh trượt (1&2)
1 : Tín hiệu sai lệch (e). 2 : Tín hiệu mong muốn + nhiễu (d+n).
om
.c
ng
co
an
th
Nhận xét: Ở vị trí 2 tín hiệu 2Khz lẫn nhiễu 125Hz nhấp nhô, sau khi cho qua bộ lọc thích
nghi khử nhiễu, quan sát ở vị trí 1 thì nhiễu 125Hz không còn nữa. Kết quả thực hiện đúng
với yêu cầu.
II – Bộ lọc thích nghi dùng để nhận dạng một bộ lọc chưa biết:
1. Cơ sở lý thuyết:
Cấu trúc thích nghi được dùng cho ứng dụng nhận dạng hay mô hình mẫu:
om
Cùng một tín hiệu vào, được đưa đến hai hệ thống song song là hệ thống chưa xác định và bộ
.c
lọc thích nghi. Tín hiệu sai số e là sự khác nhau giữa đáp ứng của hệ thống chưa biết d và đáp
ứng của bộ lọc thích nghi y. Tín hiệu sai số này được phản hồi về bộ lọc thích nghi và được
ng
dùng để cập nhật các hệ số cho bộ lọc cho đến khi toàn bộ ngỏ ra y = d. Khi điều này xảy ra,
hoạt động xử lý thích nghi được kết thúc, và e tiến gần đến 0. Trong sự kết hợp này, bộ lọc
co
thích nghi làm mẫu cho hệ thống chưa xác định.
an
2. Sử dụng bộ lọc FIR thích nghi để nhận dạng một bộ lọc FIR cố định chưa biết:
a. Hệ thống chưa biết là bộ lọc FIR chắn dải 55 hệ số(tần số trung tâm 2Khz)
th
-
on
signal .
- Quan sát trên DSP_Tool tương ứng với vị trí thanh trượt (1&2)
u
1 : Tín hiệu đầu ra bộ lọc thích nghi. 2 : Tín hiệu ngõ ra bộ lọc chưa biết.
cu
om
.c
ng
co
Đầu ra của bộ lọc thích nghi, quá trình đáp ứng của bộ lọc:
an
th
g
on
du
u
cu
Nhận xét: Bộ lọc thích nghi có phổ tần số giống của bộ lọc chưa biết chắn dải với
tần số trung tâm 2Khz, và biên độ qua bộ lọc thích nghi bị suy giảm một phần. Bộ lọc
thích nghi đã mô hình hóa thành công bộ lọc FIR chưa biết.
om
.c
ng
co
an
th
g
on
du
u
cu
om
.c
ng
co
an
th
Nhận xét: Bộ lọc thích nghi có phổ tần số giống của bộ lọc chưa biết thông thấp với tần số
g
cắt 2Khz, và biên độ qua bộ lọc thích nghi bị suy giảm một phần. Bộ lọc thích nghi đã mô
on
3. Sử dụng bộ lọc FIR thích nghi để nhận dạng một hệ thống chưa biết, biết ban đầu bộ
lọc thích nghi được khởi tạo là một bộ lọc FIR thống dải:
u
Trong thí nghiệm này, ban đầu, các hệ số của bộ lọc FIR thích nghi được khởi tạo bằng với
cu
các hệ số của một bộ lọc FIR thông dải có 55 hệ số, tần số trung tâm 3Khz chứa trong tập tin
bp3000.cof.
a) Bộ lọc cần nhận dạng ở đây là một bộ lọc FIR thông dải 55 ( bp55.cof) hệ số với tần số
trung tâm là 2KHz. Chúng ta sẽ thấy bộ lọc thích nghi sẽ thay đổi dần từ một bộ lọc thông dải
tần số trung tâm 3KHz thành một bộ lọc thông dải tần số trung tâm 2KHz.
om
.c
ng
co
an
th
g
on
du
u
cu
Nhận xét: Từ một bộ lọc thông dải tần số trung tâm 3Khz, sau 1 thời gian, bộ lọc
dần chuyển thành bộ lọc thông dải tần số trung tâm 2Khz.
b) Bộ lọc cần nhận dạng ở đây là một bộ lọc FIR thông thấp 55 ( lp55.cof) hệ số với tần số cắt
là 2KHz. Chúng ta sẽ thấy bộ lọc thích nghi sẽ thay đổi dần từ một bộ lọc thông dải tần số
trung tâm 3KHz thành một bộ lọc thông thấp tần số cắt 2KHz.
om
.c
ng
co
an
th
g
on
du
u
cu
Sau đây là 4 hình quan sát sự thích nghi dần dần của bộ lọc (vị trí 1):
om
.c
ng
co
an
th
g
on
du
u
cu
om
1. Điều chế PAM 4 mức
.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
Giải thích code: ng
+ Trong chương trình này hàm main() đặt giá trị biến i_PAM = 0 và khởi động kit. Sau đó
co
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
an
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.
th
+ 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
g
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
on
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:
du
Khối ký hiệu Mức điện áp (dạng hex) Mức điện áp (dạng thập phân)
u
00 0x7FFF 32767
cu
01 0x2AAA 10922
10 -0x2AAB 10923
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:
om
.c
ng
co
an
th
g
on
du
u
cu
om
.c
ng
co
sample_data = 0x1BE4 = 0b00 01 10 11 11 10 01 00
an
th
g
on
du
u
cu
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.
om
101 -0x36DB -14043
110 -0x5B6D -23405
.c
111 -0x7FFF -32767
int j_PAM;
int k;
int masked_value, output;
th
0x7FFF};
on
int out_buffer[256];
int i=0;
du
i_PAM=0;
j_PAM=0;
}
output = data_4PAM[masked_value];
output_sample(output);
out_buffer[i++] = output;
if (i==256)
i = 0;
{
j_PAM=0;
sample_data = sample_data >> 3;
}
i_PAM++;
return;
}
void main()
{
i_PAM=0;
- Biên dịch & nạp chương trình lên kit & kiểm tra kết quả tương tự PAM 4
om
.c
ng
co
an
th
g
on
du
u
cu
om
.c
ng
co
sample_data = 0x3546 = 0b001 101 010 100 011 0
an
th
g
on
du
u
cu
Nhận xét: Kết quả thu được phù hợp với lý thuyết.
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)
0000 0x7FFF 32767
0001 0x6EEE 28398
0010 0x 5DDD 24029
0011 0x4CCC 19660
0100 0x3BBB 15291
0101 0x2AAA 10922
0110 0x1999 6553
om
0111 0x0888 2184
1000 -0x0889 -2185
1001 -0x199A -6554
.c
1010 -0x2AAB -10923
1011 -0x3BBC -15292
1100
1101
-0x4CCD
-0x5DDE
ng -19661
-24030
co
1110 -0x6EEF -28399
1111 -0x8000 -32768
an
#include "DSK6713_aic23.h"
Uint32 fs=DSK6713_AIC23_FREQ_8KHZ;
g
on
#include <math.h>
//Initialization:
int i_PAM;
du
int j_PAM;
int k;
int masked_value, output;
u
int data_4PAM[16] = {0x7FFF, 0x6EEE, 0x5DDD, 0x4CCC, 0x3BBB, 0x2AAA, 0x1999, 0x0888, -
cu
int out_buffer[256];
int i=0;
return;
}
void main()
{
i_PAM=0;
comm_intr(); //init DSK, codec, McBSP
while(1); //infinite loop
}
om
- Biên dịch & nạp chương trình lên kit & kiểm tra kết quả tương tự PAM 4
.c
sample_data = 0x3210 = 0b0011 0010 0001 0000
ng
co
an
th
g
on
du
u
cu
om
.c
ng
sample_data = 0x9687 = 0b1001 0110 1000 0111
co
an
th
g
on
du
u
cu
Nhận xét: Kết quả thu được phù hợp với lý thuyết.
II- Thực hiện mạch điều chế PSK trên kit C6713 DSK
Giải thuật điều chế:
Mỗi mẫu vào được thu và lưu vào trong một vị trí nhớ, chứa 16 bits. Tùy theo kiểu
điều chế PSK (2 hay 4 pha), một mặt nạ thích hợp được sử dụng. Đối với BPSK, mỗi
giá trị vào được chia ra làm 16 phần, mỗi thành phần 1 bit; đối với QPSK, mẫu vào
được chia thành 8 dibits (mỗi dibit gồm 2 bit). Việc này đạt được bằng cách áp mặt nạ
tương ứng 0x0001 và 0x0003 lên mẫu vào. Sau đó, mẫu sẽ được dịch phải 1 bit
(BPSK) hoặc 2 bit (QPSK) và lặp lại cho hết chiều dài mẫu vào.
Mỗi mẫu vào được biểu diễn bằng 16 bits. Mỗi mẫu sẽ gồm 16 đoạn (với BPSK) và 8
đoạn (với QPSK). Do mỗi ký hiệu được truyền bởi 1 hình sine tạo theo phương pháp
số bằng 4 điểm, cứ mỗi 64 mẫu ra (với BPSK) hoặc 32 mẫu ra (với QPSK), một mẫu
vào được lấy vào.
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"
Uint32 fs=DSK6713_AIC23_FREQ_8KHZ;
om
#include <math.h>
//Initialization:
int i_BPSK;
.c
int j_BPSK;
int k;
int masked_value, output;
int out_buffer[256];
int i=0; 1
ng
co
//Data table for BPSK
int data_BPSK[2][4]={0, 1000, 0, -1000, //0 degree
0, -1000, 0, 1000}; //180 degree
an
int sample_data; 2
if (i_BPSK==64) //determines when to get new input
g
{
on
} 3 4
masked_value = sample_data & 0x0001; //masks input sample as 1-bit segments
u
out_buffer[i++] = output*10;
if (i==256)
i = 0;
j_BPSK++; //repeated output counter
{ 5
j_BPSK=0;
sample_data = sample_data >> 1;
}
i_BPSK++;
return;
}
void main()
{ 2’’
i_BPSK=64; ’’
j_BPSK=0;
om
độ 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.
.c
+ 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 &
ng
2’).
- Tương tự đối với PAM, sửa lệnh sample_data = input_sample() thành sample_data
co
= 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.
an
th
Lưu ý: thông số lựa chọn cho việc thể hiện dạng sóng như sau:
g
on
du
u
cu
om
.c
ng
sample_data = 0x5555 = 0b0101 0101 0101 0101
co
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:
an
th
g
on
du
u
cu
om
.c
ng
co
2. Điều chế QPSK
an
sine lệch pha nhau 90o, mỗi sóng có 4 điểm. Số mẫu ra cho QPSK là 4x8 = 32. Mặt nạ
thích hợp để lấy 2 bit (biểu diễn 4 trạng thái) 0x0003, mỗi lần dịch 2 bit.
g
#include "DSK6713_aic23.h"
du
Uint32 fs=DSK6713_AIC23_FREQ_8KHZ;
#include <math.h>
u
//Initialization:
int i_BPSK;
cu
int j_BPSK;
int k;
int masked_value, output;
int out_buffer[256];
int i=0;
void main()
{
om
i_BPSK=32;
j_BPSK=0;
.c
while(1); //infinite loop
}
-
ng
Sửa lệnh sample_data = input_sample() thành sample_data = 0x???? (một giá trị
co
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.
an
om
.c
ng
co
sample_data = 0x1BE4 = 0b00 01 10 11 11 10 01 00
0o 90o 180o 270o 270o 180o 90o 0o
an
th
g
on
du
u
cu
Nhận xét: Kết quả thu được chưa đáp ứng được thực hiện theo mã Gray để giảm cực tiểu lỗi do
nhiễu trong quá trình truyền. Khi đó pha 270o ứng với 10 và 180o ứng với 11. Cần điều chỉnh
lại code điều chế.