Tài liệu 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: BÀI BÁO CÁO THÍ NGHIỆMXỬ 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...
14 trang |
Chia sẻ: hunglv | Lượt xem: 1302 | Lượt tải: 0
Bạn đang xem nội dung tài liệu 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, để 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ỆMXỬ 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:
- BaiBaoCaoThiNghiemDSPSo1 _Fixed.doc