Chỉ thị Overrun

Một phần của tài liệu XÂY DỰNG THUẬT TOÁN VÀ MÔ PHỎNG HỆ DSP CỦA TEXAS INSTRUMENTS TRONG MATLAB (Trang 57)

Overrun là khi bộ xử lý không xử lý kịp thuật toán trong một chu kỳ đồng hồ. Kit cung cấp tuỳ chọn Overrun Action để báo cho ngời dùng biết điều này bằng cách bật đèn LED ngoài. Chú ý nếu đã chọn Overrun Action thì không đợc chọn khối C6701 EVM LED để kích đèn LED ngoài.

Overrun Action có 3 tuỳ chọn:

a) None: Không đáp ứng điều kiện Overrun

b) Continue: Khi xảy ra Overrun đèn LED ngoài bật sáng và mô hình tiếp tục đợc thi hành.

c) Halt: khi xảy ra Overrun đèn LED ngoài bật sáng và mô hình bị dừng lại.

3.4. Các tuỳ chọn xây dựng của RTW cho C6701 EVM

Mô hình xử lí tín hiệu số xây dựng trong Simulink có thể sử dụng các khối sau:

- Các khối của th viện C6701 EVM để xử lý các hàm vào/ra. - Các khối của Real – Time workshop

- Các khối của DSP Blockset

- Các khối thời gian rời rạc của Simulink - Các khối cài mã của ngời dùng

Trớc khi tạo mã cho mô hình với RTW, đặt fixed-Step Solver, Stepsize và fixed-Step Solver thích hợp nếu trong mô hình có trạng thái thời gian liên tục và chọn tốc độ lấy mẫu thích hợp.

Khi chọn Target for C6701 EVM thì mục Category liệt kê các danh mục mà RTW dùng để dựng và chạy mô hình. Có 6 danh mục sau:

+ Target Configurtion + TLC debugging

+ TI C6701 Compiler + TI C6701 Linker

+ TI C6701 EVM Runtime

3.4.1. Các tuỳ chọn của Target Configuration

Kích nút Browse để chọn ti-evm 67x, khi đó RTW sẽ tự động chọn System Target file, Template makefile và lệnh make tơng ứng.

3.4.2. Các tuỳ chọn của TI C6701 Compiler

+Byte Oder: C6701 EVM có khả năng chạy cả ở chế độ Little-endian và Big- endian. Chế độ mặc định là Little – enđian. Nếu C6701 EVM phải kết nối với các bộ xử lý khác thì chọn chế độ thích hợp với các bộ xử lý đó. Ví dụ các bộ xử lý của Motorola sử dụng chế độ Big-endian, còn của Intel thì sử dụng Little-endian.

+ Compiler Urbosity: có 3 tuỳ chọn

- Verbose: Trả về các dòng nhắn của Compiler

- Quiet: Bỏ qua các dòng nhắn tiến trình của Compiler. - Super quiet: Bỏ qua tất cả dòng nhắn của Compiler + Symbolic Debugging: Tạo các chỉ lệnh gỡ rối.

+ Retain.asm files: RTW và Develop Kit sẽ giữ lại các .asm file trong th mục hiện hành.

3.4.3. Các tuỳ chọn của TI C6701 Linker

+ Retain.obj file.Linker sử dụng các file obj để tạo ra một file khả thi duy nhất là COFF file (common object file for mat). Tuỳ chọn này sẽ hớng dẫn RTW Kit lu lại các file obj trong th mục hiện hành. Việc lu các file obj có thể làm tăng tốc độ quá trình biên dịch vì không phải biên dịch lại các file đã có.

+ Linker Command file: xác định file lệnh của Linker sẽ đợc thực hiện khi Linker chạy. Có 3 tuỳ chọn sau:

- Internal memory map: Tuỳ chọn này sẽ gọi file lệnh hớng dẫn Linker sử dụng chế độ bộ nhớ nhỏ của C6701 EVM. Khi đó các phần mã không gian kích hoạt ban đầu sẽ đợc đặt trong không gian bộ nhớ 32 KB.

- Full Memory map: Tuỳ chọn này sẽ gọi file lệnh hớng dẫn Linker sử dụng chế độ bộ nhớ lớn. Khi đó các phần mã không đợc kích hoạt đầu sẽ không bị giới hạn.

