Extend Generate Blocks and Parameters to Support Arbitrary M and D
In its currently implementation M/D oversample ratios of 4/3 have been tested and known to work just fine. However, it would be nice to continue to build the IP out to better support more flexible configurations. Much of the generate/parameters are in place the capabilities just need to be extended.
Feature list below with a little breadcrumbs about the status of the progress in descriptions. With some more notes in the discussions.
Features:
- Allow M=D (critically sampled)
- no real work to pursue this yet, most likely just need a few generate blocks, or just an entirely different module.
- Arbitrary M/D
- Needs to be tested, are constraints and assumptions (see below)
- Logic needs to be added for when FIFOs are not equal to a power of 2. The buffers should still work since the underlying logic compares on the number of sample written.
- resource/clock optimizations (allow for parallel multiples)
- Most of the infrastructure is there, needs to be tested. Powers of 2 only.
- The constants package and use of the
SAMP_PER_CLK
parameter should generate "nominal"(M) FFT_LEN
and(D) DEC_FAC
that are used throughout the module parameters instead of using the computed ratiosFFT_LEN/SAMP_PER_CLK
etc.