I'm interested in the ad9213 chip in sampling communication signals.
However when I use the connect AD9213-EBZ-B REV A to VCU118.
Firstly, I found JTAG cannot recognize the FPGA.I found that REV A did not connect TDI and TDO, which resulted in no JTAG loopback. I avoided this problem by shorting the TDI and TDO switches on the VCU118. I wonder if there is a more suitable solution.
Then, I followed the configuration process in the datasheet and checked the status of the JESD204 IP core on the FPGA, which showed that the link had been established. However, when I captured the data through ILA, I found that there were always 4 group of samples error after deframing. As shown in the figure below.
After checking, it was found that the physical layer pin signals of 4 channels on AD9213-EZB-B were connected to FMC with reverse polarity, as shown in the figure.
So I tried to configure the output inversion of AD9213's JESD204 PHY, that is, set the SPI register address 0x05EA to 0xAC. I added this configuration to the JESD204 configuration process and read back the register to confirm that the configuration was successful. However, JESD did not change at all. Is the address I configured incorrectly? or can you give me a clear configuration order? or is there a better solution?
Thanks!
Airan
The attachment is my configuration file.
#include "xparameters.h"
#include "airan_uart.h"
#include "airan_spi_3wire.h"
#include "airan_jesd204c.h"
#include "airan_delay.h"
#include "airan_print.h"
AC_UART uart_0;
AC_SPI_3WIRE spi_adf4371;
AC_SPI_3WIRE spi_hmc7044;
AC_SPI_3WIRE spi_ad9213;
AC_JESD204C jesd204c_lsb;
AC_JESD204C jesd204c_msb;
void device_init(void);
void configure_adf4371(void);
void configure_hmc7044(void);
void configure_ad9213(void);
void configure_jesd204c_rx(void);
int main(void){
print_log("Start...");
device_init();
configure_hmc7044();
configure_adf4371();
configure_ad9213();
configure_jesd204c_rx();
print_log("Stop...");
return 0;
}
void device_init(void){
uart_0.initialize(XPAR_AXI_UARTLITE_0_BASEADDR);
uart_0.disable_interrupt();
spi_adf4371.initialize(XPAR_IP_AXI_SPI_3WIRE_0_S_AXI_BASEADDR);
spi_adf4371.set_msb_mode(NAMESPACE_SPI_3WIRE::MSB::MSB_FIRST);
spi_hmc7044.initialize(XPAR_IP_AXI_SPI_3WIRE_1_S_AXI_BASEADDR);
spi_hmc7044.set_msb_mode(NAMESPACE_SPI_3WIRE::MSB::MSB_FIRST);
spi_ad9213.initialize(XPAR_IP_AXI_SPI_3WIRE_2_S_AXI_BASEADDR);
spi_ad9213.set_msb_mode(NAMESPACE_SPI_3WIRE::MSB::MSB_FIRST);
jesd204c_lsb.initialize(XPAR_JESD204C_0_BASEADDR);
jesd204c_lsb.set_subclass(NAMESPACE_JESD204C::SUBCLASS::SUBCLASS_1);
out32(jesd204c_lsb.REG_CTRL_8B10B_CFG, 0x03031F00);
jesd204c_lsb.set_lane_enable(0xFF);
// out32(jesd204c_lsb.REG_CTRL_TEST_MODE, 0x01000000);// set CTRL_TEST_MODE
jesd204c_lsb.set_sysref_mode(true, false);
// jesd204c_lsb.inv_lane0_lane3();//fan xiang
jesd204c_lsb.set_enable_datapath(true, true);
jesd204c_msb.initialize(XPAR_JESD204C_1_BASEADDR);
jesd204c_msb.set_subclass(NAMESPACE_JESD204C::SUBCLASS::SUBCLASS_1);
out32(jesd204c_msb.REG_CTRL_8B10B_CFG, 0x03031F00);
jesd204c_msb.set_lane_enable(0xFF);
// out32(jesd204c_msb.REG_CTRL_TEST_MODE, 0x01000000);// set CTRL_TEST_MODE
jesd204c_msb.set_sysref_mode(true, false);
jesd204c_msb.set_enable_datapath(true, true);
}
void configure_adf4371(void){
u8 buffer;
spi_hmc7044.send_16b_8b(0x02, 0x0000,0x00); //slave\address\data
spi_hmc7044.send_16b_8b(0x02, 0x0001,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0003,0x06);
buffer = spi_hmc7044.recv_16b_8b(0x02, 0x0003);
print_info("ADF4371 A 0x0003 : %h", buffer);
spi_hmc7044.send_16b_8b(0x02, 0x0004,0x01);
spi_hmc7044.send_16b_8b(0x02, 0x0005,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0006,0x09);
spi_hmc7044.send_16b_8b(0x02, 0x000C,0x56);
spi_hmc7044.send_16b_8b(0x02, 0x000D,0x04);
spi_hmc7044.send_16b_8b(0x02, 0x007C,0x01);
spi_hmc7044.send_16b_8b(0x02, 0x007B,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x007A,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0079,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0073,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0072,0x32);
spi_hmc7044.send_16b_8b(0x02, 0x0071,0x60);
spi_hmc7044.send_16b_8b(0x02, 0x0070,0xE3);
spi_hmc7044.send_16b_8b(0x02, 0x006F,0x02);
spi_hmc7044.send_16b_8b(0x02, 0x006E,0x86);
spi_hmc7044.send_16b_8b(0x02, 0x006C,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0052,0xF4);
spi_hmc7044.send_16b_8b(0x02, 0x0047,0xC0);
spi_hmc7044.send_16b_8b(0x02, 0x0046,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0045,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0044,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0043,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0042,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0041,0x28);
spi_hmc7044.send_16b_8b(0x02, 0x0040,0x50);
spi_hmc7044.send_16b_8b(0x02, 0x003F,0x80);
spi_hmc7044.send_16b_8b(0x02, 0x003E,0x0C);
spi_hmc7044.send_16b_8b(0x02, 0x003D,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x003A,0x55);
spi_hmc7044.send_16b_8b(0x02, 0x0039,0x07);
spi_hmc7044.send_16b_8b(0x02, 0x0038,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0037,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0036,0x30);
spi_hmc7044.send_16b_8b(0x02, 0x0035,0xFF);
spi_hmc7044.send_16b_8b(0x02, 0x0034,0x86);
spi_hmc7044.send_16b_8b(0x02, 0x0033,0x23);
spi_hmc7044.send_16b_8b(0x02, 0x0032,0x04);
spi_hmc7044.send_16b_8b(0x02, 0x0031,0x02);
spi_hmc7044.send_16b_8b(0x02, 0x0030,0x34);
spi_hmc7044.send_16b_8b(0x02, 0x002F,0x94);
spi_hmc7044.send_16b_8b(0x02, 0x002E,0x12);
spi_hmc7044.send_16b_8b(0x02, 0x002D,0x11);
spi_hmc7044.send_16b_8b(0x02, 0x002C,0x44);
spi_hmc7044.send_16b_8b(0x02, 0x002B,0x01);
spi_hmc7044.send_16b_8b(0x02, 0x002A,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0028,0x83);
spi_hmc7044.send_16b_8b(0x02, 0x0027,0xC5);
spi_hmc7044.send_16b_8b(0x02, 0x0026,0x30);
spi_hmc7044.send_16b_8b(0x02, 0x0025,0x0B);
spi_hmc7044.send_16b_8b(0x02, 0x0024,0x80);
spi_hmc7044.send_16b_8b(0x02, 0x0023,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0022,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0021,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0020,0x1C);
spi_hmc7044.send_16b_8b(0x02, 0x001F,0x01);
spi_hmc7044.send_16b_8b(0x02, 0x001E,0x58);
spi_hmc7044.send_16b_8b(0x02, 0x001D,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x001C,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x001B,0x04);
spi_hmc7044.send_16b_8b(0x02, 0x001A,0xE2);
spi_hmc7044.send_16b_8b(0x02, 0x0019,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0018,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0017,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0016,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0015,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0014,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0012,0x40);
spi_hmc7044.send_16b_8b(0x02, 0x0011,0x00);
spi_hmc7044.send_16b_8b(0x02, 0x0010,0x28);
}
void configure_hmc7044(void){
u8 buffer;
spi_hmc7044.send_16b_8b(0x01, 0x0054, 0x03);
spi_hmc7044.send_16b_8b(0x01, 0x0048, 0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0049, 0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0051, 0x7F);
spi_hmc7044.send_16b_8b(0x01, 0x0050, 0x03);
spi_hmc7044.send_16b_8b(0x01, 0x0052, 0x1F);
spi_hmc7044.send_16b_8b(0x01, 0x0053, 0x2B);
spi_hmc7044.send_16b_8b(0x01, 0x009F,0x4D);
spi_hmc7044.send_16b_8b(0x01, 0x00A0,0xDF);
spi_hmc7044.send_16b_8b(0x01, 0x00A5,0x06);
spi_hmc7044.send_16b_8b(0x01, 0x00A8,0x06);
spi_hmc7044.send_16b_8b(0x01, 0x00B0,0x04);
spi_hmc7044.send_16b_8b(0x01, 0x0003,0x36);
spi_hmc7044.send_16b_8b(0x01, 0x0032,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0033,0x01);
spi_hmc7044.send_16b_8b(0x01, 0x0034,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0035,0x0A);
spi_hmc7044.send_16b_8b(0x01, 0x0036,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0015,0x03);
spi_hmc7044.send_16b_8b(0x01, 0x0019,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0028,0x0F);
spi_hmc7044.send_16b_8b(0x01, 0x002A,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0021,0x04);
spi_hmc7044.send_16b_8b(0x01, 0x0022,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0026,0x10);
spi_hmc7044.send_16b_8b(0x01, 0x0027,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x010E,0xF3);
spi_hmc7044.send_16b_8b(0x01, 0x010F,0x08);
spi_hmc7044.send_16b_8b(0x01, 0x0110,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0111,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0112,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0113,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0114,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0115,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0116,0x11);
spi_hmc7044.send_16b_8b(0x01, 0x0136,0xF3);
spi_hmc7044.send_16b_8b(0x01, 0x0137,0x08);
spi_hmc7044.send_16b_8b(0x01, 0x0138,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0139,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x013A,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x013B,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x013C,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x013D,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x013E,0x11);
spi_hmc7044.send_16b_8b(0x01, 0x00E6,0xF3);
spi_hmc7044.send_16b_8b(0x01, 0x00E7,0x40);
spi_hmc7044.send_16b_8b(0x01, 0x00E8,0x01);
spi_hmc7044.send_16b_8b(0x01, 0x00E9,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00EA,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00EB,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00EC,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00ED,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00EE,0x11);
spi_hmc7044.send_16b_8b(0x01, 0x00D2,0xF3);
spi_hmc7044.send_16b_8b(0x01, 0x00D3,0x40);
spi_hmc7044.send_16b_8b(0x01, 0x00D4,0x01);
spi_hmc7044.send_16b_8b(0x01, 0x00D5,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00D6,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00D7,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00D8,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00D9,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00DA,0x11);
delay_ms(500);
spi_hmc7044.send_16b_8b(0x01, 0x0001,0x62);
spi_hmc7044.send_16b_8b(0x01, 0x0001,0x60);
spi_hmc7044.send_16b_8b(0x01, 0x0000,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0002,0x00);
delay_ms(500);
spi_hmc7044.send_16b_8b(0x01, 0x0004,0x3F);
spi_hmc7044.send_16b_8b(0x01, 0x0005,0x4F);
spi_hmc7044.send_16b_8b(0x01, 0x0006,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0007,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0008,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0009,0x01);
spi_hmc7044.send_16b_8b(0x01, 0x000A,0x07);
spi_hmc7044.send_16b_8b(0x01, 0x000B,0x07);
spi_hmc7044.send_16b_8b(0x01, 0x000C,0x07);
spi_hmc7044.send_16b_8b(0x01, 0x000D,0x07);
spi_hmc7044.send_16b_8b(0x01, 0x000E,0x03);
spi_hmc7044.send_16b_8b(0x01, 0x0014,0xE4);
spi_hmc7044.send_16b_8b(0x01, 0x0016,0x0C);
spi_hmc7044.send_16b_8b(0x01, 0x0017,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0018,0x04);
spi_hmc7044.send_16b_8b(0x01, 0x001A,0x08);
spi_hmc7044.send_16b_8b(0x01, 0x001B,0x18);
spi_hmc7044.send_16b_8b(0x01, 0x001C,0x04);
spi_hmc7044.send_16b_8b(0x01, 0x001D,0x01);
spi_hmc7044.send_16b_8b(0x01, 0x001E,0x04);
spi_hmc7044.send_16b_8b(0x01, 0x001F,0x01);
spi_hmc7044.send_16b_8b(0x01, 0x0020,0x04);
spi_hmc7044.send_16b_8b(0x01, 0x0029,0x05);
spi_hmc7044.send_16b_8b(0x01, 0x0031,0x01);
spi_hmc7044.send_16b_8b(0x01, 0x0037,0x0F);
spi_hmc7044.send_16b_8b(0x01, 0x0038,0x18);
spi_hmc7044.send_16b_8b(0x01, 0x0039,0x01);
spi_hmc7044.send_16b_8b(0x01, 0x003A,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x003B,0x33);
spi_hmc7044.send_16b_8b(0x01, 0x003C,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x005A,0x01);
spi_hmc7044.send_16b_8b(0x01, 0x005B,0x06);
spi_hmc7044.send_16b_8b(0x01, 0x005C,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x005D,0x04);
spi_hmc7044.send_16b_8b(0x01, 0x005E,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0064,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0065,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0070,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0071,0x10);
spi_hmc7044.send_16b_8b(0x01, 0x0078,0x01);
spi_hmc7044.send_16b_8b(0x01, 0x0079,0x52);
spi_hmc7044.send_16b_8b(0x01, 0x007A,0x04);
spi_hmc7044.send_16b_8b(0x01, 0x007B,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x007C,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x007D,0x05);
spi_hmc7044.send_16b_8b(0x01, 0x007E,0x40);
spi_hmc7044.send_16b_8b(0x01, 0x007F,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0082,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0083,0x40);
spi_hmc7044.send_16b_8b(0x01, 0x0084,0x3F);
spi_hmc7044.send_16b_8b(0x01, 0x0085,0x03);
spi_hmc7044.send_16b_8b(0x01, 0x0086,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0087,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x008C,0x0A);
spi_hmc7044.send_16b_8b(0x01, 0x008D,0x01);
spi_hmc7044.send_16b_8b(0x01, 0x008E,0x40);
spi_hmc7044.send_16b_8b(0x01, 0x008F,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0090,0x02);
spi_hmc7044.send_16b_8b(0x01, 0x0091,0x02);
spi_hmc7044.send_16b_8b(0x01, 0x0096,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0097,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0098,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0099,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x009A,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x009B,0xAA);
spi_hmc7044.send_16b_8b(0x01, 0x009C,0xAA);
spi_hmc7044.send_16b_8b(0x01, 0x009D,0xAA);
spi_hmc7044.send_16b_8b(0x01, 0x009E,0xAA);
spi_hmc7044.send_16b_8b(0x01, 0x00A1,0x97);
spi_hmc7044.send_16b_8b(0x01, 0x00A2,0x03);
spi_hmc7044.send_16b_8b(0x01, 0x00A3,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00A4,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00A6,0x1C);
spi_hmc7044.send_16b_8b(0x01, 0x00A7,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00A9,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00AB,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00AC,0x20);
spi_hmc7044.send_16b_8b(0x01, 0x00AD,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00AE,0x08);
spi_hmc7044.send_16b_8b(0x01, 0x00AF,0x50);
spi_hmc7044.send_16b_8b(0x01, 0x00B1,0x0D);
spi_hmc7044.send_16b_8b(0x01, 0x00B2,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00B3,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00B4,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00B5,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00B6,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00B7,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00B8,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00C8,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00C9,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00CA,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00CB,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00CC,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00CD,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00CE,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00CF,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00D0,0x09);
spi_hmc7044.send_16b_8b(0x01, 0x00D1,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00DB,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00DC,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00DD,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00DE,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00DF,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00E0,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00E1,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00E2,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00E3,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00E4,0x09);
spi_hmc7044.send_16b_8b(0x01, 0x00E5,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00EF,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00F0,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00F1,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00F2,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00F3,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00F4,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00F5,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00F6,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00F7,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00F8,0x09);
spi_hmc7044.send_16b_8b(0x01, 0x00F9,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00FA,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00FB,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00FC,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00FD,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00FE,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x00FF,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0100,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0101,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0102,0x09);
spi_hmc7044.send_16b_8b(0x01, 0x0103,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0104,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0105,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0106,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0107,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0108,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0109,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x010A,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x010B,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x010C,0x09);
spi_hmc7044.send_16b_8b(0x01, 0x010D,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0117,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0118,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0119,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x011A,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x011B,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x011C,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x011D,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x011E,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x011F,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0120,0x09);
spi_hmc7044.send_16b_8b(0x01, 0x0121,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0122,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0123,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0124,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0125,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0126,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0127,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0128,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0129,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x012A,0x09);
spi_hmc7044.send_16b_8b(0x01, 0x012B,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x012C,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x012D,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x012E,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x012F,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0130,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0131,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0132,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0133,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0134,0x09);
spi_hmc7044.send_16b_8b(0x01, 0x0135,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x013F,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0140,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0141,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0142,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0143,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0144,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0145,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0146,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0147,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0148,0x09);
spi_hmc7044.send_16b_8b(0x01, 0x0149,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x014A,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x014B,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x014C,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x014D,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x014E,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x014F,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0150,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0151,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0152,0x09);
spi_hmc7044.send_16b_8b(0x01, 0x0153,0x00);
spi_hmc7044.send_16b_8b(0x01, 0x0054, 0x00);
}
void configure_ad9213(void){
u8 buffer;
spi_ad9213.send_16b_8b(0x01, 0x0000,0x24);
delay_ms(500);
spi_ad9213.send_16b_8b(0x01, 0x0026,0x08);
delay_us(500);
spi_ad9213.send_16b_8b(0x01, 0x0500,0x00);
spi_ad9213.send_16b_8b(0x01, 0x0693,0x01);
spi_ad9213.send_16b_8b(0x01, 0x150A,0x01);
spi_ad9213.send_16b_8b(0x01, 0x1617,0x01);
spi_ad9213.send_16b_8b(0x01, 0x151A,0x03);
spi_ad9213.send_16b_8b(0x01, 0x0503,0x95);
spi_ad9213.send_16b_8b(0x01, 0x0504,0x10);
spi_ad9213.send_16b_8b(0x01, 0x0520,0x8F);
spi_ad9213.send_16b_8b(0x01, 0x0521,0x00);
spi_ad9213.send_16b_8b(0x01, 0x0522,0x1F);
spi_ad9213.send_16b_8b(0x01, 0x0523,0x00);
spi_ad9213.send_16b_8b(0x01, 0x0524,0x0B);
spi_ad9213.send_16b_8b(0x01, 0x0525,0x2F);
spi_ad9213.send_16b_8b(0x01, 0x0606,0x20);
spi_ad9213.send_16b_8b(0x01, 0x0607,0x00);
spi_ad9213.send_16b_8b(0x01, 0x0630,0x00);
spi_ad9213.send_16b_8b(0x01, 0x0608,0x40);
// test
spi_ad9213.send_16b_8b(0x01, 0x053B,0xFF);
spi_ad9213.send_16b_8b(0x01, 0x053C,0xFF);
spi_ad9213.send_16b_8b(0x01, 0x05B0,0xFF);
spi_ad9213.send_16b_8b(0x01, 0x05B1,0xFF);
delay_ms(100);
spi_ad9213.send_16b_8b(0x01, 0x05EA,0xFF);
buffer = spi_ad9213.recv_16b_8b(0x01, 0x05EA);
print_info("AD9213_0x05EA : %h", buffer);
delay_ms(100);
spi_ad9213.send_16b_8b(0x01, 0x05B0,0x00);
spi_ad9213.send_16b_8b(0x01, 0x05B1,0x00);
spi_ad9213.send_16b_8b(0x01, 0x053B,0x00);
spi_ad9213.send_16b_8b(0x01, 0x053C,0x00);
//
spi_ad9213.send_16b_8b(0x01, 0x0503,0x94);
spi_ad9213.send_16b_8b(0x01, 0x0681,0x10);
spi_ad9213.send_16b_8b(0x01, 0x0570,0x00);
spi_ad9213.send_16b_8b(0x01, 0x0570,0x01);
do{
buffer = spi_ad9213.recv_16b_8b(0x01, 0x0501);
} while((buffer & 0x80) == 0);
delay_ms(500);
}
void configure_jesd204c_rx(void){
u32 buffer;
jesd204c_lsb.reset(NAMESPACE_JESD204C::RESET_TYPE::RESET_PLL_DATAPATH);
jesd204c_msb.reset(NAMESPACE_JESD204C::RESET_TYPE::RESET_PLL_DATAPATH);
u32 index = 0;
print_warning("JESD STATU CHECK %d", index);
buffer = jesd204c_lsb.get_status_ip();
print_info("JESD204C_LSB STATU : %h", buffer);
buffer = in32(jesd204c_lsb.REG_STAT_RX_DEBUG);
print_info("JESD204C_LSB RX DEBUG : %h", buffer);
buffer = jesd204c_msb.get_status_ip();
print_info("JESD204C_MSB STATU : %h", buffer);
buffer = in32(jesd204c_msb.REG_STAT_RX_DEBUG);
print_info("JESD204C_MSB RX DEBUG : %h", buffer);
// du hui ge tong dao zhuang tai.
//lsb
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_GT[0]);
print_info("JESD204C_LSB REG_LANE0_CTRL_RX_GT : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_GT[3]);
print_info("JESD204C_LSB REG_LANE3_CTRL_RX_GT : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG0[0]);
print_info("JESD204C_LSB LANE0_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG0[1]);
print_info("JESD204C_LSB LANE1_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG0[2]);
print_info("JESD204C_LSB LANE2_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG0[3]);
print_info("JESD204C_LSB LANE3_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG0[4]);
print_info("JESD204C_LSB LANE4_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG0[5]);
print_info("JESD204C_LSB LANE5_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG0[6]);
print_info("JESD204C_LSB LANE6_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG0[7]);
print_info("JESD204C_LSB LANE7_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG1[0]);
print_info("JESD204C_LSB LANE0_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG1[1]);
print_info("JESD204C_LSB LANE1_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG1[2]);
print_info("JESD204C_LSB LANE2_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG1[3]);
print_info("JESD204C_LSB LANE3_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG1[4]);
print_info("JESD204C_LSB LANE4_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG1[5]);
print_info("JESD204C_LSB LANE5_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG1[6]);
print_info("JESD204C_LSB LANE6_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG1[7]);
print_info("JESD204C_LSB LANE7_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG2[0]);
print_info("JESD204C_LSB LANE0_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG2[1]);
print_info("JESD204C_LSB LANE1_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG2[2]);
print_info("JESD204C_LSB LANE2_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG2[3]);
print_info("JESD204C_LSB LANE3_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG2[4]);
print_info("JESD204C_LSB LANE4_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG2[5]);
print_info("JESD204C_LSB LANE5_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG2[6]);
print_info("JESD204C_LSB LANE6_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG2[7]);
print_info("JESD204C_LSB LANE7_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG3[0]);
print_info("JESD204C_LSB LANE0_CTRL_RX_ILA_CFG3 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG3[1]);
print_info("JESD204C_LSB LANE1_CTRL_RX_ILA_CFG3 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG3[2]);
print_info("JESD204C_LSB LANE2_CTRL_RX_ILA_CFG3 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG3[3]);
print_info("JESD204C_LSB LANE3_CTRL_RX_ILA_CFG3 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG3[4]);
print_info("JESD204C_LSB LANE4_CTRL_RX_ILA_CFG3 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG3[5]);
print_info("JESD204C_LSB LANE5_CTRL_RX_ILA_CFG3 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG3[6]);
print_info("JESD204C_LSB LANE6_CTRL_RX_ILA_CFG3 : %h", buffer);
buffer = in32(jesd204c_lsb.REG_LANE_CTRL_RX_ILA_CFG3[7]);
print_info("JESD204C_LSB LANE7_CTRL_RX_ILA_CFG3 : %h", buffer);
// msb
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG0[0]);
print_info("JESD204C_MSB LANE0_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG0[1]);
print_info("JESD204C_MSB LANE1_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG0[2]);
print_info("JESD204C_MSB LANE2_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG0[3]);
print_info("JESD204C_MSB LANE3_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG0[4]);
print_info("JESD204C_MSB LANE4_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG0[5]);
print_info("JESD204C_MSB LANE5_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG0[6]);
print_info("JESD204C_MSB LANE6_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG0[7]);
print_info("JESD204C_MSB LANE7_CTRL_RX_ILA_CFG0 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG1[0]);
print_info("JESD204C_MSB LANE0_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG1[1]);
print_info("JESD204C_MSB LANE1_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG1[2]);
print_info("JESD204C_MSB LANE2_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG1[3]);
print_info("JESD204C_MSB LANE3_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG1[4]);
print_info("JESD204C_MSB LANE4_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG1[5]);
print_info("JESD204C_MSB LANE5_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG1[6]);
print_info("JESD204C_MSB LANE6_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG1[7]);
print_info("JESD204C_MSB LANE7_CTRL_RX_ILA_CFG1 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG2[0]);
print_info("JESD204C_MSB LANE0_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG2[1]);
print_info("JESD204C_MSB LANE1_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG2[2]);
print_info("JESD204C_MSB LANE2_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG2[3]);
print_info("JESD204C_MSB LANE3_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG2[4]);
print_info("JESD204C_MSB LANE4_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG2[5]);
print_info("JESD204C_MSB LANE5_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG2[6]);
print_info("JESD204C_MSB LANE6_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG2[7]);
print_info("JESD204C_MSB LANE7_CTRL_RX_ILA_CFG2 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG3[0]);
print_info("JESD204C_MSB LANE0_CTRL_RX_ILA_CFG3 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG3[1]);
print_info("JESD204C_MSB LANE1_CTRL_RX_ILA_CFG3 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG3[2]);
print_info("JESD204C_MSB LANE2_CTRL_RX_ILA_CFG3 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG3[3]);
print_info("JESD204C_MSB LANE3_CTRL_RX_ILA_CFG3 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG3[4]);
print_info("JESD204C_MSB LANE4_CTRL_RX_ILA_CFG3 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG3[5]);
print_info("JESD204C_MSB LANE5_CTRL_RX_ILA_CFG3 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG3[6]);
print_info("JESD204C_MSB LANE6_CTRL_RX_ILA_CFG3 : %h", buffer);
buffer = in32(jesd204c_msb.REG_LANE_CTRL_RX_ILA_CFG3[7]);
print_info("JESD204C_MSB LANE7_CTRL_RX_ILA_CFG3 : %h", buffer);
}