- User defined: cho phép ngời dùng sử dụng file lệnh của riêng mình. File phải có phần mở rộng là .cmd. Ví dụ My-file.cmd

3.4.4. Các tuỳ chọn của TI C6701 EVM.Runtime

Trớc khi chạy mô hình nh là một file khả thi trên C6701 EVM, ta phải cấu hình các tuỳ chọn Runtime cho mô hình. (adsbygoogle = window.adsbygoogle || []).push({});

+ CPU clock: chọn tốc độ đồng hồ cho bộ xử lý C6701 trên Modul C6701 EVM. Trong C6701 EVM có 2 bộ dao động tạo ra 4 tốc độ đồng hồ là 25, 33, 100 và 133 MHz.

+ Overrun Action: Xem phần chỉ thị Overrun.

+ Build Action: Hớng dẫn RTW công việc cần thực hiện khi ta ấn nút Build. - Build and executie: RTW dựng, tải và chạy file khả thi trên đích.

- Create-ccs-project: RTW mở CCS để tạo ra một Project mới. Tuỳ chọn này cho phép CCS chọn board để định đích khi có nhiều board đợc cài đặt. CCS đánh số các board này từ 0,1,2 Kích nút Select DSP và định đích bằng cách nhập số thứ tự… của board và Procesor (nếu trên một board có nhiều Procesor).

Ví dụ 3-1: Tạo chơng trình và chạy trên C6701 EVM.

Trong ví dụ này ta tạo ra tiếng vọng âm thanh nhờ C6701 EVM. Nối Microphone với đầu cắm Mic in, loa và máy hiện sóng với đầu cắm Line out của C6701 EVM. Để kiểm tra, ta nói vào Microphone và nghe hiệu ứng qua loa hoặc quan sát kết quả trên máy hiện sóng.

1/ Cấu hình các khối nh sau

Hình 3.2: Sơ đồ tạo tiếng vọng a) Đối với khối ADC

Mở hộp thoại Block Parameters và đặt: - Chọn ADC Source Mic in

- Kích bỏ hộp Stereo

- Kích chọn hộp +20dB mic gain boost - Đặt Sample rate về 8000

- Chọn Code data format là 16 bít linear - Chọn Output data type là Double - Chọn Scaling là Normalize - Chọn Source gain là 0.0 - Chọn Samples per frame là 64 b) Đối với khối DAC

- Chọn Codec data format là 16 bit linear - Chọn Scaling là Normalize

- Đặt DAC attenution là 0.0 - Chọn Overflow mode là Saturate 2/ Đặt các tham số mô phỏng

a) Mở hộp thoại Simulink Parameters và chọn trang Solver - Đặt Start time là 0.0

Stop time là inf

- Chọn Solver Option là fixed-step và discrete

- Đặt fixed-step size là Auto và Mode là Single Tasking

b) Để các trang WorkSpace I/O, Diagnostics và Advanced ở các giá trị mặc định 3/ Chọn đích và các tuỳ chọn xây dựng

a) Trên trang Real -Time Workshop, chọn đích là Target for C6701 EVM. b) Trong mục Category chọn TI C6701 Compiler để đặt các tuỳ chọn

- Chọn byte order là Little-endian - Chọn Compiter verbosity là Quiet

Sau đó chọn TI C6701 Linker và đặt: - Kích chọn hộp Retain. obj files

- Chọn Linker Command file là Full memory map, tiếp theo chọn TI C6701 EVM Runtime và đặt.

- Chọn Build Action là Build and execute. - Chọn CPU Clock là 133MHz

- Chọn Overrun là Halt

4/ Dựng và thực hiện mô hình trên C6701 EVM a) Kích nút Build

Quá trình dựng sẽ tạo ra trình khả thi và tải nó vào C6701 EVM. Đến đây, ta có thể chạy mô hình trên C6701 EVM. Ta sẽ nối vào Microphone và quan sát kết quả.

b) Để dừng chơng trình ta kích khối Reset

Lu ý: Mỗi lần muốn chạy chơng trình ,ta phải mở mô hình Simulink, dựng lại và tải trình khả thi vào C6701 EVM bằng cách kích nút Build.

3.5. Định đích là Code Composer Studio (CCS) (adsbygoogle = window.adsbygoogle || []).push({});

