Tải bản đầy đủ (.pdf) (37 trang)

Báo cáo thí nghiệm môn xử lý số tín hiệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.96 MB, 37 trang )

ĐẠ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Ử
BỘ MÔN ĐIỆN TỬ

BÁO CÁO THÍ NGHIỆM
MƠN: XỬ LÝ SỐ TÍN HIỆU
GIÁO VIÊN HƯỚNG DẪN: HUỲNH XUÂN CẢNH
TỔ 8
HỌ VÀ TÊN:
1. Phạm Trần Minh Quân
2. Võ Thanh Thông

MSSV: 1712828
MSSV: 1713358

1


TP.HCM , THÁNG 04 NĂM 2019

2
LẤY MẪU VÀ LƯỢNG TỬ HÓA TRÊN
KIT
C6713 DSK
Điểm đánh giá
Chuẩn bị

Báo cáo và

lý thuyết



kết quả TN

CBGD nhận xét và ký tên
Kiểm tra

Kết quả

1. TIẾN HÀNH THÍ NGHIỆM
Lấy mẫu tín hiệu
Trước hết, hãy thực hiện theo từng bước ví dụ đơn giản sau.
Ví dụ : Cho tín hiệu hình sin có tần số 3KHz đi qua bộADC của AIC32. Tín
hiệu sau đó được cho đi ngược lại bộ DAC của AIC32. Quan sát tín hiệu
được hiển thị trên máy tính.

Trong ví dụ này tín hiệu từ máy phát sóng x(t) sau khi đi qua bộ AIC32
trong Kit C6713DSK sẽ là tín hiệu được lấy mẫu x(nT). x(nT) sẽ đi qua hệ
thống là vi xử lí DSP6713. Trong ví dụ này, tín hiệu ngõ ra của hệ thống sẽ
giống tín hiệu ngõ vào y(n) = x(nT). Sau đó y(n) sẽ được đưa ngược lại bộ
DAC của AIC32 và khơi phục lại thành tín hiệu y(t). Tín hiệu y(t) sẽ được
đưa vào và hiển thị trên máy tính.
Chương trình hệ thống cho DSP6713 để lấy tín hiệu ngõ ra là tín hiệu ngõ vào

2


A. Hệ thống này được thực hiện trên kit bằng chương trình sau (viết bằng ngơn ngữ C)
B. Mở project bộ lọc FIR:
1. Trong chương trình


2. Chọn
project
FIR
theo
đường
Files\CCStudio_v3.1\myprojects\FIR\FIR.pjt
3. Mở chương trình chính FIR.c

dẫn:

C:\Program

Viết lại chương trình chính của bộ lọc FIR theo chương trình sau

3
//Fir.c FIR filter. Include coefficient file with length N #include


"coefficients.h"//coefficient file
#include "dsk6713_aic23.h"//codec-dsk support file
Uint32 fs=DSK6713_AIC23_FREQ_8KHZ;
int yn =0; int pulse;
interrupt void c_int11()

Bách

//set sampling
rate filter's
//initialize
output


//IS
{ C. Biên dịch và chạy chương
trình:
R
yn = input_sample();
1. Chọn Project  Rebuild All hoặc nhấn nút có hình 3 mũi tên
xuống trên toolbar. CCS sẽ dịch tất cả các tập tin C và
output_sample(yn
>> 15);Các
//scale
output
Assembly.
tập tin
đối filter
tượngsample
tạo ra được liên kết với các
tập
tin
thư
viện.
Cuối
cùng,
CCS
tạo ra một tập tin thực thi
return;
FIR.out có thể nạp lên kit để chạy. (Nếu chương trình biên
}
dịch bị lỗi thì kiểm tra lại và sửa lỗi, sau đó biên dịch lại).
void main()

2. Chọn Debug  Connect hoặc bấm tỗ hợp phím Alt+C để kết nối với kit.
3. Chọn File  Load Program, mở thư mục Debug trong thư
{
mục FIR, chọn tập tin FIR.out để nạp nó lên trên kit. Sau đó,
 Run để chạy chương trình trên kit.
comm_intr();chọn Debug
//init DSK, codec, McBSP
4. Khi cần thay đổi hay chỉnh sửa chương trình cho một ví dụ
while(1);
loop  Halt để ngắt kết nối với kit, rồi thực
khác, //infinite
ta chọn Debug
}
hiện lại các bước như ban đầu.
Đánh giá kết quả thực hiện
Mở nguồn của máy phát sóng. Tạo một tín hiệu hình sine 3KHz từ máy
phát sóng và quan sát dạng sóng ngõ ra. Vẽ lại dạng sóng và phổ của tín
hiệu ngõ ra. Nhận xét ngắn gọn.

