10-21-2020 09:58 AM
Hi, I'm exploring the example design automatically generated by Vivado for the rfsoc rf_data_converter IP, targeting the xczu48dr
In the file demo_tb_rfadc_tile_source.sv, the value of VCM is set to 0.7V, as shown here:
parameter VCM = 0.70; // adjust to match fe/ch switch common mode attenuation
Could someone tell me where this value come from, why it is not 1.25V and explain what is the "fe/ch switch common mode attenuation"?
When trying to create a loopback between the dac output and the adc input as shown in the RF data converter manual, I had to set the value of VCM to 0.7, otherwise the foreground calibration phase never ends:
Here is what is found in the manual:
// Force the ADC analog input
force
DUT.usp_rf_data_converter_0_ex_i.usp_rf_data_converter_0.inst.rfdc_ex_usp_rf
_data_converter_0_0_rf_wrapper_i.rx0_u_adc.SIP_HSADC_INST.VIN_I01_P = 1.25
+ (dac00_p-dac00_n); // ADC VCM = 1.25V
force
DUT.usp_rf_data_converter_0_ex_i.usp_rf_data_converter_0.inst.rfdc_ex_usp_rf
_data_converter_0_0_rf_wrapper_i.rx0_u_adc.SIP_HSADC_INST.VIN_I01_N = 1.25
- (dac00_p-dac00_n); // ADC VCM = 1.25V
Here is what I have to write in the the testbench for it to work:
// Force the ADC analog input
force
DUT.usp_rf_data_converter_0_ex_i.usp_rf_data_converter_0.inst.rfdc_ex_usp_rf
_data_converter_0_0_rf_wrapper_i.rx0_u_adc.SIP_HSADC_INST.VIN_I01_P = 0.7
+ (dac00_p-dac00_n); // ADC VCM = 0.7 instead of 1.25V
force
DUT.usp_rf_data_converter_0_ex_i.usp_rf_data_converter_0.inst.rfdc_ex_usp_rf
_data_converter_0_0_rf_wrapper_i.rx0_u_adc.SIP_HSADC_INST.VIN_I01_N = 0.7
- (dac00_p-dac00_n); // ADC VCM = 0.7 instead of 1.25V
I would really appreciate if someone could help me to understand.
10-23-2020 02:35 AM
I just realized that the answer could just be that the internal Vcm for the xczu48dr is actually 0.7V and that the datasheet does not mention that yet.