6.14.5. Four Channel, 16 Banks NCO
This design example implements a NCO with four channels and 16 banks. This design example demonstrates frequency-hopping with the NCO block to generate 4 channels of sinusoidal waves, which you can switch from one set (bank) of frequencies to another in the 16 predefined frequency sets.
A workspace variable phaseIncr defines the 16 (rows) × 4 (columns) matrix for the phase increment input with the phase increment values that the setup script calculates.
The input for the bank index is set up so that it cycles from 0 to 15 with each bank lasting 1200 steps.
The spectrum display shows clearly 16 peaks for the selected channel indicating that the design example generates 16 different frequencies for that channel. The scope of the selected channel shows the sinusoidal waves of the selected channel. You can zoom in to see that the design example generates smooth and continuous sinusoidal signals at the switching point.
The top-level testbench includes Control, Signals, Run ModelSim, and Run Quartus Prime blocks, plus ChanView blocks that deserialize the output buses. An Edit Params block allows easy access to the setup variables in the setup_demo_mc_nco_16banks.m script.
The NCOSubSystem subsystem includes the Device and NCO blocks.
The model file is demo_mc_nco_16banks.mdl.