Định đích là CCS cho phép sử dụng các công cụ của CCS để gỡ rối quá trình xử lý thời gian thực.

Khi dựng và tải mô hình Simulink vào CCS , Developer’s Kit sẽ mở Code Composer, tạo Project mới cho mô hình và gộp tất cả các file mà nó tạo ra trong quá trình dựng vào Project, nh các file.obj, asm, map và các file khác.

Quá trình định đích cho CCS cũng giống nh cho C6701 EVM. Trớc hết phải cấu hình các tuỳ chọn đích, sau đó dựng dự án trong CCS bằng cách kích nút Make Project. Tóm tắt quy trình nh sau.

1/ Simulink Parameters → Real-Time workshop →TI C6701 EVM Runtime →

Create-ccs-project.

2/ Đặt các tuỳ chọn cho CCS Compiler và Linker 3/ Kích nút Make Project

3.6. Liên kết với CCS IDE và RTDX

Developer’s Kit cung cấp các liên kết giữa MATLAB và bộ xử lý trong Code Composer Studio. Mỗi liên kết gồm 2 đối tợng (Object): đối tợng CCSIDE và đối t- ợng giao diện RTDX. Các đối tợng liên kết không tách biệt nhau. Đối tợng RTDX là lớp con của đối tợng CCSIDE. Để tạo liên kết với các giá trị mặc định , ta dùng lệnh ccsdsp. Ví dụ tạo liên kếtCC

cc=ccsdsp.

Mỗi đối tợng liên kết có nhiều thuộc tính. Để cấu hình liên kết với CCSIDE và RTDX, ta phải đặt giá trị cho các thuộc tính này một cách trực tiếp, hoặc bằng lệnh set.Để lấy lại giá trị, có thể dùng lệnh get, display hoặc lấy trực tiếp.

Ta xem xét các thuộc tính của các đối tợng này. Tên thuộc tính Đối tợng Khả năng cài đặt Mô tả

App CCSIDE Không Là một cấu trúc của MATLAB chứa các thông tin về th mục làm việc. Đây là một đối tợng ActiveX

Apiversion CCSIDE Không Chứa thông tin về số Version của API Boardnum CCSIDE Có Xác định board đích

CCSappexe CCSIDE Có xác định đờng dẫn tới file khả thi trong CCSIDE

dspboard CCSIDE Không Là một điều khiển của MATLAB ActiveX, để ấn định board đích.

dspboards CCSIDE Không Là một điều khiển của MATLAB ActiveX, để ấn định các board đích. dsptask CCSIDE Không Là một điều khiển của MATLAB

ActiveX, để ấn định nhiệm vụ đích.

dsptasks CCSIDE Không Là một điều khiển của MATLAB ActiveX, để ấn định các nhiệm vụ đích. dspuser CCSIDE Không Là một điều khiển của MATLAB

ActiveX chứa các thông tin và điều khiển đích.

mở.

page CCSIDE Không Lu trang bộ nhớ mặc định cho các lệnh đọc và viết.

procnum CCSIDE Có Xác định bộ xử lý đích

procType RTDX Không Nhận biết loại bộ xử lý,ví dụ C67 hoặc C54.

rtdx RTDX Không xác định cú pháp RTDX

rtdxchannel RTDX Không Chứa các thông tin về tên kênh,điều khiển (handle) và chế độ của mỗi kênh đ- ợc mở.

timeout CCSIDE Có xác định khoảng thời gian mà CCSIDE đợi để kết thúc một quá trình nào đó, giá trị mặc định là 10s.

Version RTDX Không Chứa thông tin về phần mềm của RTDX. Bảng 3.3: Thuộc tính của các đối tợng CCSIDE và RTDX.

Ví dụ3- 2: Tạo và sử dụng liên kết với CCS IDE

Liên kết với CCS IDE là một phần của bộ công cụ.Nó cung cấp kết nối giữa MATLAB với bộ sử lí đích trong CCS, cho phép điều khiến các ứng dụng xử lí tín hiệu số từ MATLAB.

Trớc khi sử dụng các hàm liên kết, ta phải chọn bộ xử lí đích.Tuy nhiên, việc chọn này chỉ cần thiết nếu có nhiều board đợc cắm vào máy tính PC, hoặc trên một board có nhiều bộ xử lí. Nếu trên PC chỉ cắm 1 board, và trên board chỉ có một bộ xử lí, thì liên kết sẽ mặc định với bộ xử lí đó. (adsbygoogle = window.adsbygoogle || []).push({});

