Vì vậy đáp ứng xung của ó 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.. II – Bộ lọc thích nghi dùng để nhận dạng một bộ lọc chưa biế
Trang 1ĐẠ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Ử
TP HỒ CHÍ MINH - 4/2013
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 2BÀI 1: THỰC HIỆN CÁC BỘ LỌC FIR TRÊN
KIT C6713 DSK
1 Thiết kế một bộ lọc FIR chắn dải bằng phương pháp Kaiser Window có các thông số như sau:
a Chiều dài đáp ứng xung N = 89 (Bậc bộ lọc: 88)
b Tần số cắt: 2500 và 2900
Hz c Giá trị của β= 4
d Tần số lấy mẫu: 8 kHz.
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 :
Trang 3 Mở tập tin project có tên FIR.pjt trong C:\Program Files\CCStudio_v3.1\myproject\FIR.
Mở tập tin coeficients.h trong phần include mở rộng thuộc project view.
Trang 4 Thiết lập các thông số trong Project
Build Options
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 :
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 6 Quan sát đáp ứng của bộ lọc Graph
Time/Frequency
Trang 7Đáp ứng như sau:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
Trang 9Sau đó dùng lệnh h=round(bp1750 f.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:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
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:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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:
Trang 131.Đáp ứng tần số của bộ lọc
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 14 Đáp ứng thu được trên CCS :
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 ứ g 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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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
Trang 17(2k+1)*1000Hz Khi cho qua bộ lọc Multiband ở trên (dựa theo đáp ứ 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 hư g 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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
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.
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 để ạ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 :
ực hiện biên dich chương trình : Project
ReBuild All
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, q an 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ý :
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
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 25- 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]
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 26Y2[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
Trang 27Tí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 28BÀI 3 : THỰC HIỆN CÁC BỘ LỌC THÍCH NGHI TRÊN KIT C6713
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 ứ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 à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:
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 ó 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
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ằngMATLAB)
- Quan sát trên DSP_Tool tương ứng với vị trí thanh trượt (1&2)
Trang 29Tí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 : cosine tần số 125Hz.
Tương quan với nhiễu n’ : sine tần số 125Hz.
- Tạo các giá trị ữ 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 GEL
: Tín hiệu mong muốn + nhiễu (d+n).
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 30Tín hiệu mong muốn + nhiễu:
Tín hiệu sai lệch:
Trang 31Nhậ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ựchiệ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:
Cấu trúc thích nghi được dùng cho ứng dụng nhận dạng hay mô hình mẫu:
2
1
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
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ươ g trình
- Mở file AdaptIDFIR.gel (File Load GEL) Sau đó chọn GEL
OutputType 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 đầu ra bộ lọc thích nghi. 2: 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:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 32Đầu ra của bộ lọc thích nghi , quá trình đáp ứng của bộ lọc:
Trang 33Nhậ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 GEL
OutputType
Output-signal
- 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:
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 34Đầu ra của bộ lọc cố định chưa biế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 GEL
OutputType Output-signal
- Quan sát trên DSP_Tool để thấy quá trình thích nghi của bộ lọc:
Trang 35Bộ 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)
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 36- Biên dịch và chạy chương trình.
- Mở file AdaptIDFIR.gel (File Load GEL) Sau đó chọn GEL
OutputType Output-signal
- 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)
Trang 37Sau đây là 4 hình quan sát sự thích nghi dần dần của bộ lọc (vị trí 1):
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Trang 38BÀ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ế
- 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 d ta = 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