Tài liệu thực hành xử lý số tín hiệu, trường Đại học Công nghiệp thành phố Hồ Chí Minh, cung cấp cho sinh viên kiến thức và cách sử dụng phần mềm Matlab, CCS7 với nội dung đầy đủ sẽ giúp sinh viên trang bị kĩ năng thực hành bằng phần mềm và học tốt môn xử lý tín hiệu số.
BÀI GIẢNG THÍ NGHIỆM XỬ LÝ SỐ TỔNG HỢP: LÊ VĂN HÙNG PHẦN I THÍ NGHIỆM XỬ LÝ SỐ THỰC HIỆN BẰNG MATLAB BÀI GIẢNG LƯU HÀNH NỘI BỘ (Biên soạn theo giáo trình chính[2]) MỤC LỤC Bài Làm quen Matlab ứng dụng DSP 1.1 Cài đặt matlab 1.2 Làm quen với Matlab 1.2.1 Giao diện người dùng 1.2.2 Command Window (command line) 1.2.3 Current folder (thư mục hành/ thư mục làm việc) 1.2.4 Script file 1.2.5 Hàm (Function) 11 1.2.6 Workspace 16 1.2.7 Thế mạnh Matlab ứng dụng DSP 18 1.2.8 Nhập mảng với Matlab 19 1.2.9 Thao tác Ma trận 20 1.2.10 Phân tích mạnh tốn Ma trận Matlab lập trình DSP 24 1.3 Bài tập: 26 Bài Tín hiệu hệ thống rời rạc, HỆ THỐNG LTI 31 2.1 Tín hiệu hệ thống rời rạc 31 2.1.1 Hàm xung đơn vị 31 2.1.2 Hàm bước nhảy đơn vị 32 2.1.3 Các phép toán tín hiệu rời rạc 33 2.2 Biểu diễn tín hiệu rời rạc 35 2.3 Đáp ứng xung hệ thống LTI 41 2.4 Phương trình vi phân 44 2.5 Tương quan tín hiệu: 47 2.5.1 Tương quan chéo: 47 2.5.2 Tự tương quan 48 2.6 Bài tập 50 Bài Tín hiệu hệ thống miền tần số, miền Z 54 3.1 DTFT/DFT/FFT 54 Phân biệt dạng FOURIER: 54 3.1.1 Fourier liên tục thời gian 54 3.1.2 Fourier Rời rạc thời gian 54 3.1.3 Fourier thuật toán 55 3.1.4 Phân biệt 55 3.1.5 DFT FFT 67 3.1.6 ĐẶC TÍNH CỦA BIẾN ĐỔI IFFT VÀ RỊ RỈ PHỖ 75 3.1.7 Rò rỉ phổ 76 3.1.8 Ví dụ FFT 76 3.2 Biểu diễn hệ thống miền Z 89 3.3 Bài tập (xem giáo trình tiếng anh) 91 Bài Cấu trúc FIR, thiết kế FIR 93 4.1 Phân tích cấu trúc lọc FIR 93 4.2 Thiết kế FIR bắng phương pháp cửa sổ 96 4.3 Bài tập 112 Bài Các loại lọc IIR, thiết kế IIR 115 5.1 Các loại lọc IIR 115 5.2 Thiết kế lọc IIR dùng Matlab 120 5.2.1 BUTTERWORTH LOWPASS FILTERS 120 5.3 Bài tập thiết kế IIR/FIR 125 Bài LÀM QUEN MƠI TRƯỜNG LẬP TRÌNH CCS7 127 6.1 Cài đặt ccs 127 6.2 Cách tạo project ccs 127 6.3 Cách tạo project chạy KIT DSK6416 dựa vào lab mẫu 128 Bài LẬP TRÌNH XUẤT NHẬP CƠ BẢN TRÊN KIT TMS320C6416 (LAB_1) 130 Bài THUẬT TỐN TẠO TÍN HIỆU SĨNG VỚI TẦN SỐ VÀ BIÊN ĐỘ THAY ĐỔI (LAB_2) 140 Bài XUẤT/NHẬP TÍN HIỆU AUDIO TRÊN KIT DSP SỬ DỤNG AUDIO CODEC, PHÂN TÍCH PHỖ TÍN HIỆU (LAB_3) 146 Bài 10 , 11 THỰC HIỆN BỘ LỌC FIR CHO DỮ LIỆU AUDIO TRÊN KIT DSP (LAB_4, 5) 159 Bài 12 Thực lọc IIR cho liệu Audio kit DSP (LAB_6) 169 DSP Using Matlab Draft version CHƯƠNG 1: TÍN HIỆU VÀ HỆ THỐNG LTI TRÊN MATLAB BÀI LÀM QUEN MATLAB VÀ ỨNG DỤNG TRONG DSP 1.1 Cài đặt matlab Matlab phần mềm hãng Matwork tích hợp nhiều lĩnh vực chuyên ngành khác Vì cài đặt Matlab ta chọn công cụ liên quan đến lĩnh vực điện, điện tử, viễn thông Các toolbox cần cài đặt DSP, RF, communication,… Cài đặt tùy chọn hình sau: Hình 1.1: Cài đặt tùy chọn Chọn công cụ cần cài đặt: MATLAB 8.1 Simulink 8.1 Communications System Toolbox 5.4 Computer Vision System Toolbox 5.2 Bộ môn viễn thông-Bài giảng lưu hành nội DSP Using Matlab Draft version Control System Toolbox 9.5 Data Acquisition Toolbox 3.3 DSP System Toolbox 8.4 Fixed-Point Designer 4.0 Fuzzy Logic Toolbox 2.2.17 Image Acquisition Toolbox 4.5 Image Processing Toolbox 8.2 MATLAB Builder EX 2.3.1 MATLAB Builder JA 2.2.6 MATLAB Builder NE 4.1.3 MATLAB Coder 2.4 MATLAB Compiler 4.18.1 MATLAB Report Generator 3.14 Model Predictive Control Toolbox 4.1.2 Neural Network Toolbox 8.0.1 RF Toolbox 2.12 Robust Control Toolbox 4.3 Signal Processing Toolbox 6.19 SimPowerSystems 5.8 SimRF 4.0 Simulink Control Design 3.7 Simulink Design Optimization 2.3 Simulink Design Verifier 2.4 Simulink PLC Coder 1.5 Simulink Report Generator 3.14 Symbolic Math Toolbox 5.10 System Identification Toolbox 8.2 Wavelet Toolbox 4.11 xPC Target 5.4 xPC Target Embedded Option 5.4 Bộ môn viễn thông-Bài giảng lưu hành nội DSP Using Matlab Draft version Hình 1.2: Chọn mục cần cài đặt 1.2 Làm quen với Matlab 1.2.1 Giao diện người dùng Layout giao diện người dùng Matlab gồm ba cửa số cần quan tâm Command window, Current folder Workspace Để hiển thị giao diện mặc định ta vào mục Desktop chon Destop layout Default (Đối với Matlab phiên 2012a, phiên chọn Home, Layout, Default) Hình 1.3: Cách hiển thị giao diện mặc định Bộ môn viễn thông-Bài giảng lưu hành nội DSP Using Matlab Draft version 1.2.2 Command Window (command line) Đây cửa sổ nhập lệnh hiển thị kết Matlab Cửa sổ đặc biệt dùng để chạy dòng lệnh, đoạn lệnh lệnh truy suất khác Matlab Nó tương tự CMD hình DOS Window, giống cửa sổ conlsole xuất kết quả, proplem kết build IDE mã nguồn C Ví dụ 1.1: Muốn nhập mảng gồm 10 phần tử số nguyên ta thực dòng command line Command window Thư mục Không gian hành biến Hình 1.4: Giao diện làm việc Matlab >>n=1:10; % dòng lệnh để nhập n mảng gồm 10 phần tử nhận giá trị từ 110 Kết biến n hiển thị theo thích columns Bộ mơn viễn thơng-Bài giảng lưu hành nội DSP Using Matlab Draft version Muốn kết không hiển thị ta thêm dấu chấm phẩy cuối lệnh hàm Ví dụ 1.2: muốn nhập Nhập đoạn chương trình đoạn thực chức vẽ đồ thị hình sin ta thực sau: >> n=1:10 y=sin(2*pi/10*n) plot(n,y) Kết số liệu Hình 1.5: Hiển thị kết số liệu Kết xuất cửa sổ đồ thị hình sin Kết Đồ 0.8 họa 0.6 0.4 hiển thị cửa sổ 0.2 riêng (figure) -0.2 -0.4 -0.6 -0.8 -1 10 Hình 1.6: Hiển thị kết đồ họa Bộ mơn viễn thông-Bài giảng lưu hành nội DSP Using Kit TMS320 C6416 Draft version ………………………………………………………………………………………… …… Tạo nhạc đơn âm xuất tần số nốt nhạc Do, Re, Mi, Pha, Son, La, Si Bảng Checklist sinh viên Lab1 Bt.1 Bt.2 Bt.3 Bt.4 Bt.5 Phần trăm hồn thành Chữ ký GV Bộ mơn viễn thơng-Bài giảng lưu hành nội 158 DSP Using Kit TMS320 C6416 Draft version BÀI 10 , 11 THỰC HIỆN BỘ LỌC FIR CHO DỮ LIỆU AUDIO TRÊN KIT DSP (LAB_4, 5) Mục tiêu Nắm nguyên lý hoạt động CODEC Nguyên lý khếch đại âm Thiết kế lọc FIR low pass, thực thi lọc FIR Dùng công cụ fdatool matlab để thiết kế lọc FIR Chuẩn bị: Headphone jack 3.5li Máy tính có cài CCS Jack audio hai đầu 3.5li Bài lab buil không lỗi Lý thuyết lọc FIR ( phần lý thuyết DSP, sách giáo trình chính) Chương trình lab_4 #include "dsk6416_aic23.h" //codec-DSK support file Uint32 fs=DSK6416_AIC23_FREQ_48KHZ; //set sampling rate int gain=1; interrupt void c_int11() //interrupt service routine { short sample_data; sample_data = input_sample(); //input data output_sample(sample_data*gain); //output data return; } void main() { comm_intr(); while(1); //init DSK, codec, McBSP //infinite loop } Debug lab_4 KIT, nhấn F5 chạy chương trình, chức chương trình Bộ mơn viễn thơng-Bài giảng lưu hành nội 159 DSP Using Kit TMS320 C6416 Draft version 10.1 Đưa âm từ bên vào kit Âm lấy mẫu trực tiếp từ mic Hoặc dùng âm phát từ máy tính kết nối với kit qua jac 3.5 li hai đầu 10.2 Cắm jack phone 3.5 li vào audio line out thứ từ trái sang nghe âm xuất Chương trình FIR lab_5 //Fir.c FIR filter with the C6416 DSK Include coefficient file #include "lp1500_256.cof" //coefficient file #include "dsk6416_aic23.h" //codec-dsk support file Uint32 fs=DSK6416_AIC23_FREQ_48KHZ; //set sampling rate int yn = 0; output //initialize filter's short dly[N]; short gbuffer[200]; interrupt void c_int11() //delay samples //ISR { short i; dly[0]=input_sample(); yn = 0; //input newest sample //initialize filter's output for (i = 0; i< N; i++) yn += (h[i] * dly[i]); Bộ môn viễn thông-Bài giảng lưu hành nội //y(n) += h(i)* x(n-i) 160 DSP Using Kit TMS320 C6416 Draft version for (i = N-1; i > 0; i ) //starting @ end of buffer dly[i] = dly[i-1]; //update delays with data move output_sample((short)(yn>>15)); //scale output filter sample gbuffer[i]=((short)(yn>>15)); return; } void main() { comm_intr(); while(1); //init DSK, codec, McBSP //infinite loop } Debug lab5 KIT, nhấn F5 chạy chương trình, chức chương trình 11.1 Lấy mẫu âm từ bên vào kit Âm lấy mẫu trực tiếp từ mic Hoặc dùng âm phát từ máy tính kết nối với KIT qua jac 3.5 mili hai đầu 11.2 Cắm jack phone 3.5 mili vào audio line out thứ từ trái sang nghe âm xuất Bộ môn viễn thông-Bài giảng lưu hành nội 161 DSP Using Kit TMS320 C6416 Draft version Khai báo thông số cho cửa sổ single time với vùng nhớ h (trong file lp1500_256.cpf) Đáp ứng xung lọc FIR Chọn tham số graphic FFT magnitude cho vùng nhớ h Bộ môn viễn thông-Bài giảng lưu hành nội 162 DSP Using Kit TMS320 C6416 Draft version Đáp ứng tần số lọc 11.3 Bài tập Bộ môn viễn thông-Bài giảng lưu hành nội 163 DSP Using Kit TMS320 C6416 Draft version Nhận xét âm nghe lab 4, mơ tả chương trình …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………… …………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… ………………………………………………………………………………………… Viết chương trình đổi chế ngắt sang chế hỏi vòng (khơng dùng ngắt 11) cho lab_4 Viết chương trình thay đổi âm lượng general file cho lab 4 Nhận xét âm nghe lab_5, lọc gì, tần số cắt …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………………………………………………… …………………………………………………… Thiết kế hệ số lọc với tần số cắt 4kHz Fs=48000 từ matlab Hướng dẫn FDAtool Matlab Tại command line Matlab ta gõ Bộ môn viễn thông-Bài giảng lưu hành nội 164 DSP Using Kit TMS320 C6416 Draft version >> fdatool Cửa số thiết kế cho phép ta nhập thông số mong muốn Các thông số cần nhập Fs, Fpass, Fstop, Astop, chek vào mục FIR Lowpass, thơng số lại mặc định Nhấn vào nút Design filter Tiếp đến ta xuất file hệ số để import vào chương trình C Bộ mơn viễn thơng-Bài giảng lưu hành nội 165 DSP Using Kit TMS320 C6416 Draft version Vào Target Generate C header Chọn tham số xuất hình Chọn generate Bộ mơn viễn thơng-Bài giảng lưu hành nội 166 DSP Using Kit TMS320 C6416 Draft version Trong chương trình c ta thay khai báo mục #include lp1500_256.cof thành #include lp5000_n.h //#include "lp1500_256.cof" //coefficient file #include "lp5000_n.h" #include "dsk6416_aic23.h" //codec-dsk support file Uint32 fs=DSK6416_AIC23_FREQ_48KHZ; //set sampling rate Mở file lp5000_n.h, xóa dòng #include "tmwtypes.h", Thay “const int N = 129;” “ defined N 129” Thay “const int16_T h[129]” “short h[N]” Thiết kế lọc bandpass băng thông 3kHz, tần số trung tâm kHz Dùng kỹ thuật điều chế thiết kế FIR bandpass câu Dùng kỹ thuật bỏ mẫu (downsampling) tạo FIR lowpass băng thông 3kHz, 4.5kHz Bộ môn viễn thông-Bài giảng lưu hành nội 167 DSP Using Kit TMS320 C6416 Draft version Dùng kỹ thuật thêm mẫu (upsampling) tạo FIR lowpass 0.75 kHz 10 Thiết kế FIR thông số thiết kế, khác cửa số thiết kế cho nhận xét cửa sổ 11 Tổng hợp lọc đa band để có Equalizer* Bảng Checklist sinh viên Lab4 Lab5 Bt.1 Bt.2 Bt.8 Bt.9 Bt.10 Bt.11 Bt.3 Bt.4 Bt.5 Bt.6 Bt.7 Phần trăm hoàn thành Chữ ký GV Phần trăm hoàn thành Chữ ký GV Bộ môn viễn thông-Bài giảng lưu hành nội 168 DSP Using Kit TMS320 C6416 Draft version BÀI 12 THỰC HIỆN BỘ LỌC IIR CHO DỮ LIỆU AUDIO TRÊN KIT DSP (LAB_6) Mục tiêu Thiết kế lọc IIR Thực thi IIR KIT DSP Chuẩn bị: Headphone jack 3.5li Máy tính có cài CCS Jack audio hai đầu 3.5li Bài lab buil khơng lỗi Lý thuyết lọc IIR Chương trình IIR lab_6 #include "DSK6416_AIC23.h" //codec-DSK support file Uint32 fs=DSK6416_AIC23_FREQ_48KHZ; //set sampling rate #include "bp2000.cof" //#include "impinv.cof" //coefficient file short dly[stages][2] = {0}; //delay samples per stage //ISR interrupt void c_int11() { short i, input; int un, yn; input = input_sample(); for (i = 0; i < stages; i++) //input to 1st stage //repeat for each stage { un=input-((b[i][0]*dly[i][0])>>15) - ((b[i][1]*dly[i][1])>>15); Bộ môn viễn thông-Bài giảng lưu hành nội 169 DSP Using Kit TMS320 C6416 Draft version yn=((a[i][0]*un)>>15)+((a[i][1]*dly[i][0])>>15)+((a[i][2]*dly[i][1])>>15); dly[i][1] = dly[i][0]; dly[i][0] = un; //update delays //update delays input = yn; to next stage //intermediate output->input } output_sample((short)yn); //output final result for time n //return return; ISR from } void main() { comm_intr(); //init DSK, codec, McBSP while(1); //infinite loop } Debug lab_6 KIT, nhấn F5 chạy chương trình, chức chương trình 12.1 Lấy mẫu âm từ bên ngồi vào kit Âm lấy mẫu trực tiếp từ mic Hoặc dùng âm phát từ máy tính kết nối với KIT qua jac 3.5 mili hai đầu Bộ môn viễn thông-Bài giảng lưu hành nội 170 DSP Using Kit TMS320 C6416 Draft version 12.2 Cắm jack phone 3.5 mili vào audio line out thứ từ trái sang nghe âm xuất 12.3 Bài tập Nhận xét âm nghe -2 Mơ tả chương trình, vẽ sơ đồ cấu trúc IIR dùng -3 Thay đổi cấu trúc chương trình chuyển từ ngắt sang hỏi vòng Thiết kế hệ số lọc IIR Matlab, thực thi KIT DSP, xuất âm nhận xét Bộ môn viễn thông-Bài giảng lưu hành nội 171 DSP Using Kit TMS320 C6416 Draft version Bảng Checklist sinh viên Lab4 Lab5 Bt.1 Bt.2 Bt.3 Bt.4 Bt.5 Bt.6 Bt.7 %hoàn thành Chữ ký GV Tài liệu tham khảo: [1] Rulph Chassaing, DSP Applications Using C and the TMS320C6x DSK, 2002, John Wiley & Sons, Inc [2] Vinay K Ingle, John G Proakis, Digital Signal Processing Using MATLAB Third Edition, 2012, Northeastern University, Cengage Learnin, Stamford USA [3] TMS320C6416/C6713 DSK Workshop, Texas Instrument [4] Le Tien Thuong, Xử lí số tín hiệu, Vietnam National University of Ho Chi Minh City, 2001 [5] S J.Orfanidis, Introduction to Signal Processing, Prentice –Hall Publisher 1996, ISBN 0-13-209172-0 [6] Software: MATLAB PACKAGE and DSP Toolbox, Communications toolbox, Wavelets toolbox, Mathworks-Version, TI Code Composer Studio [7] Li Tan, Digital Signal Processing 2nd Edition Fundamentals and Applications,ISBN: 978-0-12-415893 Bộ môn viễn thông-Bài giảng lưu hành nội 172 ... -3 2] n= -3 >> m=[4 7] m= >> m'*n ans = -1 2 10 -1 5 10 12 -1 8 12 14 -2 1 14 m’ có kích thước (4x1) n có kích thước (1x4) m'*n có kích thước (4x4) Malab ngồi tốn hạng bình thường công +, trừ -, ... >> n' >> n=[ -3 2] n= -3 >> n' ans = -3 >> m=[4 7] Nhân hai ma trận >m*n >> n=[ -3 2] n= -3 >> m=[4 7] m= >> n*m Error using * Inner matrix dimensions must agree Bộ môn viễn thông-Bài giảng lưu... sin Kết Đồ 0.8 họa 0.6 0.4 hiển thị cửa sổ 0.2 riêng (figure) -0 .2 -0 .4 -0 .6 -0 .8 -1 10 Hình 1.6: Hiển thị kết đồ họa Bộ môn viễn thông-Bài giảng lưu hành nội DSP Using Matlab Draft version Ví dụ