HMC6300 low output power

Hi guys,

Iam using the EV1HMC6300BG46 and EV1HMC6301BG46 Eval-boards together with a self build custom board.

I am wondering why the HMC6300 is not having a greater RF output power than -26,xxdBm . It seems as even if I increase the different VGA gains there is a kind of saturation at this output power, so with different higher gain settings the power is not increasing. My LO is from a very clean arbitrary function generator and suits the specs in power output.

what could be the cause of this behaviour?

best regards

Benjamin

  • Dear ADI support team,

    i would really appreciate some help with the HMC6300/01 chips. since your datasheets are not documented well enough on how to properly set the reigsters for default operation or in a specific use case.

    As for my application I am using an external SE LO with about 20GHz to test the EValboards. Like I asked in my privious question I get an output too low in power. Why is that so? I am using AC-coupling for the I/Q signals and the supply voltages are fine. So why does the HMC6300 have this low output power??

  • Hi Benjamin,

    The TX BB I/Q inputs do need to be AC-coupled which you implemented.  What's the BB I/Q input power?  If your using an ext LO that input needs to be AC-coupled also and it should be an analog input.  The RF output will be 3.5 x the ext LO input (LO range = 16.28 to 21.33 GHz).   Do you have a screen shot of the 6300 RF output that you can share?

  • Hello Mark_D,

    thanks for your answer. please find attached my plots of the I/Q signals after my AC coupling capacitors, right before the connectro to the EV1HMC6300BG46. The plots are taken single ended, since I sadly dont have the right measurements equipment for measuring differentially. I will get you the spectrum plots as soon as I can use our spectrum analyzer in the lab. The LO has no DC offset and works in the appropriate power zone.

  • Hi Benjamin,

    The external LO inputs have a DC bias present, if a DC block is not used the test equipment connected to the port(s) will load down the external LO and the TX will not operate.  You don't need to feed the external LO port with a differential signal, a single-ended input is OK.

    Regards,

    Mark

  • Hi Mark_D,

    I use a single ended LO of 17GHz and have configured the HMC6300 with max. gain for IF and VGA. Please see attached my init routine and an image of the output power at max. gain settings:

    /**
    * @brief          HMC6300 configure on power up
    * @author          Benjamin Brammer
    * @date          22.05.2017
    *
    * This function configures the HMC6300 after power up.
    *IMPROTANT! : programming is MSB first, the
    * configuration in STMCubeMX is with LSB first!
    **/

    void HMC6300_config_startup(void)
    {
         /* configuring the HMC6300 */
         /* configure Register ROW1 (base Voltage and bias current for power amp) */
         CS_HMC6300_HIGH;
         hmc6300_data[0] = 0b111001010;
         hmc6300_data[1] = 0b110100000;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW2 (SE or DIFF output and Tx power detector) */

         hmc6300_data[0] = 0b011111100;
         hmc6300_data[1] = 0b110100001;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW3 (bias current for power amp / Predriver 2) */

         hmc6300_data[0] = 0b111110101;          //ToDo: maybe need a change!
         hmc6300_data[1] = 0b110100001;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW4 (power down register) */

         hmc6300_data[0] = 0b0;
         hmc6300_data[1] = 0b110100010;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW5 (bias for freq tripler) */

         hmc6300_data[0] = 0b111111111;
         hmc6300_data[1] = 0b110100010;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW6 (bias for freq tripler) */

         hmc6300_data[0] = 0b011101100;
         hmc6300_data[1] = 0b110100011;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW7 (IF gain control; IF tuning) */

         hmc6300_data[0] = 0b100001111;          //ToDo: maybe need change here (IF gain)
         hmc6300_data[1] = 0b110100011;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW8 (IF bias control; IF tuning for RF up filter) */

         hmc6300_data[0] = 0b010001111;
         hmc6300_data[1] = 0b110100100;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW9 (Q control of IF) */

         hmc6300_data[0] = 0b100000000;
         hmc6300_data[1] = 0b110100100;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW10 (FSK/MSK operation; Power Down options) */

         hmc6300_data[0] = 0b001010000;
         hmc6300_data[1] = 0b110100101;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW11 (Rf gain control; RF bias current control) */

         hmc6300_data[0] = 0b100000011;
         hmc6300_data[1] = 0b110100101;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW12 (3xLO feedthrough calibration of RF upmixer) */

         hmc6300_data[0] = 0b001100100;          //ToDo: what is this for???
         hmc6300_data[1] = 0b110100110;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW16 (CP functions when synthesizer is used) */

         hmc6300_data[0] = 0b0;
         hmc6300_data[1] = 0b110101000;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW17 (synthesizer options) */

         hmc6300_data[0] = 0b100000000;
         hmc6300_data[1] = 0b110101000;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW18 (LO and synthesizer options) */

         hmc6300_data[0] = 0b000010000;
         hmc6300_data[1] = 0b110101001;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW19 (factory diagnostics) */

         hmc6300_data[0] = 0b100000010;
         hmc6300_data[1] = 0b110101001;;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW20 (feedback divider ratio for integer-N synth.) */

         hmc6300_data[0] = 0b001010000;          //ToDo: this shouldn't be important because of ext. LO
         hmc6300_data[1] = 0b110101010;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW21 (VCO tank currents) */

         hmc6300_data[0] = 0b100010010;
         hmc6300_data[1] = 0b110101010;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW22 (band setting frequency) */

         hmc6300_data[0] = 0b0;          //ToDo: this shouldn't be important because of ext. LO
         hmc6300_data[1] = 0b110101011;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;

         /* configure Register ROW23 (CPcurrent, VCO output swing) */

         hmc6300_data[0] = 0b101100010;
         hmc6300_data[1] = 0b110101011;

         CS_HMC6300_LOW;
         HAL_SPI_Transmit_DMA(&hspi4, &hmc6300_data[0], 2); //transfer
         while(HAL_SPI_GetState(&hspi4) == HAL_SPI_STATE_BUSY_TX);
         CS_HMC6300_HIGH;
    }

    here the measurement:

    I have Ac coupling with the LO but leave the ext. LO_N open.

    I am pretty sure that for some reason the chip goes into saturation. For example: I use an input Signal of about 0dBm (100MHz CW). This signal is I/Q demodulated with an 250MHz LO and then fed into the HMC6300 (the I/Q plots of my previous post). when I now reduce the input power of the 100MHz signal to -4,8dBm I still get the same reading from the spectrum analyzer of the upconverted 60GHz signal. -9dBm gets me about -3dB of the 60GHz signal power. And in contrary when I increase the input power >0dBm nothing happens with the 60GHz power level it stays saturated until at some point I overdrive the I/Q input and get a lot of THD (spurs).