This shows you the differences between two versions of the page.
Previous revisionNext revision | |||
— | resources:eval:user-guides:stingray:userguide [08 Nov 2022 18:14] – updated broken link in Evaluation Section Sam Ringwood | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== ADAR1000EVAL1Z (STINGRAY) ANALOG BEAMFORMING FRONT-END ====== | ||
+ | ====== GENERAL DESCRIPTION ====== | ||
+ | The ADAR1000-EVAL1Z evaluation board is an analog beamforming front-end designed for testing the performance of the [[adi> | ||
+ | |||
+ | The ADAR1000-EVAL1Z board consists of 8 RF cells. Each cell contains a core [[adi> | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | <WRAP centeralign> | ||
+ | |||
+ | {{ : | ||
+ | <WRAP centeralign> | ||
+ | |||
+ | {{ : | ||
+ | <WRAP centeralign> | ||
+ | |||
+ | {{ : | ||
+ | <WRAP centeralign> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | ===== Main RFICs ===== | ||
+ | === ADAR1000: 8 GHz to 16 GHz, 4-Channel, X Band and Ku Band Beamformer === | ||
+ | * [[adi> | ||
+ | * [[/ | ||
+ | === ADTR1107: 6 GHz to 18 GHz, Front-End Transmit/ | ||
+ | * [[adi> | ||
+ | |||
+ | ===== Peripheral ICs ===== | ||
+ | === RF Detector Block === | ||
+ | * [[adi> | ||
+ | * [[adi> | ||
+ | * [[adi> | ||
+ | |||
+ | === Power Generation === | ||
+ | * [[adi> | ||
+ | * [[adi> | ||
+ | * [[adi> | ||
+ | * [[adi> | ||
+ | * [[adi> | ||
+ | * [[adi> | ||
+ | * [[adi> | ||
+ | |||
+ | === Control & Monitoring === | ||
+ | * [[adi> | ||
+ | * [[adi> | ||
+ | * [[adi> | ||
+ | * [[adi> | ||
+ | |||
+ | ---- | ||
+ | ====== REQUIREMENTS ====== | ||
+ | ===== Documents ===== | ||
+ | * [[adi> | ||
+ | * [[adi> | ||
+ | * {{ : | ||
+ | * {{ : | ||
+ | * Rev. A design: | ||
+ | * {{ : | ||
+ | * {{ : | ||
+ | * Rev. B/C design: | ||
+ | * {{ : | ||
+ | * {{ : | ||
+ | ===== Hardware ===== | ||
+ | * ADAR1000-EVAL1Z Evaluation Board Kit | ||
+ | * Snap-on Antenna Board (available upon request) | ||
+ | * SMPM-SMA cabling to interface with the RF ports | ||
+ | * Digital controller and any associated hardware ([[ADI> | ||
+ | <note warning> | ||
+ | All other SDP controllers (SDP-B, SDP-H1, SDP-K1) are **__NOT__** compatible with the Stingray platform.</ | ||
+ | ===== Suggested Test Equipment ===== | ||
+ | * 20GHz RF Signal Generator | ||
+ | * 20GHz Spectrum Analyzer | ||
+ | * 20GHz Vector Network Analyzer | ||
+ | * Thermal Camera (optional) | ||
+ | * Oscilloscope (optional) | ||
+ | * RF Power Meter (optional) | ||
+ | ===== Software/ | ||
+ | === PMOD Control === | ||
+ | * Two 12-pin PMOD cables ([[https:// | ||
+ | * Four 12-pin 0.100" male-male headers ([[https:// | ||
+ | * Example PMOD digital controllers: | ||
+ | * [[https:// | ||
+ | * FPGA demonstration board | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | === SDP Control === | ||
+ | * [[http:// | ||
+ | * {{ : | ||
+ | * [[adi> | ||
+ | |||
+ | < | ||
+ | |||
+ | === Software === | ||
+ | * [[linux.github> | ||
+ | * [[: | ||
+ | |||
+ | * [[repo> | ||
+ | * [[github> | ||
+ | * [[https:// | ||
+ | * [[github> | ||
+ | * [[github> | ||
+ | |||
+ | ---- | ||
+ | ====== BOARD DESIGN ====== | ||
+ | The ADAR1000-EVAL1Z evaluation board has 8 SMPM RFIO connectors for the 8 cells on the component side of the board. There are 33 SMPM connectors on the opposite side of the board. 32 of these correspond to the 32 RF channels while the last connector goes to the RF detector and ADC combo on the bottom of the board which is intended to be used for calibration. | ||
+ | |||
+ | Two 6-pin Molex " | ||
+ | |||
+ | ===== Power Supply ===== | ||
+ | The ADAR1000-EVAL1Z board must be powered from the included power supply with a voltage level of 12V. There is an on-board power management tree which generates the required voltage rails for all of the associated parts. | ||
+ | |||
+ | ===== RF Input and Output Signals ===== | ||
+ | The ADAR1000-EVAL1Z board has 41 surface-mounted SMPM connectors which are described in Table 1. | ||
+ | **//< | ||
+ | |< 50% 15% 5% 30% 5% 45% >| | ||
+ | ^ Connector(s) | ||
+ | | J1 - J8 | | RFIOx | |ADAR1000 RFIO Connectors | ||
+ | | J1_1 - J1_8, J2_1 - J2_8, J3_1 - J3_8, J4_1 - J4_8 | | ANT1_1 - ANT1_8, ANT2_1 - ANT2_8, ANT3_1 - ANT3_8, ANT4_1 - ANT4_8 | ||
+ | | J9 | | N/A | |RF Detector Input Connector | ||
+ | |||
+ | {{ : | ||
+ | **//< | ||
+ | |||
+ | {{ : | ||
+ | **//< | ||
+ | |||
+ | ===== Digital Signals ===== | ||
+ | The digital input signals are intended to be 3.3V logic while the [[adi> | ||
+ | |||
+ | ==== PMOD Pinout ==== | ||
+ | {{ : | ||
+ | **//< | ||
+ | |||
+ | ==== SPI Control ==== | ||
+ | The ADAR1000-EVAL1Z has five chip-select lines available for use. Four of these lines (CSB1, CSB2, CSB3, CSB4) are intended to be used for the [[adi> | ||
+ | |||
+ | Each [[adi> | ||
+ | |||
+ | {{ : | ||
+ | **//< | ||
+ | |||
+ | The ADAR1000-EVAL1Z alone demonstrates a small beamformer array, but multiple boards can also be stacked and combined to create larger arrays. In order to simplify the digital interface, two boards can be controlled using one digital controller if the two boards use all four of the available CSB lines without worrying about talking to the wrong IC. | ||
+ | ---- | ||
+ | ====== EVALUATION ====== | ||
+ | ===== Hardware Setup ===== | ||
+ | === Mechanical Parts === | ||
+ | * 1x ADAR1000-EVAL1Z board with heatsink already attached | ||
+ | * 2x Uprights with 16 screws attached (6 per leg for the ADAR1000-EVAL1Z board, 1 per leg for the feet) | ||
+ | * 2x Feet with angles installed | ||
+ | |||
+ | === Mechanical Assembly === | ||
+ | - Using a **3/32 inch allen key**, connect the feet to the uprights using the **2 silver screws** already installed at the bottom of the upright. The screws should be snug, but don't need to be cranked down. | ||
+ | - Using a **5/64 inch allen key**, connect the ADAR1000-EVAL1Z board to the uprights, one at a time using the **12 black screws** already installed in the uprights. The uprights are attached via the **front (component side)** of the ADAR1000-EVAL1Z board. The screws should be snug, but don't need to be cranked down. | ||
+ | - The platform should now be fully assembled. Compare the result to the {{ : | ||
+ | |||
+ | === Test Setup Assembly === | ||
+ | - Follow the [[# | ||
+ | - Plug the included power supply into an outlet before connecting the power supply to P1 in the lower left-hand side of the board. Once finished, a red LED (D3) should be lit in the bottom-left corner of the board. | ||
+ | - Connect your digital controller of choice to the appropriate connector (P3/P4 for PMOD control, P5 for [[adi> | ||
+ | - Disable any test equipment of interest, and connect it to the ADAR1000-EVAL1Z board. | ||
+ | |||
+ | ===== Board Power Control ===== | ||
+ | The ADAR1000-EVAL1Z board' | ||
+ | |||
+ | Both **PWR_UP_DOWN** and **+5V_CTRL** are controlled with pulses, not logic levels, as they are inputs to flip-flops rather than enable signals directly. | ||
+ | |||
+ | ==== Powerup Procedure ==== | ||
+ | | ||
+ | * +3.3V_INT (U8, [[adi> | ||
+ | * +1.8V_INT (U9, [[adi> | ||
+ | * -6.0V_INT (U10, [[adi> | ||
+ | | ||
+ | |||
+ | | ||
+ | * +3.3V (U11, [[adi> | ||
+ | * -3.3V (U13, [[adi> | ||
+ | * -5.0V (U14, [[adi> | ||
+ | < | ||
+ | The [[adi> | ||
+ | \\ | ||
+ | **BE SURE TO CONFIGURE THE LTC2992 SUCH THAT ALL | ||
+ | \\ | ||
+ | GPIO PINS ARE HI-Z! SEE [[# | ||
+ | </ | ||
+ | | ||
+ | |||
+ | | ||
+ | * +5.0V (U12, [[adi> | ||
+ | < | ||
+ | The __internal__ **+5V_CTRL** (after U3) and the [[adi> | ||
+ | |||
+ | \\ | ||
+ | **BE SURE TO CONFIGURE THE LTC2992 SUCH THAT ALL | ||
+ | \\ | ||
+ | GPIO PINS ARE HI-Z! SEE [[# | ||
+ | </ | ||
+ | ==== Powerdown Procedure ==== | ||
+ | - Pulse the **+5V_CTRL** signal to bring down the +5V power supply rail. The green LED will turn off indicating that the rail is down. | ||
+ | - Pulse the **PWR_UP_DOWN** signal to tell the power sequencer to bring down the other RF rails in reverse order from powerup. | ||
+ | |||
+ | < | ||
+ | |||
+ | ===== Software Control ===== | ||
+ | * Follow the [[# | ||
+ | * At this point, the board is fully enabled, but all amplifiers are powered down. In order to pass signals, the board needs to be put into either Rx or Tx mode and the [[adi> | ||
+ | |||
+ | < | ||
+ | |||
+ | ===== RF Detector and ADC Combination ===== | ||
+ | There is an on-board RF detector/ | ||
+ | |||
+ | The RF detector is the [[adi> | ||
+ | |||
+ | The [[adi> | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== Recommended ADAR1000 Initialization Sequences ====== | ||
+ | < | ||
+ | The below sequences don't take into account the different hardware addresses of the various ADAR1000s. Consult the [[adi> | ||
+ | </ | ||
+ | < | ||
+ | The below sequences don't take into account the issues described in the [[resources/ | ||
+ | </ | ||
+ | < | ||
+ | The below sequences don't account for the fact that the Stingray uses two CSB lines to address all of the ADAR1000s on the board. In order to configure all chips, the sequences must be run on each required CSB line individually. | ||
+ | </ | ||
+ | ===== Initial Powerup ===== | ||
+ | <code python adar1000_init.py> | ||
+ | """ | ||
+ | This sequence is suggested to be run after powering the +3.3V, -3.3V, and -5.0V rails on the Stingray board, | ||
+ | but before powering the +5.0V rail. This will help protect the ADTR1107 PAs. It will put the chips into a | ||
+ | known safe state on powerup. | ||
+ | Format: (Register, Data, Description) | ||
+ | """ | ||
+ | INIT_SEQUENCE = [ | ||
+ | # HOUSEKEEPING | ||
+ | (0x000, 0x81, ' | ||
+ | (0x038, 0x60, ' | ||
+ | (0x02E, 0x7F, ' | ||
+ | (0x02F, 0x7F, ' | ||
+ | (0x034, 0x08, 'Set LNA preamplifier to nominal bias' | ||
+ | (0x035, 0x55, 'Set Rx VGA and Vector Mod to nominal bias' | ||
+ | (0x036, 0x2D, 'Set Tx VGA and Vector Mod to nominal bias' | ||
+ | (0x037, 0x06, 'Set Tx PA preamplifier to nominal bias' | ||
+ | |||
+ | # PA BIAS VALUES | ||
+ | (0x029, 0x85, 'Set PA1_BIAS_ON value (≈ -2.5V)' | ||
+ | (0x02A, 0x85, 'Set PA2_BIAS_ON value (≈ -2.5V)' | ||
+ | (0x02B, 0x85, 'Set PA3_BIAS_ON value (≈ -2.5V)' | ||
+ | (0x02C, 0x85, 'Set PA4_BIAS_ON value (≈ -2.5V)' | ||
+ | (0x046, 0x85, 'Set PA1_BIAS_OFF value (≈ -2.5V)' | ||
+ | (0x047, 0x85, 'Set PA2_BIAS_OFF value (≈ -2.5V)' | ||
+ | (0x048, 0x85, 'Set PA3_BIAS_OFF value (≈ -2.5V)' | ||
+ | (0x049, 0x85, 'Set PA4_BIAS_OFF value (≈ -2.5V)' | ||
+ | |||
+ | # LNA BIAS VALUES | ||
+ | (0x02D, 0x68, 'Set LNA_BIAS_ON value (≈ -2.0V)' | ||
+ | (0x04A, 0x68, 'Set LNA_BIAS_OFF value (≈ -2.0V)' | ||
+ | |||
+ | # TR CONTROL STATE | ||
+ | (0x031, 0x90, ' | ||
+ | |||
+ | # Enable PA/LNA DACs | ||
+ | (0x030, 0x50, ' | ||
+ | ] | ||
+ | </ | ||
+ | |||
+ | ===== Max Gain & 0° Phase ===== | ||
+ | <code python adar1000_max_gain_0_phase.py> | ||
+ | """ | ||
+ | Sequence to set all ADAR1000 channels to maximum gain and 0° phase. | ||
+ | Format: (Register, Data, Description) | ||
+ | """ | ||
+ | CHANNEL_SETUP = [ | ||
+ | # Rx GAIN | ||
+ | (0x010, 0xFF, 'Set channel 1 Rx to maximum gain' | ||
+ | (0x011, 0xFF, 'Set channel 2 Rx to maximum gain' | ||
+ | (0x012, 0xFF, 'Set channel 3 Rx to maximum gain' | ||
+ | (0x013, 0xFF, 'Set channel 4 Rx to maximum gain' | ||
+ | | ||
+ | # Rx PHASE | ||
+ | (0x014, 0x3F, 'Set channel 1 Rx I Vector Modulator to 0°'), | ||
+ | (0x015, 0x20, 'Set channel 1 Rx Q Vector Modulator to 0°'), | ||
+ | (0x016, 0x3F, 'Set channel 2 Rx I Vector Modulator to 0°'), | ||
+ | (0x017, 0x20, 'Set channel 2 Rx Q Vector Modulator to 0°'), | ||
+ | (0x018, 0x3F, 'Set channel 3 Rx I Vector Modulator to 0°'), | ||
+ | (0x019, 0x20, 'Set channel 3 Rx Q Vector Modulator to 0°'), | ||
+ | (0x01A, 0x3F, 'Set channel 4 Rx I Vector Modulator to 0°'), | ||
+ | (0x01B, 0x20, 'Set channel 4 Rx Q Vector Modulator to 0°'), | ||
+ | | ||
+ | # Tx GAIN | ||
+ | (0x01C, 0xFF, 'Set channel 1 Tx to maximum gain' | ||
+ | (0x01D, 0xFF, 'Set channel 2 Tx to maximum gain' | ||
+ | (0x01E, 0xFF, 'Set channel 3 Tx to maximum gain' | ||
+ | (0x01F, 0xFF, 'Set channel 4 Tx to maximum gain' | ||
+ | | ||
+ | # Tx PHASE | ||
+ | (0x020, 0x3F, 'Set channel 1 Tx I Vector Modulator to 0°'), | ||
+ | (0x021, 0x20, 'Set channel 1 Tx Q Vector Modulator to 0°'), | ||
+ | (0x022, 0x3F, 'Set channel 2 Tx I Vector Modulator to 0°'), | ||
+ | (0x023, 0x20, 'Set channel 2 Tx Q Vector Modulator to 0°'), | ||
+ | (0x024, 0x3F, 'Set channel 3 Tx I Vector Modulator to 0°'), | ||
+ | (0x025, 0x20, 'Set channel 3 Tx Q Vector Modulator to 0°'), | ||
+ | (0x026, 0x3F, 'Set channel 4 Tx I Vector Modulator to 0°'), | ||
+ | (0x027, 0x20, 'Set channel 4 Tx Q Vector Modulator to 0°') | ||
+ | ] | ||
+ | </ | ||
+ | |||
+ | ===== Disable ===== | ||
+ | <code python adar1000_disable.py> | ||
+ | """ | ||
+ | This sequence will disable the ADAR1000 and put the chip into a low power state. | ||
+ | Format: (Register, Data, Description) | ||
+ | """ | ||
+ | DISABLE = [ | ||
+ | (0x029, 0x85, 'Set CH1 PA_BIAS_ON to minimal power (≈ -2.5V)' | ||
+ | (0x02A, 0x85, 'Set CH2 PA_BIAS_ON to minimal power (≈ -2.5V)' | ||
+ | (0x02B, 0x85, 'Set CH3 PA_BIAS_ON to minimal power (≈ -2.5V)' | ||
+ | (0x02C, 0x85, 'Set CH4 PA_BIAS_ON to minimal power (≈ -2.5V)' | ||
+ | (0x02D, 0x68, 'Set LNA_BIAS_ON to minimal power (≈ -2.0V)' | ||
+ | (0x030, 0x50, ' | ||
+ | (0x031, 0x90, 'Put ADAR1000 into SPI-controlled TR state and disable TX_EN/RX_EN bits') | ||
+ | ] | ||
+ | </ | ||
+ | |||
+ | ===== Rx Enable ===== | ||
+ | <code python adar1000_rx_enable.py> | ||
+ | """ | ||
+ | This sequence will configure the ADAR1000 for Rx and set the LNAs to full power. | ||
+ | Be sure you know what you're doing! | ||
+ | Format: (Register, Data, Description) | ||
+ | """ | ||
+ | RX_SETUP = [ | ||
+ | (0x030, 0x40, ' | ||
+ | (0x031, 0xB0, 'Put ADAR1000 into SPI-controlled Rx mode') | ||
+ | ] | ||
+ | </ | ||
+ | |||
+ | ===== Tx Enable (Reduced Power) ===== | ||
+ | <code python adar1000_tx_enable_reduced.py> | ||
+ | """ | ||
+ | This sequence will configure the ADAR1000 for Tx and set the PAs to a reduced power state. | ||
+ | Be sure you know what you're doing! | ||
+ | Format: (Register, Data, Description) | ||
+ | """ | ||
+ | TX_SETUP_REDUCED_POWER = [ | ||
+ | (0x029, 0x42, 'Set CH1 PA_BIAS_ON to reduced power (≈ -1.25V)' | ||
+ | (0x02A, 0x42, 'Set CH2 PA_BIAS_ON to reduced power (≈ -1.25V)' | ||
+ | (0x02B, 0x42, 'Set CH3 PA_BIAS_ON to reduced power (≈ -1.25V)' | ||
+ | (0x02C, 0x42, 'Set CH4 PA_BIAS_ON to reduced power (≈ -1.25V)' | ||
+ | (0x031, 0xD2, 'Put ADAR1000 into SPI-controlled Tx mode') | ||
+ | ] | ||
+ | </ | ||
+ | |||
+ | ===== Tx Enable ===== | ||
+ | <code python adar1000_tx_enable.py> | ||
+ | """ | ||
+ | This sequence will configure the ADAR1000 for Tx and set the PAs to full power. | ||
+ | Be sure you know what you're doing! | ||
+ | Format: (Register, Data, Description) | ||
+ | """ | ||
+ | TX_SETUP = [ | ||
+ | (0x029, 0x38, 'Set CH1 PA_BIAS_ON to full power (≈ -1.06V)' | ||
+ | (0x02A, 0x38, 'Set CH2 PA_BIAS_ON to full power (≈ -1.06V)' | ||
+ | (0x02B, 0x38, 'Set CH3 PA_BIAS_ON to full power (≈ -1.06V)' | ||
+ | (0x02C, 0x38, 'Set CH4 PA_BIAS_ON to full power (≈ -1.06V)' | ||
+ | (0x031, 0xD2, 'Put ADAR1000 into SPI-controlled Tx mode') | ||
+ | ] | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== Configuring the LTC2992 ====== | ||
+ | On powerup, the LTC2992 is configured with GPIO3 held low. To properly power the Stingray board, this pin needs to be set to Hi-Z. Complete the below I2C writes to ensure that all GPIO pins are set to Hi-Z: | ||
+ | < | ||
+ | The LTC2992' | ||
+ | |||
+ | Looking at the schematic for the board, it would seem that the address pins are pulled down (resulting in the address being 0x6F according to Table 3 of the [[adi> | ||
+ | </ | ||
+ | < | ||
+ | The LTC2992 requires repeated START conditions for readback. | ||
+ | </ | ||
+ | |||
+ | <code python ltc2992_configuration.py> | ||
+ | """ | ||
+ | This sequence will set the LTC2992' | ||
+ | Format: (Register, Data, Description) | ||
+ | """ | ||
+ | LTC2992_SETUP = [ | ||
+ | (0x96, 0x00, 'Set GPIO1-GPIO3 pins to Hi-Z' | ||
+ | (0x97, 0x00, 'Set GPIO4 pin to Hi-Z') | ||
+ | ] | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== Stingray Board Cell & Channel Maps ====== | ||
+ | |||
+ | ===== Cell Map ===== | ||
+ | {{ : | ||
+ | <WRAP centeralign> | ||
+ | |||
+ | ===== Channel Map ===== | ||
+ | {{ : | ||
+ | <WRAP centeralign> | ||
+ | |||
+ | ===== Channel Map (Back of Board) ===== | ||
+ | {{ : | ||
+ | <WRAP centeralign> | ||
+ | |||
+ | ===== Support ===== | ||
+ | For additional questions or support, please visit the Engineering Zone forum at [[ez> | ||
+ | |||
+ | [[resources/ | ||
+ | |||
+ | [[: |