NXP MC56F84xxx User guide

Type
User guide

This manual is also suitable for

freescale.com
56800Ex_MLIB
Rev. 0
02/2014
User Reference Manual
Math Library
56800E, 56800Ex
Digital Signal Controller
Math Library, Rev. 0
1-2 Freescale Semiconductor
Chapter 1 License Agreement
FREESCALE SEMICONDUCTOR SOFTWARE LICENSE AGREEMENT.
This is a legal agreement between you (either as an individual or as an authorized
representative of your employer) and Freescale Semiconductor, Inc.
("Freescale"). It concerns your rights to use this file and any accompanying
written materials (the "Software"). In consideration for Freescale allowing you to
access the Software, you are agreeing to be bound by the terms of this Agreement.
If you do not agree to all of the terms of this Agreement, do not download the
Software. If you change your mind later, stop using the Software and delete all
copies of the Software in your possession or control. Any copies of the Software
that you have already distributed, where permitted, and do not destroy will
continue to be governed by this Agreement. Your prior use will also continue to
be governed by this Agreement.
OBJECT PROVIDED, OBJECT REDISTRIBUTION LICENSE GRANT.
Freescale grants to you, free of charge, the non-exclusive, non-transferable right
(1) to reproduce the Software, (2) to distribute the Software, and (3) to sublicense
to others the right to use the distributed Software. The Software is provided to you
only in object (machine-readable) form. You may exercise the rights above only
with respect to such object form. You may not translate, reverse engineer,
decompile, or disassemble the Software except to the extent applicable law
specifically prohibits such restriction. In addition, you must prohibit your
sublicensees from doing the same. If you violate any of the terms or restrictions
of this Agreement, Freescale may immediately terminate this Agreement, and
require that you stop using and delete all copies of the Software in your
possession or control.
COPYRIGHT. The Software is licensed to you, not sold. Freescale owns the
Software, and United States copyright laws and international treaty provisions
protect the Software. Therefore, you must treat the Software like any other
copyrighted material (e.g. a book or musical recording). You may not use or copy
the Software for any other purpose than what is described in this Agreement.
Except as expressly provided herein, Freescale does not grant to you any express
or implied rights under any Freescale or third-party patents, copyrights,
trademarks, or trade secrets. Additionally, you must reproduce and apply any
copyright or other proprietary rights notices included on or embedded in the
Software to any copies or derivative works made thereof, in whole or in part, if
any.
SUPPORT. Freescale is NOT obligated to provide any support, upgrades or new
releases of the Software. If you wish, you may contact Freescale and report
problems and provide suggestions regarding the Software. Freescale has no
obligation whatsoever to respond in any way to such a problem report or
suggestion. Freescale may make changes to the Software at any time, without any
obligation to notify or provide updated versions of the Software to you.
Math Library, Rev. 0
Freescale Semiconductor 1-3
NO WARRANTY. TO THE MAXIMUM EXTENT PERMITTED BY LAW,
FREESCALE EXPRESSLY DISCLAIMS ANY WARRANTY FOR THE
SOFTWARE. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT
WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR
NON-INFRINGEMENT. YOU ASSUME THE ENTIRE RISK ARISING
OUT OF THE USE OR PERFORMANCE OF THE SOFTWARE, OR ANY
SYSTEMS YOU DESIGN USING THE SOFTWARE (IF ANY). NOTHING
IN THIS AGREEMENT MAY BE CONSTRUED AS A WARRANTY OR
REPRESENTATION BY FREESCALE THAT THE SOFTWARE OR ANY
DERIVATIVE WORK DEVELOPED WITH OR INCORPORATING THE
SOFTWARE WILL BE FREE FROM INFRINGEMENT OF THE
INTELLECTUAL PROPERTY RIGHTS OF THIRD PARTIES.
INDEMNITY. You agree to fully defend and indemnify Freescale from any and
all claims, liabilities, and costs (including reasonable attorney's fees) related to
(1) your use (including your sublicensee's use, if permitted) of the Software or
(2) your violation of the terms and conditions of this Agreement.
LIMITATION OF LIABILITY. IN NO EVENT WILL FREESCALE BE
LIABLE, WHETHER IN CONTRACT, TORT, OR OTHERWISE, FOR ANY
INCIDENTAL, SPECIAL, INDIRECT, CONSEQUENTIAL OR PUNITIVE
DAMAGES, INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR ANY
LOSS OF USE, LOSS OF TIME, INCONVENIENCE, COMMERCIAL
LOSS, OR LOST PROFITS, SAVINGS, OR REVENUES TO THE FULL
EXTENT SUCH MAY BE DISCLAIMED BY LAW.
COMPLIANCE WITH LAWS; EXPORT RESTRICTIONS. You must use the
Software in accordance with all applicable U.S. laws, regulations and statutes.
You agree that neither you nor your licensees (if any) intend to or will, directly
or indirectly, export or transmit the Software to any country in violation of U.S.
export restrictions.
GOVERNMENT USE. Use of the Software and any corresponding
documentation, if any, is provided with RESTRICTED RIGHTS. Use,
duplication or disclosure by the Government is subject to restrictions as set forth
in subparagraph (c)(1)(ii) of The Rights in Technical Data and Computer
Software clause at DFARS 252.227-7013 or subparagraphs (c)(l) and (2) of the
Commercial Computer Software--Restricted Rights at 48 CFR 52.227-19, as
applicable. Manufacturer is Freescale Semiconductor, Inc., 6501 William
Cannon Drive West, Austin, TX, 78735.
HIGH RISK ACTIVITIES. You acknowledge that the Software is not fault
tolerant and is not designed, manufactured or intended by Freescale for
incorporation into products intended for use or resale in on-line control
Math Library, Rev. 0
1-4 Freescale Semiconductor
equipment in hazardous, dangerous to life or potentially life-threatening
environments requiring fail-safe performance, such as in the operation of nuclear
facilities, aircraft navigation or communication systems, air traffic control, direct
life support machines or weapons systems, in which the failure of products could
lead directly to death, personal injury or severe physical or environmental
damage ("High Risk Activities"). You specifically represent and warrant that you
will not use the Software or any derivative work of the Software for High Risk
Activities.
CHOICE OF LAW; VENUE; LIMITATIONS. You agree that the statutes and
laws of the United States and the State of Texas, USA, without regard to conflicts
of laws principles, will apply to all matters relating to this Agreement or the
Software, and you agree that any litigation will be subject to the exclusive
jurisdiction of the state or federal courts in Texas, USA. You agree that regardless
of any statute or law to the contrary, any claim or cause of action arising out of or
related to this Agreement or the Software must be filed within one (1) year after
such claim or cause of action arose or be forever barred.
PRODUCT LABELING. You are not authorized to use any Freescale trademarks,
brand names, or logos.
ENTIRE AGREEMENT. This Agreement constitutes the entire agreement
between you and Freescale regarding the subject matter of this Agreement, and
supersedes all prior communications, negotiations, understandings, agreements
or representations, either written or oral, if any. This Agreement may only be
amended in written form, executed by you and Freescale.
SEVERABILITY. If any provision of this Agreement is held for any reason to be
invalid or unenforceable, then the remaining provisions of this Agreement will be
unimpaired and, unless a modification or replacement of the invalid or
unenforceable provision is further held to deprive you or Freescale of a material
benefit, in which case the Agreement will immediately terminate, the invalid or
unenforceable provision will be replaced with a provision that is valid and
enforceable and that comes closest to the intention underlying the invalid or
unenforceable provision.
NO WAIVER. The waiver by Freescale of any breach of any provision of this
Agreement will not operate or be construed as a waiver of any other or a
subsequent breach of the same or a different provision.
Overview
Math Library, Rev. 0
Freescale Semiconductor 2-5
Chapter 2 INTRODUCTION
2.1 Overview
This reference manual describes the Math Library (MLIB) for the Freescale
56F800E(X) family of Digital Signal Controllers. This library contains optimized
functions.
2.2 Supported Compilers
Math Library (MLIB) is written in assembly language with C-callable interface.
The library was built and tested using the CodeWarrior™ Development Studio
version 10.3.
The library is delivered in library module 56800Ex_MLIB.lib and is intended for
use in small data memory model projects. The interfaces to the algorithms
included in this library have been combined into a single public interface include
file, gdflib.h. This was done to simplify the number of files required for inclusion
by application programs. Refer to the specific algorithm sections of this
document for details on the software Application Programming Interface (API),
defined and functionality provided for the individual algorithms.
2.3 Installation
If user wants to fully use this library, the CodeWarrior™ Development Studio
should be installed prior to the Math Library. In case that Math Library is
installed while CodeWarrior™ Development Studio is not present, users can only
browse the installed software package, but will not be able to build, download and
run code. The installation itself consists of copying the required files to the
destination hard drive, checking the presence of CodeWarrior and creating the
shortcut under the Start->Programs menu.
The Math Library release is installed in its own folder named 56800Ex_MLIB.
To start the installation process, perform the following steps:
1. Execute 56800Ex_FSLESL_rXX.exe.
2. Follow the FSLESL software installation instructions on your screen.
2.4 Library Integration
The library integration is described in AN4586 which can be downloaded
from www.freescale.com.
Math Library, Rev. 0
Freescale Semiconductor 2-6
2.5 API Definition
The description of each function described in this Math Library user reference
manual consists of a number of subsections:
Synopsis
This subsection gives the header files that should be included within
a source file that references the function or macro. It also shows an
appropriate declaration for the function or for a function that can be
substituted by a macro. This declaration is not included in your
program; only the header file(s) should be included.
Prototype
This subsection shows the original function prototype declaration
with all its arguments.
Arguments
This optional subsection describes input arguments to a function or
macro.
Description
This subsection is a description of the function or macro. It explains
algorithms being used by functions or macros.
Return
This optional subsection describes the return value (if any) of the
function or macro.
Range Issues
This optional subsection specifies the ranges of input variables.
Special Issues
This optional subsection specifies special assumptions that are
mandatory for correct function calculation; for example saturation,
rounding, and so on.
Implementation
This optional subsection specifies, whether a call of the function
generates a library function call or a macro expansion.
This subsection also consists of one or more examples of the use of
the function. The examples are often fragments of code (not
completed programs) for illustration purposes.
See Also
This optional subsection provides a list of related functions or
macros.
Performance
Data Types
Math Library, Rev. 0
Freescale Semiconductor 2-7
This section specifies the actual requirements of the function or macro
in terms of required code memory, data memory, and number of clock
cycles to execute.
2.6 Data Types
The 16-bit DSC core supports four types of two’s-complement data formats:
Signed integer
Unsigned integer
Signed fractional
Unsigned fractional
Signed and unsigned integer data types are useful for general-purpose
computation; they are familiar with the microprocessor and microcontroller
programmers. Fractional data types allow powerful numeric and
digital-signal-processing algorithms to be implemented.
2.6.1 Signed Integer (SI)
This format is used for processing data as integers. In this format, the N-bit
operand is represented using the N.0 format (N integer bits). The signed integer
numbers lie in the following range:
Eqn. 2-1
This data format is available for bytes, words, and longs. The most negative,
signed word that can be represented is –32,768 ($8000), and the most negative,
signed long word is –2,147,483,648 ($80000000).
The most positive, signed word is 32,767 ($7FFF), and the most positive signed
long word is 2,147,483,647 ($7FFFFFFF).
2.6.2 Unsigned Integer (UI)
The unsigned integer numbers are positive only, and they have nearly twice the
magnitude of a signed number of the same size. The unsigned integer numbers lie
in the following range:
Eqn. 2-2
The binary word is interpreted as having a binary point immediately to the right
of the integers least significant bit. This data format is available for bytes, words,
and long words. The most positive, 16-bit, unsigned integer is 65,535 ($FFFF),
and the most positive, 32-bit, unsigned integer is 4,294,967,295 ($FFFFFFFF).
The smallest unsigned integer number is zero ($0000), regardless of size.
2
N 1
SI 2
N 1
1
0 UI 2
N 1
1
User Common Types
Math Library, Rev. 0
2-8 Freescale Semiconductor
2.6.3 Signed Fractional (SF)
In this format, the N-bit operand is represented using the 1.[N–1] format (one sign
bit, N–1 fractional bits). The signed fractional numbers lie in the following range:
Eqn. 2-3
This data format is available for words and long words. For both word and
long-word signed fractions, the most negative number that can be represented
is –1.0; its internal representation is $8000 (word) or $80000000 (long word).
The most positive word is $7FFF (1.0 – 2
–15
); its most positive long word
is $7FFFFFFF (1.0 – 2
–31
).
2.6.4 Unsigned Fractional (UF)
The unsigned fractional numbers can be positive only, and they have nearly twice
the magnitude of a signed number with the same number of bits. The unsigned
fractional numbers lie in the following range:
Eqn. 2-4
The binary word is interpreted as having a binary point after the MSB. This data
format is available for words and longs. The most positive, 16-bit, unsigned
number is $FFFF, or {1.0 + (1.0 – 2
–[N–1]
)} = 1.99997. The smallest unsigned
fractional number is zero ($0000).
2.7 User Common Types
1.0 SF 1.0 2
N 1
0.0 UF 2.0 2
N 1
Table 2-1. User-Defined Typedefs in 56800E_types.h
Mnemonics Size — bits Description
Word8 8 To represent 8-bit signed variable/value.
UWord8 8 To represent 16-bit unsigned variable/value.
Word16 16 To represent 16-bit signed variable/value.
UWord16 16 To represent 16-bit unsigned variable/value.
Word32 32 To represent 32-bit signed variable/value.
UWord32 32 To represent 16-bit unsigned variable/value.
Int8 8 To represent 8-bit signed variable/value.
UInt8 8 To represent 16-bit unsigned variable/value.
Int16 16 To represent 16-bit signed variable/value.
UInt16 16 To represent 16-bit unsigned variable/value.
Int32 32 To represent 32-bit signed variable/value.
V2 and V3 Core Support
Math Library, Rev. 0
Freescale Semiconductor 2-9
2.8 V2 and V3 Core Support
The library has been written to support both 56800E (V2) and 56800Ex (V3)
cores. The V3 core offers new set of math instructions which can simplify and
accelarete the algorithm runtime. Therefore certain algorithms can have two
prototypes. 2
If the library is used on the 56800Ex core, the V3 algorithms use is recommended
because:
the code is shorter
the execution is faster
the precision of 32-bit calculation is higher
The final algorithm is selected by a define. To select the correct algorithm
implementation the user has to set up a define: OPTION_CORE_V3. If this
define is not defined, it is automatically set up as 0. If its value is 0, the V2
algorithms are used. If its value is 1, the V3 algorithms are used.
The best way is to define this define is in the project properties (see Figure 2-1):
1. In the left hand tree, expand the C/C++ Build node
2. Click on the Settings node
3. Under the Tool Settings tab, click on the DSC Compiler/Input node
4. In the Defined Macros dialog box click on the first icon (+) and type the
following: OPTION_CORE_V3=1
5. Click OK
6. Click OK on the Properties dialog box
UInt32 32 To represent 16-bit unsigned variable/value.
Frac16 16 To represent 16-bit signed variable/value.
Frac32 32 To represent 32-bit signed variable/value.
NULL constant Represents NULL pointer.
bool 16 Boolean variable.
false constant Represents false value.
true constant Represents true value.
FRAC16() macro
Transforms float value from <–1, 1) range into fractional
representation <–32768, 32767>.
FRAC32() macro
Transforms float value from <–1, 1) range into fractional
representation <–2147483648, 2147483648>.
Table 2-1. User-Defined Typedefs in 56800E_types.h (continued)
Special Issues
Math Library, Rev. 0
2-10 Freescale Semiconductor
Figure 2-1. V2/V3 core option
2.9 Special Issues
All functions in the Math Library are implemented without storing any of the
volatile registers (refer to the compiler manual) used by the respective routine.
Only non-volatile registers (C10, D10, R5) are saved by pushing the registers on
the stack. Therefore, if the particular registers initialized before the library
function call are to be used after the function call, it is necessary to save them
manually.
Special Issues
Math Library, Rev. 0
Freescale Semiconductor 3-11
Chapter 3 FUNCTION API
3.0.1 API Summary
Table 3-1. Function API summary
Name Arguments Output Description
MLIB_Abs16 Frac16 f16In Frac16 Absolute value:
MLIB_Abs16Sat Frac16 f16In Frac16 Absolute value with saturation:
MLIB_Abs32 Frac32 f32In Frac32 Absolute value:
MLIB_Abs32Sat Frac32 f32In Frac32 Absolute value with saturation:
MLIB_Rnd16 Frac16 f16In Frac16 Round to the nearest.
MLIB_Rnd16Sat Frac16 f16In Frac16 Round to the nearest with saturation.
MLIB_Rnd32 Frac32 f32In Frac32 Round upper 16 bits to the nearest.
MLIB_Rnd32Sat Frac32 f32In Frac32 Round upper 16 bits to the nearest with saturation.
MLIB_Neg16 Frac16 f16In Frac16 Negative value:
MLIB_Neg16Sat Frac16 f16In Frac16 Negative value with saturation:
MLIB_Neg32 Frac32 f32In Frac32 Negative value:
MLIB_Neg32Sat Frac32 f32In Frac32 Negative value with saturation:
MLIB_Add16 Frac16 f16In
Frac16 f16In
Frac16 Addition:
MLIB_Add16Sat Frac16 f16In
Frac16 f16In
Frac16 Addition with saturation:
MLIB_Add32 Frac32 f32In
Frac32 f32In
Frac32 Addition:
MLIB_Add32Sat Frac32 f32In
Frac32 f32In
Frac32 Addition with saturation:
MLIB_Sub16 Frac16 f16In
Frac16 f16In
Frac16 Subtraction:
MLIB_Sub16Sat Frac16 f16In
Frac16 f16In
Frac16 Subtraction with saturation:
MLIB_Sub32 Frac32 f32In
Frac32 f32In
Frac32 Subtraction:
MLIB_Sub32Sat Frac32 f32In
Frac32 f32In
Frac32 Subtraction with saturation:
MLIB_Sh1L16 Frac16 f16In Frac16 1-bit left shift:
MLIB_Sh1L16Sat Frac16 f16In Frac16 1-bit left shift with saturation:
MLIB_Abs16 a a=
MLIB_Abs16Sat a a=
MLIB_Abs32 a a=
MLIB_Abs32Sat a a=
MLIB_Neg16 a a=
MLIB_Neg16Sat a a=
MLIB_Neg32 a a=
MLIB_Add16 abab+=
MLIB_Add16Sat abab+=
MLIB_Add32 abab+=
MLIB_Add32Sat abab+=
MLIB_Sub16 abab=
MLIB_Sub32 abab=
MLIB_Sub32Sat abab=
MLIB_Sh1L16 a a 1«=
MLIB_Sh1L16Sat a a 1«=
Special Issues
Math Library, Rev. 0
3-12 Freescale Semiconductor
MLIB_Sh1R16 Frac16 f16In Frac16 1-bit right shift:
MLIB_Sh1L32 Frac32 f32In Frac32 1-bit left shift:
MLIB_Sh1L32Sat Frac32 f32In Frac32 1-bit left shift with saturation:
MLIB_Sh1R32 Frac32 f32In Frac32 1-bit right shift:
MLIB_ShL16 Frac16 f16In
Word16 w16N
Frac16 Multi-bit left shift:
MLIB_ShL16Sat Frac16 f16In
Word16 w16N
Frac16 Multi-bit left shift with saturation:
MLIB_ShR16 Frac16 f16In
Word16 w16N
Frac16 Multi-bit right shift:
MLIB_ShR16Sat Frac16 f16In
Word16 w16N
Frac16 Multi-bit right shift with saturation:
MLIB_ShL32 Frac32 f32In
Word16 w16N
Frac32 Multi-bit left shift:
MLIB_ShL32Sat Frac32 f32In
Word16 w16N
Frac32 Multi-bit left shift with saturation:
MLIB_ShR32 Frac32 f32In
Word16 w16N
Frac32 Multi-bit right shift:
MLIB_ShR32Sat Frac32 f32In
Word16 w16N
Frac32 Multi-bit right shift with saturation:
MLIB_Mul16SS Frac16 f16In
Frac16 f16In
Frac16 Fractional multiplication:
MLIB_Mul16SSSat Frac16 f16In
Frac16 f16In
Frac16 Fractional multiplication with saturation:
MLIB_MulNeg16SS Frac16 f16In
Frac16 f16In
Frac16 Fractional multiplication with negation:
MLIB_Mul32SS Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication:
MLIB_Mul32SSSat Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication with saturation:
MLIB_MulNeg32SS Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication with negation:
MLIB_MulRnd16SS Frac16 f16In
Frac16 f16In
Frac16 Fractional multiplication with rounding to the nearest:
MLIB_MulRnd16SSSat Frac16 f16In
Frac16 f16In
Frac16 Fractional multiplication with rounding to the nearest with
saturation:
MLIB_MulNegRnd16SS Frac16 f16In
Frac16 f16In
Frac16 Fractional multiplication with negation with rounding to the
nearest:
Table 3-1. Function API summary
MLIB_ShR16 abab»=
MLIB_Sh1L32 a a 1«=
MLIB_Sh1L32Sat a a 1«=
MLIB_Sh1R32 a a 1»=
MLIB_ShL16 abab«=
MLIB_ShL16Sat abab«=
MLIB_ShR16 abab»=
MLIB_ShR16Sat abab»=
MLIB_ShL32 abab«=
MLIB_ShL32Sat abab«=
MLIB_ShR32 abab»=
MLIB_ShR32Sat abab»=
MLIB_Mul16SS ab ab16»=
MLIB_Mul16SSSat ab ab16»=
MLIB_MulNeg16SS ab a b16»=
MLIB_Mul32SS abab=
MLIB_Mul32SSSat abab=
MLIB_MulNeg32SS ab a b=
MLIB_MulRnd16SS abround
ab
65536
---------------


