Livt packages
Livt.Signal
Version 0.1.1
Q1.15 sample streams, filters, windows, rate conversion, FFTs, oscillators, and mixers for Livt.
Published files (80)
src/window/WindowQ15.lvt
namespace Livt.Signal.Window
using Livt.Signal.Stream
/**
* Arbitrary fixed-coefficient Q1.15 window with one result per sample.
*/
component WindowQ15<SAMPLES: int>
{
static assert SAMPLES > 0, "window length must be positive"
// Published throughput, latency, capacity, and resource contract.
public const INITIATION_INTERVAL: int = 1
public const NOMINAL_LATENCY: int = 2
public const CAPACITY: int = 2
public const MULTIPLIER_COUNT: int = 1
// Borrowed streams, retained coefficient table, and the owned datapath.
inputStream: IQ15SampleStream
outputStream: IQ15SampleStream
coefficients: int[SAMPLES]
primitive: WindowQ15PipelinePrimitive
/**
* Binds borrowed endpoints and exactly SAMPLES fixed Q1.15 coefficients.
*/
new(inputStream: IQ15SampleStream, outputStream: flip IQ15SampleStream,
coefficients: const int[SAMPLES])
{
this.inputStream = inputStream
this.outputStream = outputStream
this.coefficients = coefficients
primitive = new WindowQ15PipelinePrimitive(this.coefficients)
}
/**
* Connects the fixed coefficient-table primitive to the borrowed endpoints.
*/
process Drive[]()
{
primitive.inputValid = inputStream.valid
primitive.inputSample = inputStream.sample
primitive.inputFirst = inputStream.first
primitive.inputLast = inputStream.last
primitive.outputReady = outputStream.ready
inputStream.ready = primitive.inputReady
outputStream.valid = primitive.outputValid
outputStream.sample = primitive.outputSample
outputStream.first = primitive.outputFirst
outputStream.last = primitive.outputLast
}
}