## Math libraries for DSP processors

We develop digital signal processing math libraries for high performance modern DSP processors. Our libraries come as a part of processor Integrated Development Environment (IDE) in binary or source form and provide the great means to start easily with new processor and understand programming model and optimization tricks. All functions are designed to be practically useful in the most important digital signal processing applications. We have developed signal processing libraries for the following platforms and Data Plane Processors.

We have developed DSP libraries for the most DSP processors of Cadence Tensilica - Tensilica ConnX D2, HiFi2, HiFi3, HiFi4, VectraLX, ConnX BBE16 (Base Band Engine 16 MAC), BBE32, BBE32 EP, BBE32 AP, BBE64, BBE64 EP, BBE64 AP, etc. More details about processors are available here:

http://ip.cadence.com/ipportfolio/tensilica-ip/audio

http://ip.cadence.com/ipportfolio/tensilica-ip/comms-dsp

Let us know if you need libraries for your DSP! Our algorithms can be ported on any processor. Our implementation is the best in the world for accuracy and performance and overcomes libraries from Texas Instuments and Analog Devices. Our DSP libraries come as part Xtensa Xplorer toolchain. All functions in the libraries are parametrised and provide specific cases for ultra fast performance. For example, FFT functions fro one of the BBE processor support the following block lengths:

- 2
^{n}, n=4..15

- 12*2
^{m}*3^{n}*5^{p }in range 12…1200

- 1536

All functions support block and streaming data formats. There are some functions implemented for BBE processor.

### Example funtions for ConnX BBE32 and ConnX BBE64

bkfir - Block real FIR filter. Passes real input data through a direct-form FIR filter with real coefficients

cxfir - Block complex FIR filter. Passes complex input data through a direct-form FIR filter with complex coefficients

rcfir - Block complex FIR filter. Passes complex input data through a direct-form FIR filter with real coefficients

srfir - Block real FIR filter with symmetric response. Passes real input data through a direct-form FIR filter with real coefficients

srcfir - Block complex FIR filter with symmetric response. Passes complex input data through a direct-form FIR filter with real coefficients

firdec - Decimating complex FIR filter w/ real coefficients. Passes complex input signal through a direct-form FIR filter with real coefficients and decimates the output signal

firinterp - Interpolating complex FIR filter w/ real coefficients. Upsamples complex input signal and passes it through a direct-form FIR filter with real coefficients

convol - Convolution between complex input signal and complex reference signal

corr - Correlation between complex input signal and complex reference signal

acorr - Autocorrelation for a complex data vector (positive side only)

lms - Block-wise delayed LMS algorithm for complex data and complex filter coefficients

despread - Despreading

bqriir, bqriirs - Bi-Quad Real Block IIR

bqciir, bqciirs - Bi-Quad Real Complex IIR

latr, latrs - Lattice Block Real IIR

latc, latcs - Lattice Block Complex IIR

rvdot - Real Vector Product

cvdot - Complex Vector Product

rvadd - Real Vector Sum

cvadd - Complex Vector Sum

vpower - Sum of Squares of a Vector

vmag - Square Root of Sum of Squares

vnorm - Vector Normalization

vrecip16, srecip16 - Reciprocal on Q15 Numbers

vfastrecip16 - Pseudo Floating Point Reciprocal

vdivide - Division of Q15 Numbers

vrsqrt, srsqrt - Inverse Square Root

vfastrsqrt - Pseudo Floating Point Inverse Square Root

vlog2, vlogn, vlog10, slog2, slogn, slog10 - Logarithm

vsine, vcos, ssine, scos - Sine/Cosine

vtan, stan - Tangent

vatan2_16, satan2_16 - Full Arctangent

vatan16, satan16 - Arctangent

vbexp, vbexp_fast, sbexp - Common Exponent

rvmean, cvmean - Mean of Vector Elements

vmin, vmax - Dual Peak Search

vmax8 - Search for 8 Top Values

vthreshold - Find Values above Threshold

rmelements, cmelements - Move the Elements at Given Indices

rrelements crelements - Remove the Elements at Given Indices

pvcartesian - Polar to Cartesian Conversion

cvmag - Complex Vector Magnitude

cbexp - Complex Exponent of all Values in a Vector

vslope - Correction of Vector Slope

aunwrap - Angle Unwrapping

fix2f - Fixed to Floating Point Conversion

f2fix - Floating to Fixed Point Conversion

matmul, matvmul - Real Matrix/vector Multiply

cmatmul, cmatvmul - Complex Matrix/vector Multiply

mattran - Real Matrix Transpose

cmattran - Complex Matrix Transpose

cmatherm - Matrix Hermitian Product

rsb,csb - Streaming to block order conversion

rbs,cbs - Block to streaming order conversion

rinterleave, cinterleave, rdeinterleave, cdeinterleave - Interleaving, Deinterleaving

qr_build_rMxMs, cqr_build_rMxMs - QR decomposition

qr_calc_qbMxPs, cqr_calc_qbMxPs - Rotation via Housholder vectors

qrbkwMxPs, cqrbkwMxPs - QR back substitution

cholmxns, scholmxnn, bcholmxnn - Cholesky decomposition

cholfwdmxnxps, scholfwdmxnxpn, bholfwdmxnxpn - Cholesky forward substitution

cholbkwnxps, scholbkwnxpn, bcholbkwnxpn - Cholesky forward substitution

cmatinv - Direct matrix inversion

crc - Compute 8, 16, 24 and 32 bit CRC

qammap - Map bits to QPSK, QAM16 or QAM64 constellation

slice_h - Slicer Hard: QPSK, QAM16, QAM64

gcode - Universal Gray coding/QAM mapping

softdemap - Soft Demapper for QPSK and QAM Constellations

bsegmnt - Bitstream unpacking – convert stream of 1, 2, 4, 6, 8 bits to stream of 16-bit words

bpack - Bitstream packing – convert stream of 16-bit words to stream of 1, 2, 4, 6, 8 bits

convenc - Convolution encoder

zcseq_gen - Zadoff-Chu Sequence

lteprs - LTE Pseudo-random Sequence Generation and Scrambling

sfd - Alamouti SFD

cfft - FFT on Complex Data

rfft - FFT on Real Data

cifft - Inverse FFT on Complex Data

rifft - Inverse FFT Forming Real Data

pfit - Polynomial fitting

vinterp - Linear/neighbour interpolation

interp_2tap interp_4tap - Tap-based interpolation