diff --git a/b_asic/sfg_generators.py b/b_asic/sfg_generators.py index e431ef97d4c2edcd85722e4820f82391a8dfddfb..b71a35ed5f9bbf12832bcbc7fbe8d5197b1ad2a5 100644 --- a/b_asic/sfg_generators.py +++ b/b_asic/sfg_generators.py @@ -378,6 +378,18 @@ def direct_form_2_iir( def radix_2_dif_fft(points: int) -> SFG: + """Generates a radix-2 decimation-in-frequency FFT structure. + + Parameters + ---------- + points : int + Number of points for the FFT, needs to be a positive power of 2. + + Returns + ------- + SFG + Signal Flow Graph + """ if points < 0: raise ValueError("Points must be positive number.") if points & (points - 1) != 0: diff --git a/test/test_sfg_generators.py b/test/test_sfg_generators.py index 6f2eaf2ed373cf8456d64dacf00517bb7d901424..c199fb63dfed24852e8ba0442998e400017e124f 100644 --- a/test/test_sfg_generators.py +++ b/test/test_sfg_generators.py @@ -358,28 +358,6 @@ def test_radix_2_dif_fft_256_points_sinus_input(): assert np.isclose(a, b) -def test_radix_2_dif_fft_512_points_sinus_input_half_frequency(): - POINTS = 512 - sfg = radix_2_dif_fft(points=POINTS) - - assert len(sfg.inputs) == POINTS - assert len(sfg.outputs) == POINTS - - n = np.linspace(0, 2 * np.pi, POINTS) - waveform = np.sin(0.5 * n) - input_samples = [Constant(waveform[i]) for i in range(POINTS)] - - sim = Simulation(sfg, input_samples) - sim.run_for(1) - - exp_res = np.fft.fft(waveform) - res = sim.results - for i in range(POINTS): - a = res[str(i)] - b = exp_res[i] - assert np.isclose(a, b) - - def test_radix_2_dif_fft_negative_number_of_points(): POINTS = -8 with pytest.raises(ValueError, match="Points must be positive number."):