diff --git a/examples/thirdorderblwdf.py b/examples/thirdorderblwdf.py index 117041fcecaf2d9e49df26c46363b15c26266119..df19a1ed59b09c45845223924c0cc691226d289d 100644 --- a/examples/thirdorderblwdf.py +++ b/examples/thirdorderblwdf.py @@ -5,9 +5,13 @@ Third-order Bireciprocal LWDF Small bireciprocal lattice wave digital filter. """ +import numpy as np +from mplsignal.freq_plots import freqz_fir + from b_asic.core_operations import Addition, SymmetricTwoportAdaptor from b_asic.schedule import Schedule from b_asic.signal_flow_graph import SFG +from b_asic.signal_generator import Impulse from b_asic.simulation import Simulation from b_asic.special_operations import Delay, Input, Output @@ -21,19 +25,28 @@ a = s.output(0) + D0 out0 = Output(a, "y") sfg = SFG(inputs=[in0], outputs=[out0], name="Third-order BLWDF") +# %% +# The SFG looks like +sfg -# Set latencies and exection times +# %% +# Set latencies and execution times sfg.set_latency_of_type(SymmetricTwoportAdaptor.type_name(), 4) sfg.set_latency_of_type(Addition.type_name(), 1) sfg.set_execution_time_of_type(SymmetricTwoportAdaptor.type_name(), 1) sfg.set_execution_time_of_type(Addition.type_name(), 1) -sim = Simulation(sfg, [lambda n: 0 if n else 1]) +# %% +# Simulate +sim = Simulation(sfg, [Impulse()]) sim.run_for(1000) -import numpy as np -from mplsignal.freq_plots import freqz_fir +# %% +# Display output freqz_fir(np.array(sim.results['0']) / 2) +# %% +# Create and display schedule schedule = Schedule(sfg, cyclic=True) +schedule.show()