=
MLIB_MulRnd16SSSat abround
ab
65536
---------------


=
MLIB_MulRnd16SS abround
a b
65536
---------------


=
Special Issues
Math Library, Rev. 0
Freescale Semiconductor 3-13
MLIB_MulNegRnd16SSS
at
Frac16 f16In
Frac16 f16In
Frac16 Fractional multiplication with negation with rounding to the
nearest with saturation:
MLIB_MulRnd32SS Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication with the upper 16 bits rounding to
the nearest:
MLIB_MulRnd32SSSat Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication with the upper 16 bits rounding to
the nearest with saturation:
MLIB_MulNegRnd32SS Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication with negation with the upper 16 bits
rounding to the nearest:
MLIB_MulNegRnd32SSS
at
Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication with negation with the upper 16 bits
rounding to the nearest with saturation:
MLIB_Mul32LS Frac32 f32In
Frac16 f16In
Frac32 Fractional multiplication:
MLIB_Mul32LSSat Frac32 f32In
Frac16 f16In
Frac32 Fractional multiplication with saturation:
MLIB_MulNeg32LS Frac32 f32In
Frac16 f16In
Frac32 Fractional multiplication with negation:
MLIB_Mul32LL Frac32 f32In
Frac32 f32In
Frac32 Fractional multiplication:
MLIB_Mul32LLSat Frac32 f32In
Frac32 f32In
Frac32 Fractional multiplication with saturation:
MLIB_MulNeg32LL Frac32 f32In
Frac32 f32In
Frac32 Fractional multiplication with negation:
MLIB_Mac16SSS Frac16 f16In
Frac16 f16In
Frac16 f16In
Frac16 Fractional multiplication-accumulation:
MLIB_Mac16SSSSat Frac16 f16In
Frac16 f16In
Frac16 f16In
Frac16 Fractional multiplication-accumulation with saturation:
MLIB_Msu16SSS Frac16 f16In
Frac16 f16In
Frac16 f16In
Frac16 Fractional multiplication-subtraction:
MLIB_Msu16SSSSat Frac16 f16In
Frac16 f16In
Frac16 f16In
Frac16 Fractional multiplication-subtraction with saturation:
Table 3-1. Function API summary
MLIB_MulRnd16SSSat abround
a b
65536
---------------


