Block Image

Abstract

Perform Math and Stats Operations in both Fixed and Floating Point

Description

Fixed Point Math blocks

Sci-Compiler offers support for various mathematical operations, including addition, subtraction, multiplication, and division, with the added capability of utilizing a programmable pipeline for variable precision fixed-point calculations. Here’s an explanation of these features:

  • Mathematical Operations: Sci-Compiler provides a set of built-in components and functions for performing fundamental mathematical operations. These operations include addition, subtraction, multiplication, and division. These mathematical operations allow to produce a result every clock cycle.

  • Variable Precision Fixed-Point: In addition to standard floating-point or integer arithmetic, Sci-Compiler supports variable precision fixed-point arithmetic. Fixed-point arithmetic is a representation of numbers with a fixed number of digits after the decimal point. Variable precision allows you to define the desired precision based on the requirements of your application. This feature enables efficient and accurate mathematical computations for various scenarios.

  • Programmable Pipeline: A pipeline is a technique used to improve the efficiency and speed of data processing by dividing the computation into a sequence of stages. Sci-Compiler incorporates a programmable pipeline, which allows you to configure and optimize the flow of mathematical operations within your code. By dividing complex calculations into smaller stages, the pipeline improves overall performance and enables parallel processing of data.

  • Accumulator: An accumulator is a register or storage element commonly used in digital systems to accumulate or sum up a series of values. It retains the result of each mathematical operation and adds it to the next value in the sequence. Accumulators are crucial for accumulating intermediate results and maintaining running totals in mathematical calculations, especially in iterative or repetitive computations. They are often used in signal processing, data analysis, and numerical algorithms. The accumulator is important because it is the core of most of filtering algorithms.

Floating Point Math blocks

In addition to the mathematical operations mentioned earlier, it is important to note that Sci-Compiler also supports floating-point arithmetic, which enables a broader range of mathematical calculations. Floating-point arithmetic is a representation of numbers that allows for a wider dynamic range and increased precision compared to fixed-point arithmetic.

Within Sci-Compiler, you can utilize floating-point operations to perform a variety of mathematical calculations, including logarithm, exponential, square root, and reciprocal (1/x) computations.

Floating point works with both single and double precision or custom floating point format. Aldo the complexity of the floating point operations, Sci-Compiler can generate algorithm operating in real time with floating point processing up to the sampling rate of the target board.

Trigonometric blocks

Sci-Compiler provides a set of components for performing trigonometric operations, including sine, cosine, tangent, and arctangent. These components allow you to perform various trigonometric calculations within your projects exploiting the Cordic algorithm.

Statistics blocks

Sci-Compiler offers a collection of components for performing statistical calculations, including mean, variance, standard deviation, and covariance. These components allow you to compute various statistical metrics and parameters within your projects. The operation can be calculated in real-time or at the end of an integration window.

Fast Fourier Transform blocks

Sci-Compiler provides a set of components for performing Fast Fourier Transform (FFT) operations. These components allow you to compute the FFT of a signal within your projects.

FFT stands for Fast Fourier Transform, which is a widely used mathematical algorithm for efficiently computing the Discrete Fourier Transform (DFT) of a sequence or function. The FFT algorithm is instrumental in the analysis, processing, and synthesis of digital signals in various fields, including signal processing, communications, image processing, and audio processing.

The Discrete Fourier Transform (DFT) is a mathematical transformation that converts a discrete-time signal from the time domain to the frequency domain. It decomposes a signal into its constituent frequency components, providing information about the magnitude and phase of each frequency component present in the signal. However, directly computing the DFT can be computationally intensive, especially for large data sets, as it requires a large number of complex arithmetic operations.

The FFT algorithm, developed by Cooley and Tukey in the 1960s, exploits the symmetry properties of the DFT to significantly reduce the computational complexity. By utilizing a divide-and-conquer approach and reusing intermediate results, the FFT algorithm reduces the number of arithmetic operations required from O(N^2) to O(N log N), where N is the number of data points in the input sequence. This makes it highly efficient for calculating the DFT, particularly for large data sets.

The FFT algorithm breaks down the input sequence into smaller subproblems and applies a series of butterfly operations to combine the results at each stage. These butterfly operations involve complex multiplications and additions, which are efficiently computed using twiddle factors and symmetric properties of the input sequence. The process continues recursively until the DFT of the entire sequence is computed.

The FFT algorithm has revolutionized many areas of signal processing and analysis. It enables efficient spectral analysis, filtering, modulation, noise removal, and many other operations in the frequency domain. Applications of FFT include audio and image compression, digital communication systems, speech recognition, medical imaging, and more.

Random Generator blocks

Sci-Compiler implements pseudo-random number generator in order to generate random number sequences or sequences of events. Sci-Compiler can generate white-distributed random noise or gaussian distributed random noise. It also include a poisson-distributed random pulse generator.

Random block can be used to simulate noise in a system.