summaryrefslogtreecommitdiff
path: root/cocotb_try/test_cic.py
diff options
context:
space:
mode:
Diffstat (limited to 'cocotb_try/test_cic.py')
-rw-r--r--cocotb_try/test_cic.py47
1 files changed, 28 insertions, 19 deletions
diff --git a/cocotb_try/test_cic.py b/cocotb_try/test_cic.py
index ea176fc..8242a78 100644
--- a/cocotb_try/test_cic.py
+++ b/cocotb_try/test_cic.py
@@ -13,20 +13,13 @@ from pcm2pdm import convert
from testsignal import generate_test_tone
from test_pdm import plot_reconstruct
+sr = 16000
+decimation = 64
-async def drive_waveform(dut, waveform):
-
- high_delay = Timer(1, units="ns")
- low_delay = Timer(1, units="ns")
+async def drive_waveform(dut, waveform):
for a_val in waveform:
dut.pdm_in.value = bool(a_val)
-
- #dut.clk.value = 0
- #await low_delay
- #dut.clk.value = 1
- #await high_delay
-
await RisingEdge(dut.clk)
@@ -44,27 +37,43 @@ async def collect_output(dut, samples):
return out
+async def process_pdm(dut, pdm_data, decimation):
+
+ cocotb.start_soon(Clock(dut.clk, 10, units="ns").start())
+ cocotb.start_soon(drive_waveform(dut, pdm_data))
+
+ pcm_samples = len(pdm_data)//decimation
+ out = await collect_output(dut, pcm_samples)
+
+ return out
+
@cocotb.test()
-async def my_second_test(dut):
+async def test_decode_sine_1000hz(dut):
"""Try running with PDM input"""
- sr = 16000
- decimation = 64
-
sig = generate_test_tone(duration_sec=0.004,
freqs=[1000.0], noise_level=0.0, sample_rate=sr, amplitude=0.9,
)
pdm_data = convert(sig)
+ output = await process_pdm(dut, pdm_data, decimation)
+ output = output / 1024
- cocotb.start_soon(Clock(dut.clk, 10, units="ns").start())
- cocotb.start_soon(drive_waveform(dut, pdm_data))
+ fig = plot_reconstruct(sig, pdm_data, output, sr=sr, aspect=6.0)
+ fig.savefig('pdm_cocotb_1khz.png')
- pcm_samples = len(pdm_data)//decimation
- output = await collect_output(dut, pcm_samples)
+@cocotb.test()
+async def test_decode_sine_200hz(dut):
+ """Try running with PDM input"""
+ sig = generate_test_tone(duration_sec=0.008,
+ freqs=[200.0], noise_level=0.0, sample_rate=sr, amplitude=0.9,
+ )
+
+ pdm_data = convert(sig)
+ output = await process_pdm(dut, pdm_data, decimation)
output = output / 1024
fig = plot_reconstruct(sig, pdm_data, output, sr=sr, aspect=6.0)
- fig.savefig('pdm_cocotb.png')
+ fig.savefig('pdm_cocotb_200hz.png')