Trong ví dụ này, ta sẽ thực hiện các vấn đề sau: -Chọn đích.

-Tạo liên kết với CCS IDE.

-Từ MATLAB tải file vào CCS IDE.

-Làm việc với Project của CCS IDE từ MATLAB. -Xoá liên kết.

1/Chọn đích.

Để xem thông tin về các board và bộ xử lí đợc cắm trên PC, ta dùng lệnh: ccsboardinfo.

Từ thông tin trả về, ta sẽ chọn đích. Ví dụ ta chọn đích là board 1, bộ xử lí 0 trong lệnh tạo liên kết sau với CCS IDE.

2/Tạo liên kết với CCS IDE.

cc = ccsdsp(‘boardnum’,1, ‘procnum’,0)

Một cách khác để chọn đích là dùng lệnh boardprocsel. Lệnh này sẽ mở hộp thoại Selection Utility.

[boardnum,procnum] = boardprocsel. Và tạo liên kết

cc = ccsdsp( ‘baordnum’, board, ‘procnum’, procnum)

Tại thời điểm này, CCS sẽ đợc khởi động (nếu trớc đó nó cha đợc khởi động).

-Để hiện màn hình CCS , dùng lệnh: visible(cc,1)

-Để xem thông tin trạng thái của liên kết cc, dùng lệnh: disp(cc)

hoặc: info(cc)

-Để xem đích đã chạy hay cha, dùng lệnh: runstatus = isrunning(cc)

MATLAB trả về: runstatus = 0 (vì đích cha chạy.) 3/Tải file vào CCS.

-Các lệnh sau sẽ tạo đờng dẫn tới Project và tải nó vào CCS .Trong ví dụ này, giả sử bộ xử lí đích của ta là họ C6x0x, và file dự án là ccstut_6x0x.mak, đợc tạo ra từ fike nguồn ccstut.c. Đây là một chơng trình đơn giản minh hoạ các thao tác đọc, ghi bộ nhớ của bộ xử lí đích. File nguồn ccstut.c , file lệnh liên kết ccstut_6x0x.cmd , và file dự án ccstut_6x0x.mak đợc đa ra trong phần phụ lục.

Tuy nhiên, trớc khi thực hiện các lệnh này, ta phải tải file GEL thích hợp để cấu hình các thanh ghi EMIF và khởi hoạt đích. Các file GEL đợc CCS IDE cung cấp sẵn trong th mục \ cc\ gel. Đối với bộ xử lí C6x0x , ta chọn file init6x0x.gel.

Projfile=fullfile(matlabroot, ‘toolbox’, ‘tiddk’, ‘tidemos’, ‘ccstutorial’, ‘ccstut_6x0x.mak’)

projpath = fileparts(projfile)

open(cc,projfile) %mở file dự án.

cd(cc , projpath ) %đổi th mục làm việc.

-Tiếp theo, ta dựng file khả thi trong CCS IDE bằng cách chọn project  build từ thanh Menu của CCS IDE.

-Để tải file khả thi vào đích,dùng lệnh: load(cc, ‘a.out’)

-Trong file nguồn ccstut.c có 2 mảng dữ liệu là ddat và idat đợc khai báo tại dòng 10 và 11. Để xem dịa chỉ của mảng ddat ,ta dùng lệnh:

ddata = address(cc, ‘ddat’ )

-Để chuyển địa chỉ này về dạng hexa, ta dùng lệnh: dec2hex(ddata)

4/Làm việc với Project của CCS IDE từ MATLAB. (adsbygoogle = window.adsbygoogle || []).push({});

-Trong CCS IDE , ta đặt điểm ngắt (break point) tại dòng 26.Đó là dòng: Printf(“Link for Code Composer :Tutorial- Memory Modified by MATLAB!\ n ”);

Sau đó ta chạy chơng trình.

halt(cc) %dừng bộ xử lí.

restart(cc) %đặt bộ đếm về đằu chơng trình. Run(cc, ‘runtohalt’,30) %chạy chơng trình tới điểm ngắt,

Timeout=30 s. Trong CCS IDE , chơng trình dừng tại dòng 26 và trả về:

