30.10.2014 Views

o_195h4n6al16jb186b1b2qs7fgssa.pdf

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

2.2.4 Data Types<br />

The operations provided by the DSP Library have been designed to take<br />

advantage of<br />

the DSP instruction set and architectural features of the dsPIC30F DSC. In this<br />

sense,<br />

most operations are computed using fractional arithmetic.<br />

The DSP Library defines a fractional type from an integer type:<br />

#ifndef fractional<br />

typedef int fractional;<br />

#endif<br />

The fractional data type is used to represent data that has 1 sign bit, and 15<br />

fractional bits. Data which uses this format is commonly referred to as “1.15”<br />

data.<br />

DSP Library<br />

2004 Microchip Technology Inc. DS51456B-page 11<br />

For functions which use the multiplier, results are computed using the 40-bit<br />

accumulator, and “9.31” arithmetic is utilized. This data format has 9<br />

sign/magnitude bits and<br />

31 fractional bits, which provides for extra computational headroom above the<br />

range<br />

(-1.00 to ~+1.00) provided by the 1.15 format. Naturally when these functions<br />

provide<br />

a result, they revert to a fractional data type, with 1.15 format.<br />

The use of fractional arithmetic imposes some constraints on the allowable set<br />

of values to be input to a particular function. If these constraints are ensured, the<br />

operations<br />

provided by the DSP Library typically produce numerical results correct to 14<br />

bits. However, several functions perform implicit scaling to the input data<br />

and/or output results,<br />

which may decrease the resolution of the output values (when compared to a<br />

floating<br />

point implementation.)<br />

A subset of operations in the DSP Library,which require a higher degree of<br />

numerical<br />

resolution, do operate in floating point arithmetic. Nevertheless, the results of<br />

these<br />

operations are transformed into fractional values for integration with the<br />

application.<br />

The only exception to this is the MatrixInvertfunction which computes the<br />

inversion of a floating point matrix in floating point arithmetic, and provides the<br />

results in<br />

floating point format.<br />

2.2.5 Data Memory Usage<br />

The DSP Library performs no allocation of RAM, and leaves this task to you. If<br />

you do<br />

not allocate the appropriate amount of memory and align the data properly,<br />

undesired<br />

Kết quả là, họ trở lại với một kiểu dữ liệu phân đoạn, với các định dạng 1.15.<br />

Việc sử dụng số học phân đoạn áp đặt một số hạn chế trên các thiết lập cho<br />

phép các giá trị là đầu vào cho một chức năng cụ thể. Nếu những khó khăn này<br />

được đảm bảo, các hoạt động<br />

được cung cấp bởi thư viện DSP thường tạo ra kết quả tính toán chính xác đến<br />

14 bit. Tuy nhiên, một số chức năng thực hiện ngầm rộng để các dữ liệu đầu và<br />

và / hoặc kết quả đầu ra,<br />

mà có thể làm giảm độ phân giải của các giá trị đầu ra (khi so sánh với một nổi<br />

thực hiện điểm.)<br />

Một tập hợp các hoạt động trong thư viện DSP, đòi hỏi một mức độ cao hơn củ<br />

số<br />

độ phân giải, không hoạt động nổi điểm số học. Tuy nhiên, kết quả của những<br />

hoạt động được chuyển thành giá trị phân đoạn hội nhập với các ứng dụng.<br />

Ngoại lệ duy nhất này là MatrixInvertfunction mà tính đảo ngược của một ma<br />

trận điểm nổi trong số học dấu chấm, và cung cấp các kết quả trong<br />

nổi định dạng điểm.<br />

2.2.5 Bộ nhớ sử dụng dữ liệu<br />

Thư viện DSP thực hiện không phân bổ bộ nhớ RAM, và để lại nhiệm vụ này<br />

cho bạn. Nếu bạn làm<br />

không phân bổ số tiền thích hợp của bộ nhớ và sắp xếp dữ liệu đúng cách,<br />

không mong muốn<br />

Kết quả sẽ xảy ra khi chức năng thực hiện. Ngoài ra, để giảm thiểu thời gian<br />

thực hiện,<br />

Thư viện DSP sẽ làm không có kiểm tra trên các đối số chức năng cung cấp<br />

(bao gồm cả<br />

con trỏ đến bộ nhớ dữ liệu), để xác định xem họ có giá trị.<br />

Hầu hết các chức năng chấp nhận dữ liệu con trỏ như là đối số chức năng, có<br />

chứa các dữ liệu<br />

được vận hành trên, và thường cũng là vị trí để lưu kết quả. Để thuận tiện,<br />

hầu hết các chức năng trong thư viện DSP mong đợi đối số đầu vào của họ đượ<br />

phân bổ trong<br />

không gian mặc định bộ nhớ RAM (X-dữ liệu hoặc Y-Data), và đầu ra được lưu<br />

trữ trở lại<br />

không gian bộ nhớ RAM mặc định. Tuy nhiên, chức năng tính toán chuyên sâu<br />

hơn<br />

yêu cầu một số toán hạng nằm trong X-Data và Y-Data (hoặc bộ nhớ chương<br />

trình và<br />

Y-Data), để các hoạt động có thể tận dụng lợi thế của dữ liệu kép khả năng lấy<br />

kiến trúc dsPIC30F.<br />

2.2.6 CORCON Đăng ký sử dụng<br />

Nhiều chức năng của thư viện DSP đặt điện thoại dsPIC30F thành một hoạt<br />

động đặc biệt<br />

chế độ bằng cách thay đổi đăng ký CORCON. Trên sự xâm nhập của các chức<br />

năng này, các<br />

CORCON đăng ký được đẩy vào stack. Sau đó nó được sửa đổi để thực hiện<br />

một cách chính xác<br />

mong muốn hoạt động, và cuối cùng đăng ký CORCON được xuất hiện từ ngăn<br />

xếp để bảo toàn giá trị ban đầu của nó. Cơ chế này cho phép các thư viện để<br />

thực thi như một cách chính xác như

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!