When the RF-ADC or RF-DAC mixer with numerically controlled oscillator is in use the frequency of the NCO can be tuned in real-time using the RF-ADC and RF-DAC real-time NCO interfaces. This section describes the operation of these interfaces.
When carrying out frequency hopping information on the required phase and
frequency of the NCO must be conveyed to the IP core. The NCO frequency is set by the
48-bit twos complement signed number nco_freq
. The
nco_freq
signal has a range of -Fs/2 to Fs/2-Fs/(2^48). The maximum positive value (0x7FFF_FFFF_FFFF) results in a NCO
frequency of Fs/2- Fs(2^48) while
the maximum negative value (0x8000_0000_0000) produces a NCO frequency of -Fs/2. This is shown in the following table.
NCO Frequency |
nco_freq
|
---|---|
-Fs/2 | 0x8000_0000_0000 |
-Fs/4 | 0xc000_0000_0000 |
0 | 0x0000_0000_0000 |
Fs/4 | 0x4000_0000_0000 |
Fs/2 - Fs/(2^48) | 0x7FFF_FFFF_FFFF |
If the required NCO frequency is higher than Fs/2 the frequency should be folded down into the -Fs/2 to Fs/2 - Fs/(2^48) range by subtracting the sampling frequency as required. Similarly, for large negative frequencies, the sampling frequency is added to the required NCO frequency until it is in range. For NCO frequencies in even Nyquist zones the resultant frequency should be negated. For Gen 1 and Gen 2 RF-ADCs where calibration mode 1 is selected the mixer frequency should be reduced by Fs/2.
nco_phase
. This is a phase offset added to the output of the NCO accumulator.
The nco_phase
input is an 18-bit twos complement signed
number in the range -180 to 180 - 180/(2^17) degrees. The maximum positive value
(0x1_FFFF) gives a phase shift of 180 - 180/(2^17) degrees. The maximum negative value
(0x2_0000) gives a phase shift of -180 degrees. This is shown in the following
table.
NCO Phase |
nco_phase
|
---|---|
-1800 | 0x2_0000 |
-900 | 0x3_0000 |
00 | 0x0_0000 |
900 | 0x1_0000 |
180 - 180/(2^17) | 0x1_FFFF |
The nco_update_en
signal is used to determine
what frequency and phase words are modified on an update event. The bits in the nco_update_en
vector are set High to modify the following
bits of the frequency and phase numbers.
- Bit 5: Reset the phase offset to 0
- Bit 4:
nco_phase[17:16]
- Bit 3:
nco_phase[15:0]
- Bit 2:
nco_freq[47:32]
- Bit 1:
nco_freq[31:16]
- Bit 0:
nco_freq[15:0]
For example, if only bits 2:0 of nco_update_en
are set High, only the frequency value is changed on an
update event.