diff options
author | Martin Braun <martin.braun@ettus.com> | 2021-03-17 16:08:05 +0100 |
---|---|---|
committer | Wade Fife <wade.fife@ettus.com> | 2021-04-07 11:02:53 -0500 |
commit | 3b3d3b6f9efb0fe685d9fabc8bdaca813549d9e3 (patch) | |
tree | 83035f0b9f44913c3bb19f911862213e4f14b94c /fpga/usrp3/lib | |
parent | 546ea894a0d5dd23dd046ef3b3c2d61acebefa98 (diff) | |
download | uhd-3b3d3b6f9efb0fe685d9fabc8bdaca813549d9e3.tar.gz uhd-3b3d3b6f9efb0fe685d9fabc8bdaca813549d9e3.tar.bz2 uhd-3b3d3b6f9efb0fe685d9fabc8bdaca813549d9e3.zip |
fpga: docs: Improve documentation of rx_frontend_gen3
Also fixes a typo in the calibration manual page.
Diffstat (limited to 'fpga/usrp3/lib')
-rw-r--r-- | fpga/usrp3/lib/rfnoc/blocks/rfnoc_block_radio/rx_frontend_gen3.v | 74 |
1 files changed, 73 insertions, 1 deletions
diff --git a/fpga/usrp3/lib/rfnoc/blocks/rfnoc_block_radio/rx_frontend_gen3.v b/fpga/usrp3/lib/rfnoc/blocks/rfnoc_block_radio/rx_frontend_gen3.v index df2965a9d..c11f174e5 100644 --- a/fpga/usrp3/lib/rfnoc/blocks/rfnoc_block_radio/rx_frontend_gen3.v +++ b/fpga/usrp3/lib/rfnoc/blocks/rfnoc_block_radio/rx_frontend_gen3.v @@ -5,7 +5,79 @@ // // SPDX-License-Identifier: LGPL-3.0-or-later // - +// Module: rx_frontend_gen3 +// +// Description: +// +// RX Frontend Correction Module +// ----------------------------- +// +// This module will perform the following modifications of the signal, in this +// order: +// +// 1) I/Q Swapping/Reordering: The I and Q values from the ADC can be remapped +// arbitrarily and can be inverted. The behaviour of this IQ mux is +// controlled by writing to the settings register at SR_IQ_MAPPING. +// +// This register uses the following bits: +// +// Bit 0: Set to 1 to swap I and Q. +// Bit 1: Set to 1 to enable real mode (only relevant if +// BYPASS_REALMODE_DSP is set to 0, see below). If it is 1, then +// the Q input signal is ignored and assumed to be zero. +// Bit 2: Set to 1 to invert the Q input signal +// Bit 3: Set to 1 to invert the I input signal +// Bit 4: Set to 1 to enable the quarter-rate downconverter (only relevant +// when BYPASS_REALMODE_DSP is set to 0, see below). +// Bit 7: Disable all corrections in this module. +// +// 2) DC offset correction. See the rx_dcoffset module for details. This is +// either a fixed DC offset, or a notch filter around DC. The behaviour of +// this correction step is controlled by writing to settings registers at +// SR_OFFSET_I and SR_OFFSET_Q (they get forwarded to rx_dcoffset). +// Set BYPASS_DC_OFFSET_CORR to 1 to not synthesize this step. +// +// 3) IQ imbalance correction. This implements a simple, one-shot IQ imbalance +// correction. It will modify the I and Q signals as follows: +// _ _ _ _ _ _ +// | I' | | A/64+1 0 | | I | +// | | = | | | | +// |_Q'_| |_ B/64 1_| |_ Q _| +// +// Here, A is the value written to the register at SR_MAG_CORRECTION, and +// B is the value written to the register at SR_PHASE_CORRECTION. +// Set BYPASS_IQ_COMP to 1 to not synthesize this step. +// +// 4) Real-to-imaginary conversion. The converter is only enabled when the +// "downconvert" bit in the SR_IQ_MAPPING register is asserted. In this +// case, it enables a quarter-rate mixer. The direction of this mixer is +// controlled by the SR_HET_PHASE_INCR register (a 0 in this register +// rotates by pi/2 every clock cycle, a 1 in this register rotates by -pi/2). +// +// The mixer is followed by a non-decimating half-band filter. +// +// Set BYPASS_REALMODE_DSP to 1 to not synthesize this step. +// +// +// UHD Developers Note: This module is typically controlled by rx_frontend_core_3000 in UHD, +// and is also described in the calibration.dox manual page. When modifying this file, make +// sure to also modify those files if necessary. +// +// Parameters: +// SR_MAG_CORRECTION : Settings register address for the IQ correction "MAG" value +// SR_PHASE_CORRECTION : Settings register address for the IQ correction "PHASE" value +// SR_OFFSET_I : Settings register address for DC offset I correction +// value (goes to rx_dcoffset) +// SR_OFFSET_Q : Settings register address for DC offset Q correction +// value (goes to rx_dcoffset) +// SR_IQ_MAPPING : Settings register address for IQ mapping value +// SR_HET_PHASE_INCR : Settings register address for the real mode phase +// increment value +// BYPASS_DC_OFFSET_CORR : Set to 1 to disable DC offset correction +// BYPASS_IQ_COMP : Set to 1 to disable IQ offset correction +// BYPASS_REALMODE_DSP : Set to 1 to disable realmode to complex conversion +// DEVICE : Unused. +// module rx_frontend_gen3 #( parameter SR_MAG_CORRECTION = 0, parameter SR_PHASE_CORRECTION = 1, |