AS950 ARM Applications Library Programmer’s Guide

Version 1.1


Table of Contents

Preface
About this book
Intended audience
Using this book
Typographical conventions
Further reading
Feedback
Feedback on the ARM Developer Suite
Feedback on this book
1. Introduction
1.1. About the ARM Applications Library
1.1.1. Noncompliant adaptive differential pulse code modulation
1.1.2. G.711
1.1.3. Fast Fourier transform and windowing
1.1.4. Discrete cosine transform
1.1.5. Huffman encoding/decoding
1.1.6. Filtering
1.1.7. IS‑54 convolutional encoder
1.1.8. Multi‑tone multi‑frequency and Goertzel algorithm
1.1.9. Bit manipulation
1.1.10. Mathematics
1.2. Registers in macro arguments
1.2.1. Example
1.3. Building and running a demonstration
1.3.1. Variants
1.3.2. Linker output
1.3.3. Building and running
1.3.4. Execution considerations
2. Adaptive Differential Pulse Code Modulation
2.1. Overview
2.1.1. Implementation
2.1.2. Files
2.2. ADPCMState data structure
2.2.1. Definition
2.2.2. Description
2.2.3. Usage
2.3. Functions
2.3.1. adpcm_encode
2.3.2. adpcm_decode
3. G.711—A-law, µ‑law, PCM Conversions
3.1. Overview
3.1.1. Implementation
3.1.2. Files
3.2. Functions
3.2.1. G711_linear2alaw_macro
3.2.2. G711_alaw2linear_macro
3.2.3. G711_linear2ulaw_macro
3.2.4. G711_ulaw2linear_macro
3.2.5. G711_alaw2ulaw_macro
3.2.6. G711_ulaw2alaw_macro
4. Fast Fourier Transform and Windowing
4.1. Overview
4.1.1. Implementation
4.1.2. FFT optimization and conditional assembly
4.1.3. Hamming and Hanning windows
4.1.4. Files
4.2. Complex data structure
4.2.1. Definition
4.2.2. Description
4.3. Functions
4.3.1. FFT
4.3.2. REALFFT
4.3.3. GenerateWindow
4.3.4. HammingWindow
4.3.5. HanningWindow
5. Two‑Dimensional Discrete Cosine Transform
5.1. Overview
5.1.1. ARM architecture requirements
5.1.2. Implementation
5.1.3. Files
5.2. SCALETABLE data structure
5.2.1. Definition
5.2.2. Description
5.3. Functions
5.3.1. fdct_fast
5.3.2. rdct_fast
5.4. Supplementary macros
5.4.1. CREATEFDCTSTABLEARRAY
5.4.2. CREATEDCTBLOCK
5.4.3. PREFDCT
5.4.4. POSTFDCT
5.4.5. PRERDCT
5.4.6. POSTRDCT
6. Huffman and Bit Coding/Decoding
6.1. Overview
6.1.1. Implementation
6.1.2. Files
6.2. BitStreamState data structure
6.2.1. Definition
6.2.2. Description
6.2.3. Usage
6.3. Functions
6.3.1. Huffman
6.3.2. MakeHuffCodeTablenn
6.3.3. MakeHuffDecodeTablenn
6.3.4. BitCodeByteSymbols, BitCodeHalfWordSymbols, and BitCodeWordSymbols
6.3.5. BitDecodeByteSymbols, BitDecodeHalfWordSymbols, and BitDecodeWordSymbols
7. Filters
7.1. Files
7.2. Finite impulse response
7.2.1. s_blk_fir_rhs
7.3. Infinite impulse response
7.3.1. IIR_MACRO
7.3.2. IIR_PowerUp_MACRO
7.4. Least mean square
7.4.1. LMS_MACRO
7.4.2. LMS_PowerUp_MACRO
7.4.3. LMS_PowerDown_MACRO
8. IS-54 Convolutional Encoder
8.1. Overview
8.1.1. Implementation
8.1.2. Files
8.2. Macro and function
8.2.1. ConvolutionalEncoderKernelMacro
8.2.2. ConvolutionalEncoder
9. Multi‑tone Multi‑frequency Generation/Detection
9.1. Overview
9.1.1. Implementation
9.1.2. Files
9.2. ToneState data structure
9.2.1. Definition
9.2.2. Description
9.2.3. Usage
9.3. Functions
9.3.1. ToneDetectSetup
9.3.2. ToneDetect
9.3.3. ToneDetectResults
9.3.4. ToneGenerateSetup
9.3.5. ToneGenerate
10. Bit Manipulation
10.1. Files
10.2. Macros
10.2.1. BCDADD
10.2.2. BITREV, BITREVC
10.2.3. BYTEREV, BYTEREVC
10.2.4. BYTEWISEMAX
10.2.5. LSBSET, MSBSET
10.2.6. POPCOUNT, POPCOUNT7
11. Mathematics
11.1. Overview
11.1.1. Files
11.1.2. ARM architecture requirements
11.2. Integer multiplication
11.2.1. UMUL_32x32_64
11.2.2. SMUL_32x32_64
11.2.3. MUL_64x64_64
11.2.4. UMUL_64x64_128
11.2.5. SMUL_64x64_128
11.3. Integer division
11.3.1. UDIV_32d16_16r16
11.3.2. SDIV_32d16_16r16
11.3.3. UDIV_32d32_32r32
11.3.4. SDIV_32d32_32r32
11.3.5. UDIV_64d32_32r32
11.3.6. SDIV_64d32_32r32
11.3.7. UDIV_64d64_64r64
11.3.8. SDIV_64d64_64r64
11.4. Fixed‑point division
11.4.1. UDIVF_32d32_32
11.4.2. SDIVF_32d32_32
11.5. Integer square and cube root
11.5.1. SQR_32_16r17
11.5.2. CBR_32_11
11.6. Trigonometric functions
11.6.1. ARMCOS
11.6.2. ARMSIN
11.7. General macros
11.7.1. ADDABS
11.7.2. SIGNSAT

Proprietary Notice

Words and logos marked with ® or ™ are registered trademarks or trademarks owned by ARM Limited. Other brands and names mentioned herein may be the trademarks of their respective owners.

Neither the whole nor any part of the information contained in, or the product described in, this document may be adapted or reproduced in any material form except with the prior written permission of the copyright holder.

The product described in this document is subject to continuous developments and improvements. All particulars of the product and its use contained in this document are given by ARM in good faith. However, all warranties implied or expressed, including but not limited to implied warranties of merchantability, or fitness for purpose, are excluded.

This document is intended only to assist the reader in the use of the product. ARM Limited shall not be liable for any loss or damage arising from the use of any information in this document, or any error or omission in such information, or any incorrect use of the product.

Revision History
Revision AOct. 98First release
Revision BOct. 01Second release
Copyright © 1998-2001 ARM Limited. All rights reserved.ARM DUI 0081B
Non-Confidential