This design contains two NCOs, implemented with phase accumulators and sine lookup tables. The outputs of the NCOs are multiplied together by default. NCO B can be bypassed to a constant "one" or "half". There is also a boxcar filter for funsies.
When operating at 50 MHz, it should be possible to tune NCO A from 24.8 MHz to 0.195 MHz. NCO B has one less bit in its increment control, so it can only go up to 12.3 MHz.
The output is intended for something simple like an R-2R DAC. Don't expect it to be pretty at high frequency.
# | Input | Output | Bidirectional |
---|---|---|---|
0 | phase_incr_A[0] | OUT0 | phase_incr_B[0] |
1 | phase_incr_A[1] | OUT1 | phase_incr_B[1] |
2 | phase_incr_A[2] | OUT2 | phase_incr_B[2] |
3 | phase_incr_A[3] | OUT3 | phase_incr_B[3] |
4 | phase_incr_A[4] | OUT4 | phase_incr_B[4] |
5 | phase_incr_A[5] | OUT5 | phase_incr_B[5] |
6 | phase_incr_A[6] | OUT6 | low_amplitude_B |
7 | filter_on | OUT7 | bypass_B |