Nhận xét: Tín hiệu được lấy mẫu ở tần số 8KHz suy ra khoảng Nyquist là
[-4; 4] mà tín hiệu được tạo là tín hiệu có tần số 3KHz nên tín hiệu thu được
cũng là tín hiệu sin 3KHz do đó tín hiệu ngõ ra có dạng như hình trên. Đồng
thời phổ thu được cũng tại tần số 3KHz

4


Sau khi đã thực hiện ví dụ trên, sinh viên tiếp tục thực hiện việc thay đổi tần
số lấy mẫu để thấy rõ hiện tượng aliasing khi không thỏa mãn điều kiện lấy
mẫu tín hiệu.


Kho
a

AIC23 được cố định tần số lấy mẫu và ta chỉ có thể thay đổi chương trình
trong vi xử lý DSP6713. AIC có tần số lấy mẫu là 8KHz, vậy nên trong 1
giây sẽ có 8000 mẫu được đưa tới vi xử lý DSP6713. Chúng ta có thể giảm
tốc độ lấy mẫu xuống cịn 4KHz bằng cách thay vì vi xử lý lấy tồn bộ mẫu,
ta sẽ lấy một mẫu và bỏ 1 mẫu. Như vậy trong 1 giây, chúng ta chỉ nhận
4000 mẫu, hay nói cách khác, tốc độ lấy mẫu được thay đổi xuống cịn
4KHz.
Để thực hiện điều này, ta nhân tín hiệu ngõ vào với một chuỗi tuần hoàn [1,
0, 1, 0, 1, 0,…]. Việc này có thể thực hiện trên chương trình bằng dòng lênh
sau:
yn = pulse * input_sample();
pulse = (pulse==0);
Sinh viên thực hiện
Cho tín hiệu hình sin có tần số 3KHz đi qua hệ thống. Tín hiệu được lấy mẫu với tần số
4KHz. Tín hiệu sau đó được đi qua bộ lọc thơng thấp tần số 4KHz. Tín hiệu ngõ ra có tần số
bao nhiêu?

Nhận xét: Vì tín hiệu được lấy mẫu ở tần số 4KHz suy ra khoảng Nyquist là (-2;2) nên khi đưa
tín hiệu sin 3KHz và khơng thuộc khoảng Nyqyist do đó tin hiệu thu được khơng giống như tín
hiệu ban đầu. Tín hiệu thu được là tín hiệu sin 1Khz cộng với tín hiệu sin 3Khz. Vậy tín hiệu
ngõ ra có tần số là 1Khz và tần số 3KHz

5


So sánh với khi lấy mẫu ở tần số 8Khz: khi lấy mâu 8Khz tín hiệu thu được giống với tín hiệu

ban đầu đưa vào. Khi lấy mẫu ở 4Khz tín hiệu thu được khơng giống ban đầu nữa.
Cho tín hiệu xung vng có tần số 0.5KHz đi qua hệ thống. Tín hiệu được lấy mẫu với tần
số 8KHz. Tín hiệu sau đó được phục hồi lý tưởng. Quan sát và vẽ lại dạng dóng và phổ của
tín hiệu ngõ ra. Nhận xét và giải thích ngắn gọn

Nhận xét: Tín hiệu được lấy mẫu ở tần số 8Khz suy ra khoảng Nyquist là (-4;4), tín hiệu là
vào là sóng vuống 0.5Khz nên tín hiệu đầu ra thu được giống với tín hiệu đầu vào ( là sống
vng 0.5Khz) và phổ thu được cũng tại tần số 0.5Khz.
Thay đổi tần số lấy mẫu cịn 4KHz. Quan sát và vẽ dạng sóng và phổ tín hiệu ngõ ra. So sánh
02 trường hợp khi lấy mẫu với tần số 4KHz và 8KHz của xung vng tần số 0.5KHz. Nhận xét
và giải thích ngắn gọn

6


