Commit graph

6 commits

Author SHA1 Message Date
DrasLorus
a8433e0188
Fix synthesis and includes bugs
- `catch_common` target renamed `catch_common_${PROJECT_NAME}` to avoid
  conflict with other `catch_common` target when included in a top
  cmake project.
- `scale_cordic(double)` moved outside of the SOFTWARE region, as it can
  be useful in Xilinx testbench and is not synthetized anyway.
- A little modification for debbuging purpose, out_stream can be used to
  dump results in a file if not commented out.
2022-04-20 19:44:52 +02:00
Camille Monière
0dc041b840
Fix test method to really using test vectors
- Grow kn_i to 4 bits to pass the new tests.
2022-04-14 17:19:19 +02:00
Camille Monière
7707d12e98
Add a synthesis-friendly option and yet another formatting
- If ENABLE_SOFTWARE is true, the behavior is the same than before. All
  tests and functions relying on std::complex are obfuscated otherwise.
  This is required for Xilinx tools.
2022-03-14 17:55:16 +01:00
Camille Monière
f0035238bf
Correct the name and improve widely
- Fix the MC (Monte-Carlo) to the proper algoritm name, ML (maximum
  likelyhood) and remove HalfPi since the use of divider allow to
  theoretically support any pi / 2^k, k an integer. In reality, a too
  low rotation would require more stages than 7 but it is for futur
  improvements.
- Make use of `divider` template to provide rotation grain finer than pi
  / 2. Validated (unit-tested) with pi / 4 with the same margins than pi
  / 2 (2% of error with floating scaling, 3% with fixed scaling).
- Fix rom size which now use N_STAGES+1 bits instead of 8 regardless of
  N_STAGES. Simplify the cordic method implementation, which
  unexpectedly (and fortunately) improved its performance.
2022-03-14 14:07:10 +01:00
Camille Monière
08c18e63a0
Add support and validation for Pi / 4 in Constexpr variant 2022-03-11 18:38:14 +01:00
Camille Monière
5bc9c3eeb1
Big update, that compiles with Xilinx GCC 6.2
- Commit title implies possible Xilinx Vivado HLS 2019.1 support, thus support
  for e.g. all USRP Series 3 from Ettus.
- Add a new CORDIC version, Rom based and meta-programmed via CMake
  features, to be even compiled with earlier GCC (not quite tested, but
  by changing constexpr to const and using gcc 4.6 -sdt=c++0x, it
  worked).
- Class name modified, to be more explicit.
2022-02-18 21:33:59 +01:00