=
MLIB_MulRnd32SS ab round
ab
65536
---------------


16«=
MLIB_MulRnd32SSSat ab round
ab
65536
---------------


16«=
MLIB_MulNegRnd32SS ab round
a b
65536
---------------


16«=
MLIB_MulNegRnd32SSSat ab round
a b
65536
---------------


16«=
MLIB_Mul32LS ab ab16»=
MLIB_Mul32LSSat ab ab16»=
MLIB_MulNeg32LS ab a b16»=
MLIB_Mul32LL ab ab32»=
MLIB_Mul32LLSat ab ab32»=
MLIB_Mul32NegLL ab a b32»=
MLIB_Mac16SSS abcabc16»+=
MLIB_Mac16SSSSat abcabc16»+=
MLIB_Msu16SSS abcabc16»=
MLIB_Msu16SSSSat abcabc16»=
Special Issues
Math Library, Rev. 0
3-14 Freescale Semiconductor
MLIB_Mac32LSS Frac32 f32In
Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication-accumulation:
MLIB_Mac32LSSSat Frac32 f32In
Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication-accumulation with saturation:
MLIB_Msu32LSS Frac32 f32In
Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication-subtraction:
MLIB_Msu32LSSSat Frac32 f32In
Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication-subtraction with saturation:
MLIB_MacRnd16SSS Frac16 f16In
Frac16 f16In
Frac16 f16In
Frac16 Fractional multiplication-accumulation with rounding to the
nearest:
MLIB_MacRnd16SSSSat Frac16 f16In
Frac16 f16In
Frac16 f16In
Frac16 Fractional multiplication-accumulation with rounding to the
nearest with saturation:
MLIB_MsuRnd16SSS Frac16 f16In
Frac16 f16In
Frac16 f16In
Frac16 Fractional multiplication-subtraction with rounding to the
nearest:
MLIB_MsuRnd16SSSSat Frac16 f16In
Frac16 f16In
Frac16 f16In
Frac16 Fractional multiplication-subtraction with roudning to the
nearest saturation:
MLIB_MacRnd32LSS Frac32 f32In
Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication-accumulation with rounding to the
nearest:
MLIB_MacRnd32LSSSat Frac32 f32In
Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication-accumulation with rounding to the
nearest with saturation:
MLIB_MsuRnd32LSS Frac32 f32In
Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication-subtraction with rounding to the
nearest:
MLIB_MsuRnd32LSSSat Frac32 f32In
Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication-subtraction with roudning to the
nearest saturation:
MLIB_MacRnd32LSS Frac32 f32In
Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication-accumulation with rounding to the
nearest:
Table 3-1. Function API summary
MLIB_Mac32LSS abcabc+=
MLIB_Mac32LSSSat abcabc+=
MLIB_Msu32LSS abcabc=
MLIB_Msu32LSSSat abcabc=
MLIB_MacRnd16SSS abcround abc16»+=
MLIB_MacRnd16SSSSat abcround abc16»+=
MLIB_MsuRnd16SSS abcround abc16»=
MLIB_MsuRnd16SSS abcround abc16»=
MLIB_MacRnd32LSS abcround
abc+
65536
-------------------