So sánh khi lấy mẫu ở tần số 8Khz, khi lẫy mẫu ở tần số 4Khz thì dạng sống đầu ra là giống
nhau, nhưng khi lấy mẫu 4Khz thì phổ thu được có tại tần số 0.5Khz và 3.5Khz tà vì khi lấy
mâu ở 4Khz xảy ra hiện tương alisas.
Lượng tử hóa tín hiệu
Mỗi mẫu tín hiệu được AIC32 mã hóa và đưa tới vi xử lý sẽ có dạng chuỗi bit:
[b1, b2, b3, b4, b5, b6, b7, b8, 0, …0]
(24 số khơng) Trong đó bit b1 là MSB và b8 là LSB
Chúng ta có thể thay đổi số mức lượng tử xuống thấp hơn bằng cách dịch
phải rồi dịch trái chuỗi bit. Ví dụ ta có thể thay đổi từ 256 mức lượng tử
(tương ứng 8bit) xuống thành 128 mức (tương ứng 7bit) bằng cách bỏ đi bit
cuối cùng b8. Điều này được thực hiện bằng cách dịch phải rồi dịch trái 25bit
như sau:
[b1, b2, b3, b4, b5, b6, b7, b8, 0, …0] => [0, 0,…0, b1, b2, b3, b4, b5,
b6, b7,] => [b1, b2, b3, b4, b5, b6, b7, 0, 0, …0]
Việc này có thể thực hiện trên chương trình bằng dịng lênh sau:

yn = (input_sample() >> 25) << 25;
Từ câu lệnh trên ta có thể dễ àng thay đổi số bit mã hóa xuống cịn 6,4,2,0 bằng cách: 6bit( dịch
26) , 4 bit ( dịch 28) , 2bit (dịch 30) và 0 bit (32)
1. Cho tín hiệu hình sin có tần số 3KHz đi qua hệ thống. Tín hiệu được lấy mẫu với tần
số 8KHz. Mỗi mẫu tín hiệu được mã hóa thành chuỗi 8bit. Tín hiệu sau đó được
phục hồi lý tưởng. Quan sát và vẽ dạng sóng và phổ tín hiệu ngõ ra.

7


Thực hiện việc giảm dần số bit mã hóa xuống còn 6, 4, 2, 0 bit. Quan sát và vẽ dạng sóng và
phổ tín hiệu ngõ ra. Nhận xét
Trường hợp mỗi mẫu được mã hóa bằng 6bit

Trường hợp mỗi mẫu được mã hóa bằng 4bit.

8


Trường hợp mỗi mẫu được mã hóa bằng 2bit

Trường hợp mỗi mẫu được mã hóa bằng 0bit

9


Nhận xét: Khi ta giảm dần số bit mã hóa xuống thì tín hiệu thu được đầu ra càng sai lệch lớn
so với tín hiệu được đưa vào nguyên nhân là do khi số bit giảm xuống thì khoảng lượng tử sẽ
tăng lên ( Q=R/2^B, với Q là khoảng lượng tử R là tầm toàn thang và B là số bit). Vì khoảng
lượng tử tăng nên sai số nhiễu lượng tử sẽ tăng theo (e=Q/căn 2(12)). Do đó tạo sự khác biệt

ngày càng lớn so với tín hiệu đầu vào.
- Cho tín hiệu xung vng có tần số 3KHz đi qua hệ thống. Tín hiệu được lấy mẫu với tần
số 8KHz. Mỗi mẫu tín hiệu được mã hóa thành chuỗi 8bit. Tín hiệu sau đó được phục hồi lý
tưởng. Quan sát và vẽ dạng sóng và phổ tín hiệu ngõ ra

10


Thực hiện việc giảm dần số bit mã hóa xuống còn 6, 4, 2, 0 bit. Quan
sát và vẽ dạng sóng và phổ tín hiệu ngõ ra. So sánh và nhận xét với
trường hợp sóng sin.
Trường hợp mỗi mẫu được mã hóa bằng 6bit.

11


Trường hợp mỗi mẫu được mã hóa bằng 4bit

Trường hợp mỗi mẫu được mã hóa bằng 2bit

Trường hợp mỗi mẫu được mã hóa bằng 0 bit

12


Nhận xét: So với khi tín hiệu vào là sóng sin khi dùng sóng vng khơng có nhiều sự khác biệt
( có thể là do máy đo )

3
BỘ LỌC FIR/IIR TRÊN KIT C6713 DSK

Điểm đánh giá
Chuẩn bị

Báo cáo và

lý thuyết

kết quả TN

CBGD nhận xét và ký tên
Kiểm tra

Kết quả

MỤC ĐÍCH THÍ NGHIỆM
-

Hiểu rõ các bước từ thiết kế đến hiện thực bộ lọc FIR/IIR lên trên một kit DSP.

-

