Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 39 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
39
Dung lượng
2,31 MB
Nội dung
Giới thiệu TMS320C6713 Kit DSK hệ thống DSP hoàn chỉnh Board DSK bao gồm xử lý số dấu chấm động C6713 Codec 32-bit stereo TLV320AIC23 (gọi tắt AIC23) cho việc xuất nhập tín hiệu Bộ codec on board AIC23 sử dụng kỹ thuật sigma-delta để biến đổi A/D D/A Nó kết nối với đồng hồ hệ thống 12 MHz Tần số lấy mẫu thay đổi từ đến 96 Khz Bộ xử lý Kít TMS320C6713 hãng Texas Instrument dựa kiến trúc VLIW (very-long-instruction-word), phù hợp cho giải thuật nặng tính tốn số Bộ nhớ chương trình nội tổ chức để chu kỳ nạp lệnh, lệnh dài 32 bít Các xử lý C67xx (như C6701,C6711 C6713) thuộc họ xử lý C6x dấu chấm động, C62xx C64xx thuộc họ xử lý C6x dấu chấm tĩnh C6713 xử lý dấu chấm tĩnh dấu chấm động Các yêu cầu phần Một số ứng dụng Kít TMS320C6713 Stater Kit TMS320C6713 có ứng dụng lĩnh vực sau: Truyền thông: Modem điện thoại, FAX, tế bào điện thoại, mạng không dây, loa điện thoại, máy trả lời, Âm thanh/tiếng nói: Voice mail, số hóa nén âm tiếng nói, kiểm tra speaker, tổng hợp âm Tự động: Điều khiển động cơ, dừng hoạt động, chuẩn đoán hệ thống… Hệ thống điều khiển: Hệ thống điều khiển servo ổ đĩa, điều khiển máy in laser, điều khiển robot, điều khiển mô tơ động cơ, công cụ điều khiển máy tự động Trong quân đội: Xử lý tín hiệu rađa tín hiệu tàu ngầm, hệ thống định vị tên lửa, modem phát tần số radia HF, đảm bảo khoảng rộng phổ đảm bảo tiếng nói Y học: Thiết bị trợ thích, ảnh MRI (ảnh chụp sử dụng cộng hưởng), ảnh siêu âm, giám sát bệnh nhân Thiết bị đo đạc: Phân tích phổ, tạo tín hiệu Xử lý ảnh: HDTV, nâng cao chất lượng ảnh, xoay chiều hoạt hình • Thành phần Kit Trung tâm chíp xử lý tín hiệu TMS320C6713, chạy xung nhịp 225Khz, TMS320C6713 nằm dịng chíp TMS320C6x TI, dòng vi xử lý tốc độ cao, sử dụng kiến trúc đặc biệt để đáp ứng tác vụ xử lý tín hiệu Dựa kiến trúc VLIW, TMS320C6713 có khả xử lý số thực dấu chấm động coi dịng chíp xử lý tín hiệu mạnh TI Bộ biến đổi tín hiệu AIC23 Bốn cổng kết nối tín hiệu vào ra: MIC IN (Microphone input), LINE IN(line input), LINE OUT (line output) HEADPHONE (headphone output) Trạng thái led Dip Switch DSK cấu hình điều khiển theo nhu cầu người sử dụng Cổng USB giao tiếp với PC Trên cổng thiết kế JTAG nhúng giúp ta sữa lỗi chương trình chạy chip mà khơng cần nối JTAG Cổng PRW (+5V) cung cấp nguồn cho board Cổng cung cấp điện ấp +1.26V cho lõi chíp C6713 +3.3V để ni nhớ thiết bị ngoại vi khác Bộ nhớ: +16MB +512 KB nhớ Flash Bộ nhớ trong: mạch có 264kB nhớ (4 KB đệm liệu L1D; 4KB đệm chương trình L1P; 256 Kb nhớ L2) Dưới sơ đồ phân vùng địa nhớ kít (hình 3.3) Bộ nhớ ngồi: kít DSP có sẵn 16Mb nhớ (SDRAM (Synchronous Dynamic RAM)) + 512 KB nhớ Flash Ngồi kít bổ sung nhớ qua khe cắm mở rộng Với chiều dài ghi 32 bít, kít quản lý 4GB nhớ ngồi Có thể nhận thấy rằng, hoạt động với xung nhịp khơng cao kít TMS320C6713 có dung lượng nhớ lưu trữ lớn, khả xử lý dấu chấm động, có sẵn JTAG nhúng thuận tiện cho debug tính xử lý thời gian thực RTDX, hồn tồn thích hợp cho nhiều ứng dụng thực tế Hình 3.3: Sơ đồ phân vùng địa nhớ 3.1.2 Khái quát chức Các thiết bị ngoại vi board TMS320C6713 DSK giao tiếp với thơng qua nhớ ngồi EMIF (External Memory InterFace) SDRAM, Flash CPLD kết nối với thơng qua bus board Tín hiệu từ nhớ ngồi EMIF kết nối thơng qua card mở rộng, sử dụng khe cắm mở rộng bo Giao tiếp xử lý tín hiệu âm tương tự thơng qua chíp AIC23 Codec jack audio 3.5mm (microphone input, line input, line output, headphone output) Có thể sử dụng microphone line input lấy tín hiệu đầu vào Ngõ tương tự lấy qua ngõ lineout, headphone McBSP0 sử dụng để gửi dòng lệnh tới giao diện điều khiển Codec, McBSP1 sử dụng cho việc đệm liệu âm McBSP0 McBSP1 tái kết nối tới kết nối mở rộng phần mềm Một thiết bị logic lập trình CPLD sử dụng để thực xử lý logic gắn kết thành phần khác board CPLD có ghi sở dùng cho xử lý logic Trên DSK gồm đèn LED công tắt DIP cung cấp người dùng thao tác tác động qua lại Cả hai thực đọc ghi vào ghi CPLD Sử dụng nguồn cung cấp +5V, bo có mạch điều chỉnh điện áp để cung cấp điện cáp 1,26 V cho lõi DSP 3.3 V cho cổng I/O Code Composer giao tiếp với DSK thông qua JTAG giả lập với giao diện cổng USB Các DSK sử dụng với mơ bên ngồi thơng qua kết nối JTAG bên 3.1.3 Bộ nhớ Sơ đồ khối nhớ C6713 Hình 3.4: Sơ đồ khối C6713 DSK sử dụng bốn vùng nhớ ngoại: • CE0: SDRAM • CE1: Bộ nhớ Flash cổng I/O (switch, led’s) • CE2 CE3: chân kết nối tới daughter card Họ C67xx có khơng gian địa byte nhớ lớn Mã nguồn chương trình liệu chứa nơi không gian địa vùng nhớ Độ rộng địa 32 bít Bản đồ sau mơ tả vùng địa xử lý 6713 Theo mặc định, nhớ nằm đầu vùng địa EMIF có vùng địa riêng biệt gọi chip cho phép có khơng gian (CE0 – CE3) SDRAM chiếm giữ CE0 Flash CPLD CE1, CE2 CE3 dành cho card (Daughter Card) Hình 3.5: Bản đồ vùng nhớ • External SDRAM SDRAM (Synchronous DRAM) DSK sử dụng 64 megabit đồng DRAM (SDRAM) EMIF 32-bit SDRAM ánh xạ CE0 (địa 0x80000000), tổng nhớ có sẵn 16MB Bộ điều khiển SDRAM tích hợp phần EMIF phải cấu hình phần mềm cho hoạt động tốt Một số thông số quan trọng liệt kê đây: Bảng 3.1 thông số SDRAM Thông số CE0 Memory Type Num Banks Num Row Address Lines Num Column Address Lines Chu kỳ làm trạng thái Giá trị 32-bit wide SDRAM 12 1400 Một thơng số SDRAM chu kỳ refresh SDRAMs phải refresh liên tục trở nên bất ổn nội dung Các DRAM sử dụng DSK C6713 phải refresh dịng 15,6 micro giây Các cấu hình hiển thị sử dụng giá trị 1400 (0x578 (hex)) Chỉ định chu kỳ refresh (1400 x 11.11ns, chu kỳ clock 90MHz) Tốc độ Refresh = 64 ms / 4096(64ms tự động refresh 4K) • External Flash DSK có 128K Flash Bộ nhớ khơng linh động, lập trình lại Sử dụng lưu trữ liệu ban đầu Lưu trữ số sử dụng trình thực thi Hình 3.6: Kết nối EMIF với Flash Flash loại nhớ mà không bị nội dung nguồn điện tắt Khi truy xuất giống truy xuất nhớ đọc ROM Flash bị xóa khối lớn sectors hay pages Mỗi khối xóa thơng qua chuỗi lệnh đặc biệt lập trình Các khối xóa ghi nội dung trở lại DSK mặc định thêm hai chu kỳ viết cho tất nhớ không đồng Bộ nhớ Flash DSK nhớ không bay hơi, mặc phép ghi lại nội dung, ghi cách dể dàng, mà phải mở khóa (unlock) số lệnh đặc biệt Write 0xAA to 0x5555 Write 0x55 to 0x2AAA Write 0xA0 to 0x5555 Ghi liệu tới 128 byte sector Máy tính dựa vào cơng cụ có sẵn để ghi liệu tới flash Chức BSL cho phép viết tới Flash 3.1.4 Switch cấu hình khởi động DSK có Switch cấu hình cho phép người sử dụng điều khiển trạng thái hoạt động Khối Switch cấu hình có nhãn SW3 gần Switch Reset SW1 dùng điều khiển endianness DSP, SW2, SW3 cấu hình chế độ boot bắt đầu thực thi DSP SW4 điều khiển ghép kênh chip HPI tín hiệu McASP đưa để kết nối mở rộng tới HPI mở rộng Bảng 3.2: Bảng cấu hình Switch 3.1.5 Nguồn cung cấp DSK sử dụng tín hiệu điện áp +5V cấp nguồn cung cấp thơng qua đầu cắm J5 Tín hiệu qua điều chỉnh điện áp bên board để đưa tín hiệu điện áp +1.26V +3.3V Điện áp +1.26V sử dụng cho lõi DSP điện áp +3.3V sử dụng cho cổng I/O chíp khác board Đầu cắm nguồn loại jack cắm 2.5mm Để kiểm tra mức điện áp, ta kiểm tra điểm JP1, JP2 JP4 Tất dòng I/O qua JP2, dòng điện lõi qua JP1 Tất dòng điện hệ thống qua JP4 Đầu J6 dùng điện áp +12V -12V, cung cấp nguồn cho Daughter Card 3.2 Chức thành phần bo TMS320C6713 DSK 3.2.1 TMS320C6713 TMS320C6713 DSP hoạt động tần số 225MHz Lõi DSP thiết kế để thực thi phép toán dấu chấm động Bên ngồi lõi, C6713 tích hợp số tài ngun chip để cải tiến chức tối thiểu hóa phần cứng phát triển phức tạp VLIW Core – kiến trúc xử lý cho phép thực nhiều lệnh xung clock(8 lệnh 6713 DSP) Kiến trúc VLIW đạt mức độ xử lý cao đặt gánh nặng nhiều vào trình biên dịch để xếp thực thi lúc lệnh 192Kbytes nhớ nội – Bộ nhớ tốc độ cao cho thực thi tối đa 64Kbytes L2 cache/RAM – khối 16Kbytes RAM nội cấu RAM cache 4Kb Program/Data caches – cache riêng rẻ cho mã lệnh chương trình liệu On-chip PLL – phát xung clock xử lý từ nguồn xung clock tham chiếu bên timers EDMA controller – điều khiển DMA nâng cao cho phép truyền tải liệu tốc độ cao mà không cần can thiệp từ DSP McBSPs – cổng nối tiếp đệm nhiều kênh Mỗi McBSP dùng cho việc truyền tải liệu nối tiếp tốc độ cao với thiết bị bên ngồi lập trình lại mục đích I/O chung McBSP1 sử dụng để truyền nhận liệu âm từ AIC23 McBSP0 dùng để điều khiển codec thông qua ngõ vào nối tiếp Thanh ghi MISC CPLD sử dụng để chọn McBSP0 McBSP1 nối với AIC23 kết nối mở rộng McASPs – Cổng âm nối tiếp đa kênh Sử dụng cho nhiều kênh ứng dụng âm chuyên nghiệp Không sử dụng DSK, mang lại kết nối mở rộng giao diện I2C – Bus I2C bus nối tiếp hỗ trợ vài thiết bị chuẩn bus EMIF – giao diện nhớ mở rộng Một bus 32 bit nhớ mở rộng thiết bị khác kết nối Nó bao gồm tính trạng thái chờ bên điều khiển SDRAM Giao diện EMIF bao gồm đồng vào dị bộ nhớ DSP thiết kế để thực thi xung nhịp 225MHz với 50MHz từ dao động bên ngồi Để thực thi bình thường 6713 DSK, vịng khóa pha bên cấu hình với nhân chia để đạt 225Mhz từ nguồn tham chiếu 50MHz • Kết nối AIC23 với McBSP0, McBSP1 McBSP0 McBSP1 Control Data Hình 3.7: Kết nối AIC23 với McBSP Các thiết bị TMS320C67x chứa đựng thiết bị ngoại vi để giao tiếp với nhớ off-chip, đồng xử lý, xử lý máy chủ thiết bị nối tiếp Bộ xử lý C6713 gồm có: Enhanced DMA (EDMA) Truy cập nhớ tăng cường trực tiếp (EDMA_enhaced direct memory access) điều khiển truyền tải liệu vùng bảng đồ nhớ không qua can thiệp CPU EDMA cung cấp truyền tải liệu tới/từ nhớ nội, thiết bị ngoại vi nội, thiết bị bên bối cảnh hoạt động CPU EDMA có 16 kênh lập trình độc lập cho phép thao tác 16 hoạt động khác EDMA đọc viết liệu từ vùng nguồn vùng đích tương ứng nhớ EDMA cung cấp việc truyền tải khối truyền tải khung Mỗi kênh EDMA số lượng lập trình độc lập yếu tố liệu khung số lượng khung cho khối EDMA có tính sau: DMA hoạt động độc lập với CPU Thơng lượng cao: Các yếu tố truyền tải với tốc độ xung clock CPU 16 kênh: EDMA giữ việc theo dõi, kiểm tra ngữ cảnh việc truyền tải 16 kênh Tách hoạt động: Một kênh đơn sử dụng truyền nhận, truyền từ/tới thiết bị ngoại vi nhớ Lập trình ưu tiên: Mỗi kênh có ưu tiên lập trình độc lập so với CPU Mỗi kênh địa ghi nguồn đích có số cấu hình cho truyền tải đọc ghi Địa khơng đổi, tăng, giảm điều chỉnh giá trị lập trình Lập trình thay đổi độ rộng truyền tải: Mỗi kênh cấu hình độc lập để truyền tải byte, 16 bít ½ word, 32 bít word Xác thực: Mỗi lần truyền tải hoàn tất, EDMA tự động trình khởi tạo cho lần truyền tải Liên kết: Mỗi kênh EDMA liên kết tới truyền tải sau truyền tải kết tải hoàn tất Sự kiện đồng bộ: Mỗi kênh bắt đầu kiện Chuyển giao đồng phần tử khung EDMA giữ tất liệu truyền nhớ đệm L2/ nhớ điều khiển, thiết bị ngoại vi EDMA di chuyển liệu từ tới địa vùng nhớ bao gồm nhớ nội (L2 SDRAM), thiết bị ngoại vi, nhớ ngoại Bộ điều khiển RAM bao gồm kiện xử lý ngắt, kiện giải mã, tham số RAM, địa phần cứng EDMA có 16 kênh độc lập chúng giành ưu tiên Sau kiện xuất hiện, truyền tải bảng đọc từ bảng RAM (PaRAM) EDMA truyền tải bit bytes, 16 bít 1/2words, 32 bít words Sau truyền tải, nguồn và/hoặc đích yếu tố địa giống nhau, tăng, giảm yếu tố, tăng giảm giá trị ghi ELECXD cho kênh Sau chương trình truyền tải kết thúc, EDMA tiếp tục cho truyền liệu link liên kết chương trình tới kênh khác EDMA C6713 hỗ trợ 16 kênh EDMA o • Thanh ghi xử lý kiện +ER (Event Register): kiện n phát hiện, bít n cài đặt vào EER +EER (Event Enable Register): bít n thiết lập cho phép xử lý kiện Giá trị khơng cho phép +ECR (Event Clear Register): kiện cho phép EER đưa lên ER, bít ER tự động xóa EDMA xử lý truyền tải kiện Nếu kiện bị vơ hiệu hóa, CPU xóa bít cờ kiện ER +ESR (Event Det Register): Giá trị chấp nhận thiết lập kiện, cho phép CPU yêu cầu sử dụng công cụ gỡ lỗi Host Port Interface (HPI) Giao diện Host-Port (HPI_Host-Port Interface) port song song 16 bít thơng qua xử lý chủ truy xuất trực tiếp không gian nhớ CPU Chức thiết bị máy chủ quản lý giao diện, tăng lên dễ dàng việc truy cập Máy chủ CPU trao đổi thông tin thông qua nhớ ngồi Hình 3.22: Thiết lập Mem modem 3.3.5 Tạo Project Tạo Project viết code Tạo Project : Project/ new, chọn Target với dòng KIT dùng TMS32C67xx Hình 3.23 : chọn target Viết code C (.c): File->New->Source File, viết code chương trình Lưu vào vào thư mục File->Save Lưu vào thư mục trên, file c (file bt.c) Thêm file c vào Project: Project->Add Files to Project Thêm file c tạo vào (bt.c) Hình 3.24 Cửa sổ viết Code • Thêm số file cần thiết Project->Add Files to Project Nhấp phải vào Include, chọn Add files to Project Hình 3.25 Thêm file vào project Thêm tất file dùng đoạn chương trình vào: "tonecfg.h","dsk6713.h","dsk6713_aic23.h" Tương tự, nhấp phải vào Libraries, chọn Add files to Project, Add filedsk6713bsl.lib Hình 3.26: thêm file vào project 3.3.6 Built Run Quá trình built ứng dụng trải qua trình tự hình … Hình 3.27 Trình tự xây dựng (built) ứng dụng Built project: Project Rebuild All, Hình 3.28: Cửa sổ built project Nếu thành công, tập tin.out tạo 3.3.7 Vẽ đồ thị CCS Chúng ta vẽ đồ thị tín hiệu miền tần số miền thời gian sử dụng CCS Giả sử có đoạn code sau, cần hiển thị dạng sóng thực thi chương trình với đoạn code #include "DSK6713_AIC23.h" Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; //Tần số lấy mẫu shor output_buffer[256]; const short BUFLEN = 256; int index = 0; void main() { short sample_data; comm_poll(); //init DSK, codec, McBSP while(1) //infinite loop { sample_data = input_sample(); //sample input output_buffer[index] = sample_data; //copy of the data index++; index = index%BUFLEN; //if index is greater than BUFLEN // reinitialize it to zero output_sample(sample_data); //output sample } } Nhận xét, đồ vẽ theo biến output_buffer Vẽ đồ thị Trong cửa sổ CCS, chọn View Graph Time/Frequency Hình 3.29: Thiết lập đồ thị thị miền thời gian Hình 3.30: Thiết lập đồ thị hiển thị miền tần số 3.3.8 Mẹo sửa số lỗi thơng thường • Thiết lập thuộc tính Built Project Build Options Chọn Target Version: C671x Hình 3.31: chọn phiên target Sữa lỗi thuộc tính Suppress linker warnings Project->Build Options(linker tab) Bỏ check“Warm About Output Sections (-w)” Hình 3.32: Suppress linker warnings Mẹo sửa lỗi file: during linking Hình 3.33: sửa lỗi during linking Vấn đề sai đường dẫn include thư viện thuộc tính linker Sửa lỗi này: Ta remove file: rts6700.lib,DSK6713bsl.lib, and csl6713.lib từ linker options thêm thủ công cách add file theo đường dẫn (Project -> Add files toProject…) Hình 3.34: thiết lập thuộc tính linker 3.4 Khảo sát số ứng dụng Kít TMS320C6713 Stater Kit TMS320C6713 có ứng dụng lĩnh vực sau: Truyền thông: Modem điện thoại, FAX, tế bào điện thoại, mạng không dây, loa điện thoại, máy trả lời, Âm thanh/tiếng nói: Voice mail, số hóa nén âm tiếng nói, kiểm tra speaker, tổng hợp âm Tự động: Điều khiển động cơ, dừng hoạt động, chuẩn đoán hệ thống… Hệ thống điều khiển: Hệ thống điều khiển servo ổ đĩa, điều khiển máy in laser, điều khiển robot, điều khiển mô tơ động cơ, công cụ điều khiển máy tự động Trong quân đội: Xử lý tín hiệu rađa tín hiệu tàu ngầm, hệ thống định vị tên lửa, modem phát tần số radia HF, đảm bảo khoảng rộng phổ đảm bảo tiếng nói Y học: Thiết bị trợ thích, ảnh MRI (ảnh chụp sử dụng cộng hưởng), ảnh siêu âm, giám sát bệnh nhân Thiết bị đo đạc: Phân tích phổ, tạo tín hiệu Xử lý ảnh: HDTV, nâng cao chất lượng ảnh, xoay chiều hoạt hình Dưới số ứng dụng: 3.4.1 Tạo tín hiệu sóng Sin 3.4.1.1 Lưu đồ giải thuật 3.4.1.2 Code chương trình phát dạng sóng Sine f=1KHz #include "dsk6713.h" #include "dsk6713_aic23.h" #define SINE_TABLE_SIZE 48 /* Cài đặt cấu hình Codec */ DSK6713_AIC23_Config config = { 0x0017, // DSK6713_AIC23_LEFTINVOL Left line input channel volume 0x0017, // DSK6713_AIC23_RIGHTINVOL Right line input channel volume 0x00d8, // DSK6713_AIC23_LEFTHPVOL Left channel headphone volume 0x00d8, // DSK6713_AIC23_RIGHTHPVOL Right channel headphone volume 0x0011, // DSK6713_AIC23_ANAPATH Analog audio path control 0x0000, // DSK6713_AIC23_DIGPATH Digital audio path control 0x0000, // DSK6713_AIC23_POWERDOWN Power down control 0x0043, // DSK6713_AIC23_DIGIF Digital audio interface format 0x0001, // DSK6713_AIC23_SAMPLERATE Sample rate control 0x0001 // DSK6713_AIC23_DIGACT Digital interface activation }; /* Bảng giá trị 48 mẫu sóng sin */ Int16 sinetable[SINE_TABLE_SIZE] = { 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 }; /* Hàm main */ void main() { DSK6713_AIC23_CodecHandle hCodec; Int16 sample; /* Hàm hổ trợ cho thư viện hàm */ DSK6713_init(); /* Start the codec */ hCodec = DSK6713_AIC23_openCodec(0, &config); for (sample = 0; sample < SINE_TABLE_SIZE; sample++) { /* Gửi mẫu tới kênh trái */ while (!DSK6713_AIC23_write(hCodec, sinetable[sample])); /* Gửi mẫu tới kênh phải */ while (!DSK6713_AIC23_write(hCodec, sinetable[sample])); } /* Close the codec */ DSK6713_AIC23_closeCodec(hCodec); } 3.4.1.3 Hình ảnh dạng sóng Hình 3.35: Hình ảnh dạng sóng Sine 3.4.2 Tạo tín hiệu sóng tam giác 3.4.2.1Cơ sở tính tốn Từ chương trình sóng sin ta thay đổi 48 mẫu giá trị gán cho biến sinetable [SINE_TABLE_SIZE], thành 48 mẫu ứng với dạng sóng tam giác với cách tính tốn sau: Ta có 48 mẫu cho tồn chu kỳ T ½ T 24 mẫu dạng sóng có tính chất đối xứng nên ta tính ¼ T, có 12 mẫu Để tính khoảng mẫu cho xung tam giác ta tính sau:(Để dễ tính tốn ta đổi số thập phân) Ta tính cho chu kỳ đầu (dương) ◊ 7ffd h = 7x163 + 15x162 + 15x161 + 13x160 = 32765 ◊ 0000 h = 0.Từ giá trị cực đại tính đến giá trị cực tiểu 12 khoảng nên chia cho 12 = ◊ ◊ 32765 − = 2730 12 Khoảng giá trị cách mẫu: Vì sóng dạng tam giác hàm tuyến tính nên ta tính 12 giá trị ¼ T sau: STT Số t/phân Số Hex 32760 8190 10920 0aaah 1554h 1ffeh 2aa8h 2730 546 1365 3552h 16380 19110 21840 24570 3ffch 4aa6h 5550h 5ffah 10 2730 6aa4h 11 12 30030 32760 754eh 7ffdh ◊ Giá trị mẫu 12 32765 =7ffd h ◊ ¼ T ta lấy đối xứng qua từ giá thị cực đại Ta tính cho chu kỳ sau (âm) ◊ 8002 h = 8x163 + 0x162 + 0x161 + 2x160 = 32770 Là giá trị cực tiểu nhỏ ◊ ef4c h = 14x163 + 15x162 + 4x161 +12x160 = 61260 Từ giá trị cực tiểu tính đến giá trị 12 khoảng nên chia cho 12 = ◊ ◊ 32770 − ≈ 2730 12 Khoảng giá trị cách mẫu: Vì sóng dạng tam giác hàm tuyến tính nên ta tính 12 giá trị ¼ T lấy giá trị cực tiểu cấp số cộng với số gia 2730 sau: STT Số t/phâ n Số Hex 10 11 12 32770 3550 3823 4096 4369 4642 4915 5188 5461 5734 6007 62800 8002h 8aach 9556h a000h aaaah b554h bffeh caa8h d552h dffch eaa6h f550h ◊ Giá trị mẫu 12 62800 ta lấy giá trị = 0000 h ¼ T ta lấy đối xứng qua từ giá thị cực đại 3.4.2.2 Code chương trình Tương tự đoạn chương trình sóng sin ta thay giá trị bảng Int16 sinetable[SINE_TABLE_SIZE] thành Int16 tamgiactable[SINE_TABLE_SIZE], với giá trị sau: Int16 tamgiactable[SINE_TABLE_SIZE] = { 0x0000 , 0x0aaa , 0x1554 , 0x1ffe , 0x2aa8 , 0x3552 , 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 }; 3.4.2.3 Hình ảnh dạng sóng , , , , , , Hình 3.36: Hình ảnh dạng sóng tam giác 3.4.3 Ứng dụng dùng sw lựa chọn dạng sóng ngõ (sin, vng, tam giác) 3.4.3.1 Code chương trình #include "tonecfg.h" #include "dsk6713.h" #include "dsk6713_aic23.h" #include "dsk6713_led.h" #include "dsk6713_dip.h" #define TABLE_SIZE 48 //chieu dai bang song sin DSK6713_AIC23_Config config = { /* cau hinh codec */ 0x0017, 0x0017, 0x00d8, 0x00d8, 0x0011, 0x0000, 0x0000, 0x0043, 0x0001, 0x0001 }; Int16 sinetable[TABLE_SIZE] = { // Bảng giá trị sóng sin 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 }; Int16 squaretable[TABLE_SIZE] = { //Bảng giá trị sóng vng 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd, 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd, 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x7ffd , 0x8001, 0x8001 , 0x8001 , 0x8001 , 0x8001 , 0x8001 , 0x8001 , 0x8001 , 0x8001, 0x8001 , 0x8001 , 0x8001 , 0x8001 , 0x8001 , 0x8001 , 0x8001 , 0x8001, 0x8001 , 0x8001 , 0x8001 , 0x8001 , 0x8001 , 0x8001 , 0x8001 , 0x8001 }; Int16 triangletable[TABLE_SIZE] = { // Bảng giá trị sóng tam giác 0x0000, 0x0aaa, 0x1554, 0x1ffe, 0x2aa8, 0x3552, 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 }; Int16 out_sample[TABLE_SIZE]; void main() { DSK6713_AIC23_CodecHandle hCodec; Int16 i, sample; DSK6713_init(); DSK6713_LED_init(); DSK6713_DIP_init(); hCodec = DSK6713_AIC23_openCodec(0, &config); while (1) { if (DSK6713_DIP_get(0) == 0) { for (i=0;i