16«=
MLIB_MacRnd32LSSSat abcround
abc+
65536
-------------------


16«=
MLIB_MsuRnd32LSS abcround
ab c
65536
-------------------


16«=
MLIB_MsuRnd32LSSSat abcround
ab c
65536
-------------------


16«=
MLIB_MacRnd32LSS abcround
abc+
65536
-------------------


16«=
Special Issues
Math Library, Rev. 0
Freescale Semiconductor 3-15
MLIB_MacRnd32LSSSat Frac32 f32In
Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication-accumulation with rounding to the
nearest with saturation:
MLIB_MsuRnd32LSS Frac32 f32In
Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication-subtraction with rounding to the
nearest:
MLIB_MsuRnd32LSSSat Frac32 f32In
Frac16 f16In
Frac16 f16In
Frac32 Fractional multiplication-subtraction with roudning to the
nearest saturation:
MLIB_Mac32LLS Frac32 f32In
Frac32 f32In
Frac16 f16In
Frac32 Fractional multiplication-accumulation with rounding to the
nearest:
MLIB_Mac32LLSSat Frac32 f32In
Frac32 f32In
Frac16 f16In
Frac32 Fractional multiplication-accumulation with rounding to the
nearest with saturation:
MLIB_Msu32LLS Frac32 f32In
Frac32 f32In
Frac16 f16In
Frac32 Fractional multiplication-subtraction with rounding to the
nearest:
MLIB_Msu32LLSSat Frac32 f32In
Frac32 f32In
Frac16 f16In
Frac32 Fractional multiplication-subtraction with roudning to the
nearest saturation:
MLIB_Mac32LLL Frac32 f32In
Frac32 f32In
Frac32 f32In
Frac32 Fractional multiplication-accumulation with rounding to the
nearest:
MLIB_Mac32LLLSat Frac32 f32In
Frac32 f32In
Frac32 f32In
Frac32 Fractional multiplication-accumulation with rounding to the
nearest with saturation:
MLIB_Msu32LLL Frac32 f32In
Frac32 f32In
Frac32 f32In
Frac32 Fractional multiplication-subtraction with rounding to the
nearest:
MLIB_Msu32LLLSat Frac32 f32In
Frac32 f32In
Frac32 f32In
Frac32 Fractional multiplication-subtraction with roudning to the
nearest saturation:
MLIB_Div1Q16SS Frac16 f16In
Frac16 f16In
Frac16 Single-quadrant fractional division:
MLIB_Div4Q16SS Frac16 f16In
Frac16 f16In
Frac16 Four-quadrant fractional division:
MLIB_Div1Q16LS Frac32 f32In
Frac16 f16In
Frac16 Single-quadrant fractional division:
Table 3-1. Function API summary
MLIB_MacRnd32LSSSat abcround
abc+
65536
-------------------


