Polybench® Reference Describes the timing of different sample stream types

# Timing properties of samples in a stream

## Overview

A sample stream is a row of samples that follow each other in a timely manner. This document describes timing behavior for different stream types.

## Details

Polybench knows four sample stream types. Which stream type or frequency a connection has, can be seen using the Probe ("Signal Monitor Probe"). The stream types are explained below.

### Uniformly sampled data stream

By default, Polybench assumes that a sample stream is a never ending row of samples, where samples of a continuous source have been taken equally spaced in time. This means, that the time interval between each sample is assumed to be exactly the same for each sample. This is also called equidistant sampling.

Uniformly sampled data imply certain mathematical properties in the field of digital signal processing. Well known scientists that have formulated theorems around digital signal processing are H. Nyquist, C. Shannon, E.T. Whittaker, and V. Kotelnikov.

If Polybench processes a uniformly sampled data stream, then it assumes that ALL samples have an equal interval time. This means that such a data stream cannot be broken in parts. Polybench does not have a mechanism that detects if a uniform stream suddenly misses samples, nor does Polybench allow such a stream to have multiple sample frequencies.

Most mathematical operators in Polybench do not use the timing information of a sample stream. For those operators it does not matter whether the stream is uniform or non-uniform. However, some operators depend on the information about the sampling rate (sample frequency) and the assumption that the stream is uniform. This is true for most operators that have some kind of memory function (for example: filters) and for operators that need to merge or synchronize different branches of data, like the "Synchronizer" and the "Channel Merger". Example of a normal uniform sample stream as generated by the Signal Generator. In this case a block signal, where the parts above zero are counted. The Level Detector creates pulses of one sample wide, so that single events are counted.

### Non-uniformly sampled data stream

A non-uniform sample stream contains an indefinite row of samples, where the interval time between the samples is variable. In the signal monitor probe, such a data stream is marked with NON-UNIFORM.

Non-uniform samples are only used in special cases and should be handled with care, because some mathematical operators in Polybench assume equidistant samples.

A non-uniform sample stream can come to exist by a data source that offers new values at irregular intervals, or where the sampling frequency simply is too low, too variable, or just not important to give it a sample rate value. It is also possible to create a non-uniform stream inside a measurement configuration by capturing samples at irregular intervals, for example by using the Switch ("Switch").

Non-uniform and uniform sample streams can be merged into a new uniform stream using the "Synchronizer" and the "Channel Merger". Example where the Switch operator creates a non-uniform sample stream that is later merged with a regular sample stream and displayed in a graph

### Constant samples

Constant samples are assumed to contain values that do not change during data processing. In praxis, the values are allowed to change, but a regularly changing constant is not handled like a normal sample stream.

Constants can be used to modify uniform or non-uniform sample streams or to compare the stream with standard values. A constant is most often created using the Constant operator ("K"). Example of use of the Constant operator to create constant values. The sinus waves are multiplied by the constant values.

### Control samples

Control samples transfer different kinds of information between special operators in Polybench that control the application. Control samples are not used for mathematical calculations.

Operators that have to do with Actions ("Actions - Overview") in an action sequence are examples of components that use Control samples.

Multiple branches (signal buses) of the same type of control samples can be merged using the "Channel Merger", but merging in this case works differently than for value carrying samples (see Channel Merger for more information). Example of action sequences, where the control sequences are merged. Between the Action operators, control samples are communicated.