Xử LÝ SỐ TÍn hiệU


 Các ví dụ lập trình trên DSK



tải về 3.7 Mb.
Chế độ xem pdf
trang11/74
Chuyển đổi dữ liệu29.10.2022
Kích3.7 Mb.
#53684
1   ...   7   8   9   10   11   12   13   14   ...   74
TN DSP-2015-01-18-SinhVien (1)

3.2.2. Các ví dụ lập trình trên DSK 
Sau đây là một số ví dụ lập trình để minh họa cho một số đặc tính của CCS và board DSK. 
Mục tiêu chính là để làm quen với các công cụ phần mềm và phần cứng. 
Ví dụ 1: Tạo tín hiệu dùng 8 điểm với điều khiển DIP Switch (sine8_LED) 
Ví dụ này tạo ra một tín hiệu hình sine bằng phương pháp tra bảng. Quan trọng hơn, nó 
minh họa vài đặc tính của CCS trong hiệu chỉnh, xây dựng một project, sử dụng các công cụ 
sinh mã và chạy một chương trình trên bộ xử lý C6713. Chương trình nguồn sine8_LED.c 
thực hiện việc tạo sóng sine có nội dung như dưới đây. 
//Sine8_LED.c Sine generation with DIP switch control 
#include "dsk6713_aic23.h" //support file for codec,DSK 
Uint32 fs = DSK6713_AIC23_FREQ_8KHZ; //set sampling rate 
short loop = 0; //table index 
short gain = 10; //gain factor 
short sine_table[8]={0,707,1000,707,0,-707,-1000,-707};//sine values 
void main() 

comm_poll(); //init DSK, codec, McBSP 
DSK6713_LED_init(); //init LED from BSL 
DSK6713_DIP_init(); //init DIP from BSL 
while(1) //infinite loop 



Bộ Môn Viễn Thông-ĐH Bách Khoa TpHCM
TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 

if(DSK6713_DIP_get(0)==0) //=0 if switch #0 pressed 

DSK6713_LED_on(0); //turn LED #0 ON 
output_sample(sine_table[loop]*gain);//output every Ts (SW0 on) 
if (++loop > 7) loop = 0; //check for end of table 

else DSK6713_LED_off(0); //LED #0 off 
} //end of while (1) 

Giải thích chương trình 
Trong chương trình này, một bảng sine_table được tạo ra và chứa 8 điểm thể hiện giá trị 
của sin(t) tại t = 0, 45, 90, 135, 180, 225, 270 và 315 độ (tỷ lệ 1000). Trong hàm main(), một 
hàm khác, comm_poll, được gọi. Hàm này được chứa trong tập tin c6713dskinit.c. Nó khởi 
động DSK, bộ codec AIC onboard và các cổng nối tiếp trên bộ xử lý C6713.
Lệnh while(1) trong hàm main tạo một vòng lặp vô tận. Khi dip switch 0 được nhấn, LED 0 
được bật lên và tín hiệu sine được tạo ra. Ngược lại, hàm DSK6713_DIP_get(0) sẽ là false 
và LED 0 sẽ tắt. 
Hàm output_sample, chứa trong tập tin hỗ trợ C6713dskinit.c, được gọi để xuất giá trị dữ 
liệu đầu tiên trong bảng sine_table[0] = 0. Chỉ số lặp loop sẽ được tăng dần cho đến hết 
bảng và trở lại giá trị zero. 
Mỗi chu kỳ lấy mẫu T
s
= 1/F
s
= 1/8000 = 0.125ms, giá trị của dip switch 0 được kiểm tra và 
một giá trị tiếp theo trong bảng sine_table (nhân với tỷ lệ gain) được xuất ra. Trong một chu 
kỳ tín hiệu, 8 giá trị dữ liệu ( cách nhau 0.125ms) được xuất ra để tạo một tín hiệu sine. Chu 
kỳ của tín hiệu sine thu được là T = 8

(0.125ms) = 1ms ứng với tần số f = 1/T = 1 kHz. 
Tạo project 
Phần này sẽ minh họa cách tạo một project mới, thêm các tập tin cần thiết để biên dịch 
project sine8_LED. 
1. Trong CCS, chọn Project  New. Trong hộp thoại tạo Project, nhập tên project 
là sine8_LED, chọn Project Type là Executable (.out) và Target là TMSC67xx. 

tải về 3.7 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   7   8   9   10   11   12   13   14   ...   74




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương