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

Chương trình tín hiệu sóng VUÔNG: Trong ¼T đầu tiên ta chon là giá trị là 0000 h và 1/4T tiếp theo ta có thể chọn cực đại hay cực tiểu và lập lại đủ tần số lấy mẫu. Và cũng có thể chọn trong 1/2T đầu là giá trị cực đại hay cực tiểu đều được và 1/2T tiếp theo là ngược lại.

doc14 trang | Chia sẻ: maiphuongdc | Lượt xem: 3089 | Lượt tải: 3download
Bạn đang xem nội dung tài liệu Báo cáo Thí nghiệm xử lý số tín hiệu, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
BÀI BÁO CÁO THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU Họ và tên: Trần Công Quang Mã số SV: 910473D Nhóm: 4. Lớp: 09DD2N. Ngày làm TN: Thứ ba ngày 17, 24 tháng 3 năm 2009 – TN Ca: 4 Chiều. BÀI 1: TÌM HIỂU về KIT THÍ NGHIỆM TMS320C6713 và CÁCH CÀI ĐẶT DRIVER CHO KIT, TẠO MỚI 1 PROJECT Phần1: TÌM HIỂU VỀ KIT TMS320C6713: Mục Đích: _ Biết cách cài đặt KIT thí nghiệm vào máy tính và test KIT thí nghiệm này từ máy tính và sử dụng. _ Cho ta biết cách chạy chương trình thí nghiệm và tạo mới một project trong CCS. _ Cho ta biết cách lập trình cho DSK 6713. Bằng cách viết chương trình bằng ngôn ngữ C. _ Từ chương trình mẫu tạo tín hiệu sóng SIN tương tự từ KIT thí nghiệm ra LINE OUTPUT đến loa công suất nhỏ. Ta có thể thay đổi tín hiệu bởi xung tam giác, xung răng cưa, xung vuông. PHẦN THÍ NGHIỆM: Cài đặt KIT thí nghiệm vào máy tính: Đặt KIT thí nghiệm ở vị trí an toàn. Ta kết nối Port USB từ KIT đến cổng USB của máy tính. Và kết nối ngõ ra của tính hiệu từ KIT (LINE OUTPUT) đến loa có công suất nhỏ. Kết nối nguồn cho KIT thí nghiệm qua Adapter của KIT. => Như hình sau: Test KIT thí nghiệm từ máy tính: Ta mở chương trình Test KIT với tên là 6713 DSK Diagnostics Utility: với biểu tượng là. Tiếp theo hộp thoại 6713 DSK Diagnostics xuất hiện: Khi chọn nút Start chương trình sẽ tự động kiểm tra phần cứng của KIT thí nghiệm. khi tất cả các đèn xanh trên hộp thoại sáng là KIT đã được chuẩn bị sẳn sàng cho phần thí nghiệm. Chạy chương trình và các tạo mới một project: Mở chương trình ứng dụng cho KIT thí nghiệm với tên là: 6713 DSK CCStudio v3.1, biểu tượng như sau: Khi chương trình chạy thì xuất hiện với hình dạng ngắn gọn như sau: Ta tạo mới Project với các bước như sau (ở đây ta không tạo mới mà ta mở chương trình mẩu với cấu trúc đơn giản nhất sau đó nếu cần thiết từ chương trình đơn giản này ta chỉnh sửa lại ): Vào Tab Project à Open… à Ổ đỉa C (đường dẫn đến file mẩu. Ta có đường dẫn này khi ta cài đặt chương trình) à CCStudio à Examples à dsk 6713 à bsl à tone. Khi ta mở file tone. Thì ta có đoạn chương trình mẩu như sau: Chương trình tín hiệu sóng sin: Gọi thư viện chương trình cho KIT thí nghiệm Khai báo biến toàn cục #include "dsk6713.h" #include "dsk6713_aic23.h" #include "dsk6713_led.h" #include "dsk6713_dip.h" short loop = 0 ; short gain = 10 ; Int16 outbuffer[256] ; // Khai báo kiểu số nguyển cơ số 16, và 4 bít Int16 out_buffer ; const short BUFFERLENGTH = 256 ; //khai báo hằng. int i = 0 ; DSK6713_AIC23_Config config = Gán 10 giá trị cho biến config Gán 48 giá trị cho mảng sinetable Gọi các hàm { 0x0017, 0x0017, 0x00d8, 0x00d8, 0x0011, 0x0000, 0x0000, 0x0043, 0x0001, 0x0001 }; Int16 sinetable[48] = { 0x0000 , 0x10b4 , 0x2120 , 0x30fb , 0x3fff , 0x4dea , 0x5a81 , 0x658b , 0x6ed8 , 0x763f , 0x7ba1 , 0x7ee5 , 0x7ffd , 0x7ee5 , 0x7ba1 , 0x76ef , 0x6ed8 , 0x658b , 0x5a81 , 0x4dea , 0x3fff , 0x30fb , 0x2120 , 0x10b4 , 0x0000 , 0xef4c , 0xdee0 , 0xcf06 , 0xc002 , 0xb216 , 0xa57f , 0x9a75 , 0x9128 , 0x89c1 , 0x845f , 0x811b , 0x8002 , 0x811b , 0x845f , 0x89c1 , 0x9128 , 0x9a76 , 0xa57f , 0xb216 , 0xc002 , 0xcf06 , 0xdee0 , 0xef4c }; Uint32 fs = DSK6713_AIC23_FREQ_48KHZ ; // gọi chương trình con trong thư viện. void main ( ) // chương trình chính. { DSK6713_AIC23_CodecHandle hCodec ; DSK6713_init ( ) ; DSK6713_LED_init ( ) ; DSK6713_DIP_init ( ) ; hCodec = DSK6713_AIC23_openCodec ( 0 , &config ) ; while ( 1 ) // Các cấu trúc vòng lặp và điều kiện, gọi hàm, gán biến. { if (DSK6713_DIP_get ( 0 ) == 0) { DSK6713_LED_on ( 0 ) ; outbuffer [ i ] = sinetable [ loop ] ; out_buffer = outbuffer [ i ] ; while ( !DSK6713_AIC23_write (hCodec , sinetable [ loop ] - gain )) ; while ( !DSK6713_AIC23_write (hCodec , sinetable [ loop ] - gain )) ; i++; if ( i==BUFFERLENGTH) i = 0; if (++loop > 47) loop = 0 ; } else DSK6713_LED_off ( 0 ) ; } } DSK6713 openCodec ( ) hCodec = DSK6713 AIC23 openCodec ( 0 , &c o n f i g ) ; hCodec = DSK6713 AIC23 closeCodec ( 0 , &c o n f i g ) ; Trên là chương trình mã hóa từ chương trình ra tín hiệu Sin với tấn số 1KHz, do chọn trên KIT là 16 bit ra code, và code được cấu hình để chấp nhận dử liệu là 48000 mẫu dử liệu stereo trên 1s và có bảng giá trị là 48 mẩu trong 1 chu kỳ. Tín hiệu được chuyển sang tín hiệu tương tự phát ra ngõ Line Output đến loa công suất nhỏ. Khi ta viết chương trình xong, ta kết nối KIT với máy tính bằng phím nóng Alt + C (hoặc ta vào tab Debug hoặc biểu tương ở góc trái dưới của chương trình). Tiếp theo vào Tab Option: Ta thiết lập các thông số cho KIT cung như giá trị, tần số cho chương trình thực hiện đúng. Để Build và Load project ta nhấn phím F7 cũng có thể Project à Build hoặc biểu tượng. Để chạy chương trinh nhấn phím F5 hoặc Debug à Run. Và ngưng là Shift + F5. Kết quả hình ảnh dạng sóng sin thu được khi ta vào: View à Graph. Ta được hình sau: Chương trình tín hiệu sóng TAM GIÁC: Từ chương trình sóng sin ở trên ta chỉ thay đổi 48 mẫu giá trị gán cho biến sinetable [48], thành 48 mẩu mới ứng với dạng sóng tam giác để hiểu rỏ chương trình ta có thể thay đổi tên biến sinetble [48] cho phù hợp. Với cách tính toán là như sau Ta có 48 mẫu cho toàn chu kỳ T vậy ½ T là 24 mẫu nhưng do dạng sóng có tính chất đối xứng nên ta có thể tính trong ¼ T, thì có 12 mẫu đầu tiên. Để tính khoảng mẩu cho xung tam giác ta tính như sau:(Để dể tính toán ta đổi về số thập phân). Ta tính cho nữa chu kỳ đầu (dương). 7ffd h = 7x163 + 15x162 + 15x161 + 13x160 = 32765. 0000 h = 0.Từ giá trị cực đại trên tính đến giá trị cực tiểu này là 12 khoảng nên chia cho 12. Khoảng giá trị giữa cách mẫu: Vì sóng dạng tam giác là hàm tuyến tính nên ta tính được 12 giá trị trong ¼ T là như sau: STT 1 2 3 4 5 6 7 8 9 10 11 12 Số thập phân 2730 5460 8190 10920 13650 16380 19110 21840 24570 27300 30030 32760 Số Hex 0aaa h 1554 h 1ffe h 2aa8 h 3552 h 3ffc h 4aa6 h 5550 h 5ffa h 6aa4 h 754e h 7ffd h Giá trị mẫu 12 là 32760 32765 =7ffd h. ¼ T tiếp theo ta lấy đối xứng qua từ giá thị cực đại. Ta tính cho nữa chu kỳ sau (âm). 8002 h = 8x163 + 0x162 + 0x161 + 2x160 = 32770. Là giá trị cực tiểu nhỏ nhất ef4c h = 14x163 + 15x162 + 4x161 +12x160 = 61260. Từ giá trị cực tiểu tính đến giá trị này là 11 khoảng nên chia cho 11 khoảng. Khoảng giá trị giữa cách mẫu: Vì sóng dạng tam giác là hàm tuyến tính nên ta tính được 12 giá trị trong ¼ T là lấy giá trị cực tiểu cấp số cộng với số gia là 2730 được như sau: STT 1 2 3 4 5 6 7 8 9 10 11 12 Số thập phân 32770 35500 38230 40960 43690 46420 49150 51880 54610 57340 60070 62800 Số Hex 8002 h 8aac h 9556 h a000 h aaaa h b554 h bffe h caa8 h d552 h dffc h eaa6 h f550 h Giá trị mẫu 12 là 62800 ta lấy giá trị này là 0 = 0000 h. ¼ T tiếp theo ta lấy đối xứng qua từ giá thị cực đại. Đoạn chương chình viết lại cho sóng Tam Giác là: Gọi thư viện chương trình cho KIT thí nghiệm Khai báo biến toàn cục #include "dsk6713.h" #include "dsk6713_aic23.h" #include "dsk6713_led.h" #include "dsk6713_dip.h" short loop = 0 ; short gain = 10 ; Int16 outbuffer[256] ; // Khai báo kiểu số nguyển cơ số 16, và 4 bít Int16 out_buffer ; const short BUFFERLENGTH = 256 ; //khai báo hằng. int i = 0 ; DSK6713_AIC23_Config config = { 0x0017, 0x0017, 0x00d8, Gán 10 giá trị cho biến config 0x00d8, 0x0011, 0x0000, 0x0000, 0x0043, 0x0001, 0x0001 }; Int16 tamgiactable[48] = { 0x0000 , 0x0aaa , 0x1554 , 0x1ffe , 0x2aa8 , 0x3552 , Gán 48 giá trị cho biến sinetable 0x3ffc , 0x4aa6 , 0x5550 , 0x5ffa , 0x6aa4 , 0x754e , 0x7ffd , 0x754e , 0x6aa4 , 0x5ffa , 0x5550 , 0x4aa6 , 0x3ffc , 0x3552 , 0x2aa8 , 0x1ffe , 0x1554 , 0x0aaa , 0x0000 , 0xf550 , 0xeaa6 , 0xdffc , 0xd552 , 0xcaa8 , 0xbffe , 0xb554 , 0xaaaa , 0xa000 , 0x9556 , 0x8aac , 0x8002 , 0x8aac , 0x9556 , 0xa000 , 0xaaaa , 0xb554 , 0xbffe , 0xcaa8 , 0xd552 , 0xdffc , 0xeaa6 , 0xf550 }; Uint32 fs = DSK6713_AIC23_FREQ_48KHZ ; // gọi chương trình con trong thư viện. void main ( ) // chương trình chính. Gọi các hàm { DSK6713_AIC23_CodecHandle hCodec ; DSK6713_init ( ) ; DSK6713_LED_init ( ) ; DSK6713_DIP_init ( ) ; hCodec = DSK6713_AIC23_openCodec ( 0 , &config ) ; while ( 1 ) // Các cấu trúc vòng lặp và điều kiện, gọi hàm, gán biến. { if (DSK6713_DIP_get ( 0 ) == 0) { DSK6713_LED_on ( 0 ) ; outbuffer [ i ] = tamgiactable [ loop ] ; out_buffer = outbuffer [ i ] ; while ( !DSK6713_AIC23_write (hCodec , tamgiactable [ loop ] - gain )) ; while ( !DSK6713_AIC23_write (hCodec , tamgiactable [ loop ] - gain )) ; i++; if ( i==BUFFERLENGTH) i = 0; if (++loop > 47) loop = 0 ; } else DSK6713_LED_off ( 0 ) ; } } DSK6713 openCodec ( ) hCodec = DSK6713 AIC23 openCodec ( 0 , &c o n f i g ) ; hCodec = DSK6713 AIC23 closeCodec ( 0 , &c o n f i g ) ; => Sau khi chạy chương trình và load dạng sóng ta được như sau: Chương trình tín hiệu sóng RĂNG CƯA: Tương tự như phần tính dạng sóng Tam Giác, ta cũng tính được 1/4T, lấy mẫu được 13 mẫu với 12 khoảng. Ta tính cho nữa chu kỳ đầu (dương). 7ffd h = 7x163 + 15x162 + 15x161 + 13x160 = 32765. 0000 h = 0. Khoảng giá trị giữa cách mẫu: Vì sóng dạng răng cưa là hàm tuyến tính nên ta tính được 12 giá trị trong ¼ T là như sau: STT 1 2 3 4 5 6 7 8 9 10 11 12 Số thập phân 0 2978 5957 8935 11914 14893 17871 20850 23829 26807 29786 32765 Số Hex 0000 h 0ba2 h 1745 h 22e7 h 2e8a h 2a2d h 45cf h 5172 h 5d15 h 68b7 h 745a h 7ffd h Giá trị mẫu 12 là 32760 32765 =7ffd h. ¼ T tiếp theo ta lấy đối xứng qua từ giá thị cực đại. Đoạn chương trình khai báo và gán giá trị lấy mẫu cho mảng rangcuatable [48] “sinetable [48]”, là như sau: Int16 sinetable[48] = { 0x0000 , 0x0ba2 , 0x1745 , 0x22e7 , 0x2e8a , 0x2a2d , Gán 48 giá trị cho biến sinetable 0x45cf , 0x5172 , 0x5d15 , 0x68b7 , 0x745a , 0x7ffd , 0x0000 , 0x0ba2 , 0x1745 , 0x22e7 , 0x2e8a , 0x2a2d , 0x45cf , 0x5172 , 0x5d15 , 0x68b7 , 0x745a , 0x7ffd , 0x0000 , 0x0ba2 , 0x1745 , 0x22e7 , 0x2e8a , 0x2a2d , 0x45cf , 0x5172 , 0x5d15 , 0x68b7 , 0x745a , 0x7ffd , 0x0000 , 0x0ba2 , 0x1745 , 0x22e7 , 0x2e8a , 0x2a2d , 0x45cf , 0x5172 , 0x5d15 , 0x68b7 , 0x745a , 0x7ffd , }; => Sau khi chạy chương trình và Load dạng sóng ta được như sau: Chương trình tín hiệu sóng VUÔNG: Trong ¼T đầu tiên ta chon là giá trị là 0000 h và 1/4T tiếp theo ta có thể chọn cực đại hay cực tiểu và lập lại đủ tần số lấy mẫu. Và cũng có thể chọn trong 1/2T đầu là giá trị cực đại hay cực tiểu đều được và 1/2T tiếp theo là ngược lại. Giá trị cực tiểu Đoạn chương trình khai báo và gán giá trị lấy mẫu cho mảng vuongtable [48] “sinetable [48]”, là như sau: Int16 sinetable[48] = { 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , Gán 48 giá trị cho mảng sinetable 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x0000 , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , }; => Sau khi chạy chương trình và Load dạng sóng ta được như sau: với hình sau là ta lấy 1/8T chu kỳ. Là 6 giá trị đầu là mức thấp chứ không phải là 12 giá trị ở trên. Chương trình tín hiệu sóng RĂNG CƯA ĐỐI XỨNG KHÔNG LIÊN TỤC: Tương tự như phần tính dạng sóng Tam Giác, ta cũng tính được 1/4T, lấy mẫu được 13 mẫu với 12 khoảng. Ta tính cho nữa chu kỳ đầu (dương). 7ffd h = 7x163 + 15x162 + 15x161 + 13x160 = 32765. 0000 h = 0. Khoảng giá trị giữa cách mẫu: Vì sóng dạng răng cưa là hàm tuyến tính nên ta tính được 12 giá trị trong ¼ T là như sau: STT 1 2 3 4 5 6 7 8 9 10 11 12 Số thập phân 0 2978 5957 8935 11914 14893 17871 20850 23829 26807 29786 32765 Số Hex 0000 h 0ba2 h 1745 h 22e7 h 2e8a h 2a2d h 45cf h 5172 h 5d15 h 68b7 h 745a h 7ffd h Giá trị mẫu 12 là 32760 32765 =7ffd h. ¼ T tiếp theo ta lấy ¼ T thứ 3 của xung Tam Giác ở trên là: Nhưng lúc này với tính chất không còn đối xứng nên ta khi lấy 12 mẫu mới là 11 khoảng nên ta chia cho 11. 8002 h = 8x163 + 0x162 + 0x161 + 2x160 = 32770. Là giá trị cực tiểu nhỏ nhất ef4c h = 14x163 + 15x162 + 4x161 +12x160 = 61260. Từ giá trị cực tiểu tính đến giá trị này là 11 khoảng nên chia cho 11 khoảng. Khoảng giá trị giữa cách mẫu: Vì sóng dạng tam giác là hàm tuyến tính nên ta tính được 12 giá trị trong ¼ T là lấy giá trị cực tiểu cấp số cộng với số gia là 2979 được như sau: STT 1 2 3 4 5 6 7 8 9 10 11 12 Số thập phân 32770 35749 38728 41707 44686 47665 50644 53623 56602 59581 62560 0 Số Hex 8002 h 8ba5 h 9748 h a2eb h ae8e h ba31 h c5d4 h d177 h dd1a h e8bd h f460 h 0000 h Giá trị mẫu 12 là 65539 ta lấy giá trị này là 0 = 0000 h. ¼ T tiếp theo ta lấy đối xứng qua từ giá thị cực đại. Đoạn chương trình khai báo và gán giá trị lấy mẫu cho mảng rangcuadoixungkhonglientuctable [48] “randomtable [48]”, là như sau: Int16 randomtable[SINE_TABLE_SIZE] = Gán 48 giá trị cho biến sinetable { 0x0000 , 0x0ba2 , 0x1745 , 0x22e7 , 0x2e8a , 0x3a2d , 0x45cf , 0x5172 , 0x5d15 , 0x68b7 , 0x745a , 0x7ffd , 0x0000 , 0xf460 , 0xe8bd , 0xdd1a , 0xd177 , 0xc5d4 , 0xba31 , 0xae8e , 0xa2eb , 0x9748 , 0x8ba5 , 0x8002 , 0x0000 , 0x0ba2 , 0x1745 , 0x22e7 , 0x2e8a , 0x3a2d , 0x45cf , 0x5172 , 0x5d15 , 0x68b7 , 0x745a , 0x7ffd , 0x0000 , 0xf460 , 0xe8bd , 0xdd1a , 0xd177 , 0xc5d4 , 0xba31 , 0xae8e , 0xa2eb , 0x9748 , 0x8ba5 , 0x8002 }; => Sau khi chạy chương trình và Load dạng sóng ta được như sau: Chương trình tín hiệu sóng RĂNG CƯA DÍT DẮT: Tương tự như phần tính dạng sóng Tam Giác, ta cũng tính được 1/4T, lấy mẫu được 13 mẫu với 12 khoảng. Ta tính cho nữa chu kỳ đầu (dương). 7ffd h = 7x163 + 15x162 + 15x161 + 13x160 = 32765. 0000 h = 0. Khoảng giá trị giữa cách mẫu: Vì sóng dạng răng cưa là hàm tuyến tính nên ta tính được 12 giá trị trong ¼ T là như sau: STT 1 2 3 4 5 6 7 8 9 10 11 12 Số thập phân 0 2978 5957 8935 11914 14893 17871 20850 23829 26807 29786 32765 Số Hex 0000 h 0ba2 h 1745 h 22e7 h 2e8a h 2a2d h 45cf h 5172 h 5d15 h 68b7 h 745a h 7ffd h Giá trị mẫu 12 là 32760 32765 =7ffd h. ¼ T tiếp theo ta lấy ¼ T thứ 4 của xung Tam Giác ở trên là: Ta tính cho nữa chu kỳ sau (âm). 8002 h = 8x163 + 0x162 + 0x161 + 2x160 = 32770. Là giá trị cực tiểu nhỏ nhất ef4c h = 14x163 + 15x162 + 4x161 +12x160 = 61260. Từ giá trị cực tiểu tính đến giá trị này là 11 khoảng nên chia cho 11 khoảng. Khoảng giá trị giữa cách mẫu: Vì sóng dạng tam giác là hàm tuyến tính nên ta tính được 12 giá trị trong ¼ T là lấy giá trị cực tiểu cấp số cộng với số gia là 2730 được như sau: STT 1 2 3 4 5 6 7 8 9 10 11 12 Số thập phân 32770 35500 38230 40960 43690 46420 49150 51880 54610 57340 60070 62800 Số Hex 8002 h 8aac h 9556 h a000 h aaaa h b554 h bffe h caa8 h d552 h dffc h eaa6 h f550 h Giá trị mẫu 12 là 62800 ta lấy giá trị này là 0 = 0000 h. ¼ T tiếp theo ta lấy đối xứng qua từ giá thị cực đại. Đoạn chương trình khai báo và gán giá trị lấy mẫu cho mảng rangcuaditdat [48] “randomtable [48]”, là như sau: Int16 randomtable[SINE_TABLE_SIZE] = Gán 48 giá trị cho biến sinetable { 0x0000 , 0x0ba2 , 0x1745 , 0x22e7 , 0x2e8a , 0x3a2d , 0x45cf , 0x5172 , 0x5d15 , 0x68b7 , 0x745a , 0x7ffd , 0x8002 , 0x8aac , 0x9556 , 0xa000 , 0xaaaa , 0xb554 , 0xbffe , 0xcaa8 , 0xd552 , 0xdffc , 0xeaa6 , 0xf550 , 0x0000 , 0x0ba2 , 0x1745 , 0x22e7 , 0x2e8a , 0x3a2d , 0x45cf , 0x5172 , 0x5d15 , 0x68b7 , 0x745a , 0x7ffd , 0x8002 , 0x8aac , 0x9556 , 0xa000 , 0xaaaa , 0xb554 , 0xbffe , 0xcaa8 , 0xd552 , 0xdffc , 0xeaa6 , 0xf550 }; => Sau khi chạy chương trình và Load dạng sóng ta được như sau: Chương trình tín hiệu sóng Hình Tháp: Tương tự như phần tính dạng sóng Tam Giác, ta cũng tính được 1/4T, lấy mẫu được 13 mẫu với 12 khoảng. Từ dạng sóng Tam Giác và bảng giá trị gán cho 48 mẫu của sóng Tam Giác: Ta tính cho nữa chu kỳ đầu (dương) của dạng sóng Tam Giác, với khoảng giá trị giửa các mẫu vẫn là 2730. Mẫu 1 2 3 4 5 6 7 8 9 10 11 12 13 Số thập phân 0 2730 5460 8190 10920 13650 16380 19110 21840 24570 27300 30030 32760 Số Hex 0000 h 0aaa h 1554 h 1ffe h 2aa8 h 3552 h 3ffc h 4aa6 h 5550 h 5ffa h 6aa4 h 754e h 7ffd h Với hình dạng sóng Hình Tháp như trên với ¼ T là 12 mẫu => 11 khoảng cách của các mẫu. Và dạng sóng có 3 đoạn riêng biệt: Đoạn đầu tiên chọn 4 khoảng có 5 mẫu. Mẫu 1 2 3 4 5 Số thập phân 0 2730 5460 8190 10920 Số Hex 0000 h 0aaa h 1554 h 1ffe h 2aa8 h Đoạn 2 chọn 4 khoảng có 4 mẫu tiếp tiếp theo do là đường ngan nên 4 mẫu này = giá trị mẫu cuối của đoạn 1. Mẫu 6 7 8 9 Số thập phân 10920 10920 10920 10920 Số Hex 2aa8 h 2aa8 h 2aa8 h 2aa8 h Đoạn 3 chọn 4 khoảng tiếp theo vậy có 4 mẫu tiếp theo lấy giá trị 10920 +2730. Mẫu 10 11 12 13 Số thập phân 13650 16380 19110 21840 Số Hex 3552 h 3ffc h 4aa6 h 5550 h Giá trị mẫu 13 là 21840 = 5550 h. ¼ T tiếp theo ta lấy đối xứng qua từ giá thị cực đại. Ta tính cho nữa chu kỳ sau (âm) của dạng sóng Tam Giác, với khoảng giá trị giửa các mẫu vẫn là 2730. STT 1 2 3 4 5 6 7 8 9 10 11 12 Số thập phân 32770 35500 38230 40960 43690 46420 49150 51880 54610 57340 60070 62800 Số Hex 8002 h 8aac h 9556 h a000 h aaaa h b554 h bffe h caa8 h d552 h dffc h eaa6 h f550 h Ta nhận thấy ở ½ T thứ 1 của dạng sóng có giá trị cực đại là mẫu thứ 9 của sóng Tam Giác, vậy ở ½ T thứ 3 là cũng lấy tương đương mẫu thứ 9 của ½ T thứ 1, là mẫu thứ 5: (43690 = aaaa h) của ½ T thứ 3 làm giá trị cực tiểu và ta tính được như sau: Đoạn đầu tiên chọn 4 khoảng có 5 mẫu. Mẫu 1 2 3 4 5 Số thập phân 0 62800 60070 57340 54610 Số Hex 0000 h f550 h eaa6 h dffc h d552 h Đoạn 2 chọn 4 khoảng có 4 mẫu tiếp tiếp theo do là đường ngan nên 4 mẫu này = giá trị mẫu cuối của đoạn 1. Mẫu 6 7 8 9 Số thập phân 54610 54610 54610 54610 Số Hex d552 h d552 h d552 h d552 h Đoạn 3 chọn 4 khoảng tiếp theo vậy có 4 mẫu tiếp theo lấy giá trị 43690 + 2730. Mẫu 10 11 12 13 Số thập phân 51880 49150 46420 43690 Số Hex caa8 h bffe h b554 h aaaa h Giá trị mẫu 13 là 43690 ta lấy giá trị này là 0 = aaaa h. ¼ T tiếp theo ta lấy đối xứng qua từ giá thị cực tiểu. Đoạn chương chình viết lại cho sóng Hình Tháp là: Int16 randomtable[SINE_TABLE_SIZE] = Gán 48 giá trị cho biến sinetable { 0x0000 , 0x0aaa , 0x1554 , 0x1ffe , 0x2aa8 , 0x2aa8 , 0x2aa8 , 0x2aa8 , 0x2aa8 , 0x3552 , 0x3ffc , 0x4aa6 , 0x5550 , 0x4aa6, 0x3ffc , 0x3552 , 0x2aa8 , 0x2aa8 , 0x2aa8 , 0x2aa8 , 0x2aa8 , 0x1ffe , 0x1554 , 0x0aaa , 0x0000 , 0xf550 , 0xeaa6 , 0xdffc , 0xd552 , 0xd552 , 0xd552 , 0xd552 , 0xd552 , 0xcaa8 , 0xbffe , 0xb554 , 0xaaaa , 0xb554 , 0xbffe , 0xcaa8 , 0xd552 , 0xd552 , 0xd552 , 0xd552 , 0xd552 , 0xdffc , 0xeaa6 , 0xf550 }; => Sau khi chạy chương trình và Load dạng sóng ta được như sau: Kết luân: Thí nghiệm này cho ta thấy cách xử lý cho sự thay số của KIT trong mảng sintable [48] của chương trình tạo các tín hiệu. Và KIT thí nghiệm cũng cho kết quả dạng sóng thực nhất của tín hiệu số được phát ra. Mà ở đây ta thấy rỏ nhất là sóng Vuông Răng Cưa. Trong các thí nghiệm trên nó sẽ không lý tưởng như ta đặt ra. Là do số mẫu trong 1 chu kỳ, nhỏ nên ta thấy rõ sự chuyển giao của hai mẫu với nhau.

Các file đính kèm theo tài liệu này:

  • docBaiBaoCaoThiNghiemDSPSo1 _Fixed.doc
  • docBaiBaoCaoThiNghiemDSPSo2.doc
  • docBao cao bai 3.doc
  • docBao cao thi nghiem bai 4.doc