Link for Code Composer :Tutorial-Initialized memory Double Data array=16.3 -2.13 5.1 11.9

Integer Data array=1 508 647 7000 Chơng trình không trả gì về MATLAB.

-Để các dữ liệu này đợc trả về MATLAB,ta dùng lệnh read. ddatv = read(cc,address(cc, ‘ddat’, ‘double’,4)) Trả về MATLAB: 16.3000 -2.1300 5.1000 11.8000.

Trả về MATLAB: 1 508 647 7000.

-Để thay đổi giá trị lu trong ddat hoặc idat,ta dùng lệnh write.Ví dụ, ta ghi các giá trị mới là: pi , 12 , exp(-1) , và sin(pi/4) vào ddat.

Write(cc,address(cc, ‘ddat’) ,double([pi 12 exp(-1) sin(pi/4)])) -Chạy lại chơng trình.

run(cc, ‘runtohalt’,30)

Trong CCS IDE , ta có thể kiểm tra các giá trị mới của ddat và idat. Để trả các giá trị mới này về MATLAB, ta lại dùng lệnh read.

-Cuối cùng , ta đặt bộ đếm về đầu chơng trình. restart(cc)

Ngoài hai lệnh read và write, bộ công cụ còn cung cấp cặp lệnh regread và regwrite để đọc và ghi các thanh ghi của bộ xử lí đích. Ví dụ, để đọc nội dung thanh ghi A0, ta dùng lệnh:

cc.regread( ‘A0’, ‘binary’)

Đế xem nội dung các thanh ghi, trong CCS ID, ta chọn View  CPU registers  Core registers.

5/Xoá liên kết với CCS IDE, ta dùng lệnh: clear(cc)

3.7. Kết luận chơng

Trong chơng này, luần văn đã ngiên cứu các phần chính sau:

-Công dụng và thành phần của bộ công cụ phát triển cho các bộ xử lí tín hiệu số của TI.

-Sử dụng th viện các khối vào ra của C6701EVM. -Xây dựng và tải trình khả thi cho đích là C6701EVM. -Các liên kết với CCS và RTDX.

-Và phần phụ lục của luận văn trình bày toàn bộ các hàm phục vụ các liên kết này.

Chơng 4: Mô phỏng thuật toán điều chế xung mã (PCM)

4.1. Giới thiệu

Điều chế xung mã (PCM: Pulse Code Modulation) là dạng mã hoá thờng gặp nhất trong các hệ thống truyền dẫn tín hiệu số, áp dụng cho cả tín hiệu thoại, nhóm kênh thoại, tín hiệu video Điều chế xung mã đ… ợc thực hiện theo quy trình gồm 4 bớc nh sau :

- Lọc thông thấp nhằm hạn chế phổ tần của tín hiệu liên tục cần truyền.

- Lẫy mẫu .

- Lợng tử hoá .

- Mã hoá . (adsbygoogle = window.adsbygoogle || []).push({});

Quá trình khôi phục ở phần thu đợc thực hiện nh sau:

- Giải mã để đợc chuỗi xung lợng tử hoá.

- Lọc thông thấp có tần số cắt bằng một nửa tần số lấy mẫu .

Sai số giữa tín hiệu nguyên bản ở đầu phát và tín hiệu phiên bản ở đầu thu gây ra bởi các nguyên nhân sau:

- Việc lấy mẫu không thể tiến hành trong thời gian vô hạn .

- Sai số lợng tử hoá.

- Đặc tính lọc không hoàn toàn lý tởng.

- Phiên bản là một tín hiệu có phổ hạn chế.

Về nguyên tắc, PCM đợc thực hiện bằng cách mã hoá các giá trị mẫu đợc l- ợng tử hoá của tín hiệu liên tục ở đầu vào. Số bít mã cần thiết, chẳng hạn cho tín hiệu thoại, đợc CCITT xác định phải là 8, tần số lấy mẫu tiêu chuẩn là 8KHz. Nh vậy tốc độ tín hiệu thoại sẽ là 64 kb/s, chiếm phổ tần khá lớn.

Một phần của tài liệu XÂY DỰNG THUẬT TOÁN VÀ MÔ PHỎNG HỆ DSP CỦA TEXAS INSTRUMENTS TRONG MATLAB (Trang 57)