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)
tests/oscillator/OscillatorMixerQ15Test.lvt
namespace Livt.Signal.Tests.Oscillator
/**
* Verifies phase conventions, stalls, and real/complex Q1.15 mixing.
*/
@Test
component OscillatorMixerQ15Test
{
positive: CordicNcoFixture<16384>
negative: CordicNcoFixture<49152>
stalled: CordicNcoFixture<16384>
realMixer: RealMixerFixture
stalledMixer: RealMixerFixture
complexMixer: ComplexMixerFixture
new()
{
positive = new CordicNcoFixture<16384>()
negative = new CordicNcoFixture<49152>()
stalled = new CordicNcoFixture<16384>()
realMixer = new RealMixerFixture()
stalledMixer = new RealMixerFixture()
complexMixer = new ComplexMixerFixture()
}
@Test
fn GeneratesAndMixesStallCoherentQ15Samples()
{
positive.ready = true
negative.ready = true
realMixer.ready = true
stalledMixer.ready = false
complexMixer.ready = true
Simulation.Wait(300)
assert stalled.accepted == 0
assert stalled.phase == 0x0000
assert stalledMixer.accepted == 0
assert stalledMixer.sourceAccepted == 1
assert stalledMixer.oscillatorAccepted == 1
stalledMixer.ready = true
stalled.ready = true
Simulation.Wait(1000)
assert positive.accepted == 4
assert positive.GetReal(0) >= 32763
AssertWithin(positive.GetImag(0), 0, 4)
AssertWithin(positive.GetReal(1), 0, 4)
assert positive.GetImag(1) >= 32763
assert positive.GetReal(2) <= -32764
AssertWithin(positive.GetImag(2), 0, 4)
AssertWithin(positive.GetReal(3), 0, 4)
assert positive.GetImag(3) <= -32764
assert positive.phase == 0x0000
assert negative.GetImag(1) <= -32764
assert negative.GetImag(3) >= 32763
assert negative.phase == 0x0000
assert stalled.accepted == 4
assert realMixer.accepted == 2
assert realMixer.GetReal(0) >= 16383
assert realMixer.GetImag(0) == 0
assert realMixer.GetReal(1) == 0
assert realMixer.GetImag(1) >= 16383
assert realMixer.FirstSeen()
assert realMixer.LastSeen()
assert stalledMixer.accepted == 2
assert complexMixer.accepted >= 1
assert complexMixer.GetReal() <= -16383
assert complexMixer.GetImag() >= 16383
}
fn AssertWithin(actual: int, expected: int, tolerance: int)
{
var difference = actual - expected
if (difference < 0) { difference = 0 - difference }
assert difference <= tolerance
}
}