# Frequency Shift - 16 spc (Clock-Driven Logic)

Applies a digital frequency shift to the I/Q data.

A numerically-controlled oscillator (NCO) creates a cosine/sine pair, which is then multiplied by the I/Q data using a complex multiplier. The net effect is to shift the complex spectrum to the left or right in the frequency domain. You must use this node inside a Clock-Driven Loop. This node provides the following functionality:

$\text{data out.I}\le \text{data in.I}×\text{cosine}-\text{data in.Q}×\text{sine data out.Q}\le \text{data in.I}×\text{sine}+\text{data in.Q}×\text{cosine}$, where $×$ represents scalar multiplication. The frequency shift input may be in the range of [-0.5 to +0.5), where negative values shift the complex spectrum to the left and positive values shift the complex spectrum to the right. The amount of frequency shift (in Hz) is determined by multiplying the data rate (in Hz) by the frequency shift input. $\text{Frequency shift (in Hz)}=\text{frequency shift}×\text{data rate (in Hz)}$. The data rate is defined by the clock frequency of the Clock-Driven Loop (CDL), the number of samples in data in and data out, and the fraction of cycles on which input valid is asserted. $\text{Data rate}=\text{CDL clock frequency}×\text{samples per cycle (SPC)}×\text{fraction of cycle on which input valid is asserted}$. For example, if the Clock-Driven Loop is clocked at 120 MHz, the node instance selected is 1 sample per cycle (SPC) and the input valid signal is asserted on every other cycle, then the data rate is 60 MHz. The phase input may be in the range of [-0.5 to +0.5), which corresponds to phase shifting the sine and cosine signals -180 degrees to +180 degrees.

Samples Per Cycle (SPC)—On the Item tab, change the number of parallel samples used on the data in and data out terminals. For multiple samples per cycle, data in and data out become fixed size arrays of SPC elements. The first element, data[0], is the oldest sample in the array.

Overflows—Overflows on data in.overflow are pipelined along with the data path, combined with overflows that occur inside of this node, and output on data out.overflow.

Reset—Toggling the reset input high resets the registers in the output valid path, allowing for deterministic startup behavior. The registers in the data out path are not reset; however, output valid is held low while reset is asserted and does not assert after reset until the registers in the data out path have been flushed. While reset is asserted, ready for input is held low and input valid is ignored.

 Pipeline delay 13 clock cycles Performance Frequency Range: [-0.5 to +0.5) × data rate Frequency Resolution: 3.56e-15 × data rate Phase Range: [-0.5 to +0.5) (corresponds to -180 degrees to 180 degrees) Phase Resolution: 4.77e-7 (corresponds to 0.00017 degrees) Spurious Free Dynamic Range: >105 dBFS Approximate resource usage in a Xilinx Virtex-5 FPGA or Virtex-6 FPGA Slice flip-flops: 6,225 Slice LUTs: 9,150 Block RAMs (18kb): 16 DSP48E(1)s: 96 Approximate maximum clock rate in a Xilinx Virtex-5 FPGA or Virtex-6 (-1) FPGA 160 MHz

Where This Node Can Run:

Desktop OS: none

FPGA: All devices