Vì vậy đáp ứ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.. Cơ sở lý thuyết: Cấu trúc thích nghi được dùng cho ứng dụn
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
TP HỒ CHÍ MINH - 4/2013
cuu duong than cong com
Trang 2BÀI 1: THỰC HIỆN CÁC BỘ LỌC FIR TRÊN KIT
Thực hiện bộ lọc lên trên kit và kiểm tra kết quả
1 Thực hiện bộ lọc trên 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 của ccs
2 Thực hiện bộ lọc :
Mở c6713dsk:
Kết nối CCS với KIT: Debug Connect
cuu duong than cong com
Trang 3 Mở tập tin project có tên FIR.pjt trong
Trang 4 Thiết lập các thông số trong ProjectBuild Options
Trong thẻ Compiler
Trong thẻ Linker
cuu duong than cong com
Trang 5Lú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
Biên dịch: Project Rebuild All
Sau khi CCS chạy xong :
Vào File Load Program dẫn tới file FIR.out
Chạy chương trình Debug Run :
cuu duong than cong com
Trang 6 Quan sát đáp ứng của bộ lọc Graph Time/Frequency
Thiết lập thông số trong Graph Property Dialog như sau:
cuu duong than cong com
Trang 7Đáp ứng như sau:
cuu duong than cong com
Trang 83 Kiểm tra bộ lọc vừa thiêt kế:
Kết quả khi mô phỏng trên kit:
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
b Tần số cắt: 1500 và 2000 Hz
c Giá trị của β = 5
d Tần số lấy mẫu: 8 kHz
Thực hiện bộ lọc và kiểm tra kết quả
Thực hiện bộ lọc trên matlab
cuu duong than cong com
Trang 9Sau đó 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
Đáp ứng quan sát sau khi đã nạp các giá trị cof trên CCS:
Kết quả khi mô phỏng trên kit:
cuu duong than cong com
Trang 103 Thực hiện và thiết kế bộ lọc thông cao sau bằng phương pháp Kaiser Window
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:
a Chiều dài đáp ứng xung: 81
b Tần số cắt: 2200 Hz
c Giá trị của β = 4
d Tần số lấy mẫu: 8 kHz
Thực hiện bộ lọc trên matlab
cuu duong than cong com
Trang 11Sau đó 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
Đáp thu được ứng trên CCS:
Kết quả khi mô phỏng trên kit:
cuu duong than cong com
Trang 126.2 Một bộ lọc FIR multiband
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
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à
500 Hz Tần số lấy mẫu là 8 kHz
1 Vẽ đáp ứng tần số của bộ lọc
2 Tạo một sóng vuông với tần số 800 Hz ở đầu vào của bộ lọc Hiển thị dạng sóng và
phổ của ngõ ra Giải thích tại sao có dạng phổ này?
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:
cuu duong than cong com
Trang 131.Đáp ứng tần số của bộ lọc
cuu duong than cong com
Trang 14 Đáp ứng thu được trên CCS :
cuu duong than cong com
Trang 152.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
Phổ ngõ ra :
(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 … 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
3.Thay đổi tần số của tín hiệu vào.Quan sát phổ ngõ ra
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
cuu duong than cong com
Trang 16Sóng vuông tần số 3.5Khz->hài cơ bản qua nhiều nhất
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
(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
cuu duong than cong com
Trang 17(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ổ : Ta thấy có 2 vạch phổ là 100Hz,3000Hz
1.5KHz
cuu duong than cong com
Trang 18BÀI 2: THỰC HIỆN CÁC BỘ LỌC IIR TRÊN KIT
C6713 DSK
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
cascade các phần bậc 2 Kiểm chứng bộ lọc đã thực hiện
Thực hiện bộ lọc lên trên kit và kiểm tra kết quả
cuu duong than cong com
Trang 19Thực hiện bộ lọc bằng matlab
- 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
Trang 20Việ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
a Thực hiện bộ lọc lên KIT C713 DSK:
- Mở CCS lên, Connect với KIT, rồi Open Project có tên IIR.pjt có sẵn trong thư mục
C:\\CCStudio_v3.1\myprojects\IIR
- Trong cửa sổ Project View, tab File View, mở tập tin coefficients.h(trong Includes)
- Nhập các thông số cho bộ lọc như sau :
- T
h
ực hiện biên dich chương trình : Project ReBuild All
- 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
b Kiểm tra bộ lọc đã thực hiện :
- 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,
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
- cuu duong than cong comKiểm tra bộ lọc với các tần số vào điều chỉnh từ dao động ký :
Trang 22- 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
Trang 2332768 20322 32768 32768 16437 31947
32768 -20322 32768 32768 -16437 31947
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ố
c Thực hiện bộ lọc lên KIT C713 DSK:
- Nhập các thông số cho bộ lọc như sau :
//coefficients.cof IIR bandpass coefficient file, centered at 2000 Hz
#define stages 18 //number of 2nd-order stages
int a[stages][3]={ //numerator coefficients
{1.602,3.0947, 1.602}, //a10, a11, a12 for 1st stage
{32768,-63298, 32768}, //a20, a21, a22 for 2nd stage
{32768,-51261, 32768}, //a30, a31, a32 for 3rd stage
{32768, 51261, 32768} //a40, a41, a42 for 4th stage
Trang 24- Chạy chương trình : Debug Run
d Kiểm tra bộ lọc đã thực hiện :
2 Tạo hai tone bằng cách sử dụng hai phương trình sai phân bậc 2
Tín hiệu ra là tổng của 2 tone có tần số 1.5KHz và 2 KHz
Cộng 2 tone có tần số 697 và 1209 Hz
Y1[3]=[0,-8528,-14563]
cuu duong than cong com
Trang 25Y2[3]=[0, -13323,-15508]
A1=27979
A2=19072
6.3 Tạo tín hiệu sine bằng một phương trình sai phân
Mở sinegenDE.c lên và chạy,tần số tín hiệu ra là 2KHz
cuu duong than cong com
Trang 26Tính A và y[3] để tạo một tone có tần số 1kHz Sau đó hãy hiệu chỉnh project
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?
Trang 27BÀ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 :
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ể đế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
- 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:
+ 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 đ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
+ 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
Đối với các bộ lọc IIR:
+ Ưu điểm chính của các bộ lọc IIR là chọn lựa rất tốt cho lọc các đỉnh tần số hẹp, 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 ứ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
+ 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
Ví dụ:
Tín hiệu mong muốn d: sine tần số 1500Hz
Nhiễu xâm lấn n : sine tần số 312Hz
Tương quan với nhiễu n’ : cosine tần số 312Hz
Mở file Adaptnoise.m (trong C:\Program Files\CCStudio_v3.1\MyProjects\Adaptnoise bằng MATLAB)
- Quan sát trên DSP_Tool tương ứng với vị trí thanh trượt (1&2)
1
2
cuu duong than cong com
Trang 28Tín hiệu mong muốn + nhiễu:
Yêu cầu:
Tín hiệu mong muốn d: cosine tần số 2000Hz
Nhiễu xâm lấn n : cosine tần số 125Hz
Tương quan với nhiễu n’ : sine tần số 125Hz
- Tạo các giá trị dữ liệu cho tín hiệu:
cosine(2000Hz), cosine(125Hz) + cosine(312Hz) và sine(312Hz)
Mở file Adaptnoise.m (trong C:\Program Files\CCStudio_v3.1\MyProjects\Adaptnoise bằng 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 signal
Output Quan sát trên DSP_Tool tương ứng với vị trí thanh trượt (1&2)
: Tín hiệu sai lệch (e) : Tín hiệu mong muốn + nhiễu (d+n) 1 2
cuu duong than cong com
Trang 29Tín hiệu mong muốn + nhiễu:
Tín hiệu sai lệch:
cuu duong than cong com
Trang 30Nhậ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:
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ộ
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 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
thích nghi làm mẫu cho hệ thống chưa xác định
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)
- Mở CCS, connect với KIT và mở project AdapIDFIR.pjt
- Sửa tập tin AdapIDFIR.c (trong nhánh Source) và tập tin bs55.cof
- Biên dịch và chạy chương trình
- Mở file AdaptIDFIR.gel (File Load GEL) Sau đó chọn GELOutputType signal
Output Quan sát trên DSP_Tool tương ứng với vị trí thanh trượt (1&2)
: Tín hiệu đầu ra bộ lọc thích nghi : Tín hiệu ngõ ra bộ lọc chưa biết
Đầu ra của bộ lọc cố định chưa biết:
2
1
2
1 cuu duong than cong com
Trang 31Đầu ra của bộ lọc thích nghi, quá trình đáp ứng của bộ lọc:
cuu duong than cong com
Trang 32Nhậ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
b Hệ thống chưa biết là bộ lọc FIR thông thấp 55 hệ số
- Halt chương trình lại
- Sửa tập tin AdapIDFIR.c (trong nhánh Source
- Biên dịch và chạy lại chương trình
- Mở file AdaptIDFIR.gel (File Load GEL) Sau đó chọn GELOutputType signal
Output Quan sát trên DSP_Tool tương ứng với vị trí thanh trượt (1&2)
Đầu ra của bộ lọc thích nghi, quá trình đáp ứng của bộ lọc:
cuu duong than cong com
Trang 33Đầu ra của bộ lọc cố định chưa biết:
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ố
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ô
hình hóa thành công bộ lọc FIR chưa biết
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:
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 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
- Mở CCS, connect với KIT và mở project AdapIDFIRW.pjt
- Sửa tập tin AdapIDFIRW.c (trong nhánh Source)
- Biên dịch và chạy chương trình
- Mở file AdaptIDFIR.gel (File Load GEL) Sau đó chọn GELOutputType signal
Output Quan sát trên DSP_Tool để thấy quá trình thích nghi của bộ lọc:
cuu duong than cong com
Trang 34Bộ lọc cần nhận dạng: (vị trí 2)
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
- Mở CCS, connect với KIT và mở project AdapIDFIRW.pjt
- Sửa tập tin AdapIDFIRW.c (trong nhánh Source)
cuu duong than cong com
Trang 35- Biên dịch và chạy chương trình.
- Mở file AdaptIDFIR.gel (File Load GEL) Sau đó chọn GELOutputType signal
Output Quan sát trên DSP_Tool để thấy quá trình thích nghi của bộ lọc:
Bộ lọc cần nhận dạng: (vị trí 2)
cuu duong than cong com
Trang 36Sau đây là 4 hình quan sát sự thích nghi dần dần của bộ lọc (vị trí 1):
cuu duong than cong com
Trang 37BÀI 4: THỰC HIỆN MỘT SỐ MẠCH ĐIỀU CHẾ
TRÊN KIT C6713 DSK
I- Thực hiện điều chế PAM trên kit C6713 DSK
Giải thuật điều chế:
Mỗi mẫu vào điều chế gồm 16 bits Tùy vào loại điều chế PAM, một mặt nạ (mask) thích hợp được sử dụng Các mẫu nhập vào sẽ được AND với mặt nạ và dịch với số lần thích hợp đến hết chiều dài chuỗi Tương ứng với mỗi ký hiệu (symbol) trên 1 mẫu nhập vào và loại điều chế ta có mức điện áp khác nhau, để dạng sóng xuất sau khi ra
bộ A/D có dạng sóng vuông, mỗi mức sẽ được xuất ra 12 lần trước khi chuyển sang symbol kế tiếp Sau đây chúng ta sẽ đi vào cụ thể từng loại điều chế
1 Điều chế PAM 4 mứ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:
+ Trong chương trình này hàm main() đặt giá trị biến i_PAM = 0 và khởi động kit Sau đó
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
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
+ 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
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
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:
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 cuu duong than cong com