16«=
MLIB_MsuRnd32LSS abcround
ab c
65536
-------------------


16«=
MLIB_MsuRnd32LSSSat abcround
ab c
65536
-------------------


16«=
MLIB_Mac32LLS abcabc16»+=
MLIB_Mac32LLSSat abcabc16»+=
MLIB_Msu32LLS abcabc16»=
MLIB_Msu32LLSSat abcabc16»=
MLIB_Mac32LLL abcabc32»+=
MLIB_Mac32LLLSat abcabc32»+=
MLIB_Msu32LLL abcabc32»=
MLIB_Msu32LLLSat abcabc32»=
MLIB_Div1Q16SS ab
a 16«
b
---------------
=
MLIB_Div4Q16SS ab
a 16«
b
---------------
=
MLIB_Div1Q16LS ab
a
b
---
=
Special Issues
Math Library, Rev. 0
3-16 Freescale Semiconductor
MLIB_Div4Q16LS Frac32 f32In
Frac16 f16In
Frac16 Four-quadrant fractional division:
MLIB_Div1Q32LS Frac32 f32In
Frac16 f16In
Frac32 Single-quadrant fractional division:
MLIB_Div4Q32LS Frac32 f32In
Frac16 f16In
Frac32 Four-quadrant fractional division:
MLIB_Rcp161Q Frac16 f16In Frac32 Single-quadrant 16-bit precision reciprocal: function:
MLIB_Rcp164Q Frac16 f16In Frac32 Four-quadrant 16-bit precision reciprocal function:
MLIB_Rcp321Q Frac16 f16In Frac32 Single-quadrant 32-bit precision reciprocal: function:
MLIB_Rcp324Q Frac16 f16In Frac32 Four-quadrant 32-bit precision reciprocal function:
Table 3-1. Function API summary
MLIB_Div4Q16LS ab
a
b
---
=
MLIB_Div1Q32LS ab
a
b
---
16«=
MLIB_Div4Q32LS ab
a
b
---
16«=
MLIB_Rcp161Q a
1
a
---
=
MLIB_Rcp324Q a
1
a
---
=
MLIB_Rcp161Q a
1
a
---
=
MLIB_Rcp324Q a
1
a
---
=
MLIB_Abs16
Math Library, Rev. 0
Freescale Semiconductor 3-17
3.1 MLIB_Abs16
This function performs an absolute value of the 16-bit argument.
3.1.1 Synopsis
#include ”mlib.h”
Frac16 MLIB_Abs16(Frac16 f16In)
3.1.2 Prototype
asm inline Frac16 MLIB_Abs16FAsmi(register Frac16 f16In)
3.1.3 Arguments
This subsection describes the input/output arguments to a function or a macro. It
explains the algorithms being used by the functions or macro.
3.1.4 Availability
This library module is available in the C-callable interface assembly version
format.
This library module is targeted for the 56800E and 56800Ex platforms.
3.1.5 Dependencies
The dependent files are:
MLIB_AbsAsm.h
MLIB_types.h
3.1.6 Description
The MLIB_Abs16 function returns the absolute value of the argument.
Eqn. 3-1
where:
result - Frac16
a - Frac16
Table 3-2. Function Arguments
Name In/Out Format Range Description
f16In In SF16
0x8000...
0x7FFF
input value
MLIB_Abs16 a a=
MLIB_Abs16
Math Library, Rev. 0
3-18 Freescale Semiconductor
3.1.7 Returns
The function returns the 16-bit absolute value of the input f16In.
3.1.8 Range Issues
The input data value is in the range of <-1,1). The output data value is in the range
<-1, 1).
3.1.9 Special Issues
If the input is 0x8000 the output is 0x8000 if the saturation mode is turned off.
The function MLIB_Abs16 requires the saturation mode to be turned on for
full-range correct operation or the MLIB_Abs16Sat has to be used instead.
3.1.10 Implementation
The MLIB_Abs16 function is implemented as an inline function.
Example 3-1. Implementation Code
#include "mlib.h"
static Frac16 mf16In;
static Frac16 mf16Out;
void main(void)
{
mf16In = FRAC16(-0.5);
/* Absolute value */
mf16Out = MLIB_Abs16(mf16In);
}
3.1.11 See Also
See MLIB_Abs16Sat, MLIB_Abs32 and MLIB_Abs32Sat for more
information.
3.1.12 Performance
This section specifies actual requirements of the function or macro in terms of
required code memory, data memory, and number of clock cycles to execute.
MLIB_Abs16
Math Library, Rev. 0
Freescale Semiconductor 3-19
Table 3-3. Performance of the MLIB_Abs16 Function
Code Size (words)
1
Data Size (words)
0
Execution Clock
Min 5 cycles
Max 5 cycles
MLIB_Abs16Sat
Math Library, Rev. 0
Freescale Semiconductor 3-21
3.2 MLIB_Abs16Sat
This function returns an absolute value of the 16-bit argument. The function
saturates the output if necessary.
3.2.1 Synopsis
#include ”mlib.h”
Frac16 MLIB_Abs16Sat(Frac16 f16In)
3.2.2 Prototype
inline Frac16 MLIB_Abs16SatFAsmi(register Frac16 f16In)
3.2.3 Arguments
This subsection describes the input/output arguments to a function or a macro. It
explains the algorithms being used by the functions or macro.
3.2.4 Availability
This library module is available in the C-callable interface assembly version
format.
This library module is targeted for the 56800E and 56800Ex platforms.
3.2.5 Dependencies
The dependent files are:
MLIB_AbsAsm.h
MLIB_types.h
3.2.6 Description
The MLIB_Abs16Sat function returns the absolute value of the argument.
Eqn. 3-2
where:
result - Frac16
Table 3-4. Function Arguments
Name In/Out Format Range Description
f16In In SF16
0x8000
0x7FFF
input value
MLIB_Abs16Sat a a=
  • Page 1 1
  • Page 2 2
  • Page 3 3
  • Page 4 4
  • Page 5 5
  • Page 6 6
  • Page 7 7
  • Page 8 8
  • Page 9 9
  • Page 10 10
  • Page 11 11
  • Page 12 12
  • Page 13 13
  • Page 14 14
  • Page 15 15
  • Page 16 16
  • Page 17 17
  • Page 18 18
  • Page 19 19
  • Page 20 20
  • Page 21 21
  • Page 22 22
  • Page 23 23
  • Page 24 24
  • Page 25 25
  • Page 26 26
  • Page 27 27
  • Page 28 28
  • Page 29 29
  • Page 30 30
  • Page 31 31
  • Page 32 32
  • Page 33 33
  • Page 34 34
  • Page 35 35
  • Page 36 36
  • Page 37 37
  • Page 38 38
  • Page 39 39
  • Page 40 40
  • Page 41 41
  • Page 42 42
  • Page 43 43
  • Page 44 44
  • Page 45 45
  • Page 46 46
  • Page 47 47
  • Page 48 48
  • Page 49 49
  • Page 50 50
  • Page 51 51
  • Page 52 52
  • Page 53 53
  • Page 54 54
  • Page 55 55
  • Page 56 56
  • Page 57 57
  • Page 58 58
  • Page 59 59
  • Page 60 60
  • Page 61 61
  • Page 62 62
  • Page 63 63
  • Page 64 64
  • Page 65 65
  • Page 66 66
  • Page 67 67
  • Page 68 68
  • Page 69 69
  • Page 70 70
  • Page 71 71
  • Page 72 72
  • Page 73 73
  • Page 74 74
  • Page 75 75
  • Page 76 76
  • Page 77 77
  • Page 78 78
  • Page 79 79
  • Page 80 80
  • Page 81 81
  • Page 82 82
  • Page 83 83
  • Page 84 84
  • Page 85 85
  • Page 86 86
  • Page 87 87
  • Page 88 88
  • Page 89 89
  • Page 90 90
  • Page 91 91
  • Page 92 92
  • Page 93 93
  • Page 94 94
  • Page 95 95
  • Page 96 96
  • Page 97 97
  • Page 98 98
  • Page 99 99
  • Page 100 100
  • Page 101 101
  • Page 102 102
  • Page 103 103
  • Page 104 104
  • Page 105 105
  • Page 106 106
  • Page 107 107
  • Page 108 108
  • Page 109 109
  • Page 110 110
  • Page 111 111
  • Page 112 112
  • Page 113 113
  • Page 114 114
  • Page 115 115
  • Page 116 116
  • Page 117 117
  • Page 118 118
  • Page 119 119
  • Page 120 120
  • Page 121 121
  • Page 122 122
  • Page 123 123
  • Page 124 124
  • Page 125 125
  • Page 126 126
  • Page 127 127
  • Page 128 128
  • Page 129 129
  • Page 130 130
  • Page 131 131
  • Page 132 132
  • Page 133 133
  • Page 134 134
  • Page 135 135
  • Page 136 136
  • Page 137 137
  • Page 138 138
  • Page 139 139
  • Page 140 140
  • Page 141 141
  • Page 142 142
  • Page 143 143
  • Page 144 144
  • Page 145 145
  • Page 146 146
  • Page 147 147
  • Page 148 148
  • Page 149 149
  • Page 150 150
  • Page 151 151
  • Page 152 152
  • Page 153 153
  • Page 154 154
  • Page 155 155
  • Page 156 156
  • Page 157 157
  • Page 158 158
  • Page 159 159
  • Page 160 160
  • Page 161 161
  • Page 162 162
  • Page 163 163
  • Page 164 164
  • Page 165 165
  • Page 166 166
  • Page 167 167
  • Page 168 168
  • Page 169 169
  • Page 170 170
  • Page 171 171
  • Page 172 172
  • Page 173 173
  • Page 174 174
  • Page 175 175
  • Page 176 176
  • Page 177 177
  • Page 178 178
  • Page 179 179
  • Page 180 180
  • Page 181 181
  • Page 182 182
  • Page 183 183
  • Page 184 184
  • Page 185 185
  • Page 186 186
  • Page 187 187
  • Page 188 188
  • Page 189 189
  • Page 190 190
  • Page 191 191
  • Page 192 192
  • Page 193 193
  • Page 194 194
  • Page 195 195
  • Page 196 196
  • Page 197 197
  • Page 198 198
  • Page 199 199
  • Page 200 200
  • Page 201 201
  • Page 202 202
  • Page 203 203
  • Page 204 204
  • Page 205 205
  • Page 206 206
  • Page 207 207
  • Page 208 208
  • Page 209 209
  • Page 210 210
  • Page 211 211
  • Page 212 212
  • Page 213 213
  • Page 214 214
  • Page 215 215
  • Page 216 216
  • Page 217 217
  • Page 218 218
  • Page 219 219
  • Page 220 220
  • Page 221 221
  • Page 222 222
  • Page 223 223
  • Page 224 224
  • Page 225 225
  • Page 226 226
  • Page 227 227
  • Page 228 228
  • Page 229 229
  • Page 230 230
  • Page 231 231
  • Page 232 232
  • Page 233 233
  • Page 234 234
  • Page 235 235
  • Page 236 236
  • Page 237 237
  • Page 238 238
  • Page 239 239
  • Page 240 240
  • Page 241 241
  • Page 242 242
  • Page 243 243
  • Page 244 244
  • Page 245 245
  • Page 246 246
  • Page 247 247
  • Page 248 248
  • Page 249 249
  • Page 250 250
  • Page 251 251
  • Page 252 252
  • Page 253 253
  • Page 254 254
  • Page 255 255
  • Page 256 256
  • Page 257 257
  • Page 258 258
  • Page 259 259
  • Page 260 260
  • Page 261 261
  • Page 262 262
  • Page 263 263
  • Page 264 264
  • Page 265 265
  • Page 266 266
  • Page 267 267
  • Page 268 268
  • Page 269 269
  • Page 270 270
  • Page 271 271
  • Page 272 272
  • Page 273 273
  • Page 274 274
  • Page 275 275
  • Page 276 276
  • Page 277 277
  • Page 278 278
  • Page 279 279
  • Page 280 280
  • Page 281 281
  • Page 282 282

NXP MC56F84xxx User guide

Type
User guide
This manual is also suitable for

Ask a question and I''ll find the answer in the document

Finding information in a document is now easier with AI