Quan sát đáp ứng xung và đáp ứng tần số của bộ lọc.

-

Kiểm tra đặc tính (thơng thấp, thơng cao, thơng dải, chắn dải) của bộ lọc.

13



-

Khảo sát ngõ ra của bộ lọc khi ngõ vào là tín hiệu xung vng.

-

Hệ thống lại các lý thuyết đã học.

TIẾN TRÌNH THÍ NGHIỆM
5.1.1. Bộ lọc FIR chắn dải
Thiết kế, thực hiện và khảo sát bộ lọc FIR chắn dải bằng phương pháp cửa sổ
Kaiser với các thông số sau:
 Chiều dài của đáp ứng xung: N = 63 (MATLAB hiển thị bậc bộ lọc bằng
62)
 Tần số trung tâm: 2700 Hz
 Tần số cắt: 2500 Hz và 2900 Hz
 Giá trị của beta = 4
 Tần số lấy mẫu 8000 Hz

Giá trị các hệ số của đáp ứng xung:
-57
55
23
-112

103

23

-143


123

11

-98

55

0

72

-170

25

381

-594

131

794

-1205

350

1229


-1922

683

1579

-2606

1080

1753

-3100

1454

1704

29525

1704

1445

-3100

1753

1080


-2606

1579

683

-1922

1229

350

-1205

794

131

-594

381

25

-170

72

0


55

-98

11

123

-143

23

103

-112

23

55

-57

14


 Đánh giá kết quả thực hiện

 Đáp ứng biên độ-tần số và pha-tần số của bộ lọc:


15




Kiểm tra bộ lọc: Tần số 100Hz:

16




Tần số 1KHz:



Tần số 2KHz:

17




Tần số 4KHz:



Đặc tính bộ lọc chắn giải:

+ Càng gần khoảng tần số cắt thì biên độ càng nhỏ

+Bộ lọc chắn giải triệt tiêu biên độ các tần số nằm khoảng của 2 tần số cắt và giữ nguyên biên
độ của các tần số khác.
+Vì là bộ lọc khơng lí tưởng, biên độ của tín hiệu mà có tần số gần tần số cắt là rất nhỏ, xấp xỉ
bằng 0.

2) Tạo một sóng vng từ máy phát sóng, lần lượt thay đổi tần số của tín hiệu vào ghi nhận các
thành phần tần số của ngõ ra.
+ fi=100 Hz

18


+ fi=200Hz

+ fi=550Hz

19


+ fi=990Hz

*Giải thích:
+ Biên độ tại tần số f=550Hz xảy ra hiện tượng aliasing, có phổ tại tần số 550Hz và 1550Hz

20


5.1.1. Bộ lọc FIR thông dải :






Chiều dài đáp ứng xung: 63
Tần số cắt: 1500 và 2000 Hz.
Giá trị của beta = 5
Tần số lấy mẫu: 8 kHz.
1. Đáp ứng tần số của bộ lọc thiết kế dùng MATLAB:

2. Gía trị các hệ số đáp ứng xung của bộ lọc thực hiện trên kit DSP:
-1

13

16

-34

-62

41

138

0

-208

-92


215

185

-134

-180

23

0

-30

325

328

-612

-978

579

1834

0

-2545


-1126

2711

21


2503

-2094

-3640

789

4081

789

-3640

-2094

2503

2711

-1126

-2545


0

1834

579

-978

-612

328

325

-30

0

23

-180

-134

185

215

-92


-208

0

138

41

-62

-34

16

13

-1

3. Dạng sóng đáp ứng xung của bộ lọc thực hiện trên kit DSP:

4. Đáp ứng biên độ-tần số của bộ lọc thực hiện trên kit DSP:

22


5. Kiểm tra bộ lọc với ngõ vào tín hiệu sin:
+Tần số 100Hz:

23



+Tần số 1.7KHz:

+Tần số 2KHz:

24


*Đặc tính bộ lọc thơng dải:
+ Ttrong khoảng tần số cắt trên và tần số cắt dưới, biên độ của tín hiệu được giữ ngun
+ Ngồi khoảng tần số trên , biên độ của tín hiêu bị triệt tiêu và giảm dần về 0.
 Bộ lọc thông dải được thiết kế nhằm giữ lại các tần số trong khoảng mong muốn và loại
bỏ các tần số xung quanh.
6. Kiểm tra bộ lọc với ngõ vào tín hiệu xung vng:
+ fi=100 Hz

+ fi=200 Hz

25


×