Hi all,
I am currently using the AD9273 chip with my FPGA (Digilent CMOD A7, Xilinx Artix 7). I want to do something really simple, i.e. only read a register using SPI. I do not intend to write, just read data from the internal register. I want to read the CHIP_ID register at 0x01, and I should expect 2F hex. However, I get a really weird looking waveform as seen below. Note that I am first sending 16 bits from FPGA to ADC, these 16 bits are 1000 0000 0000 0001, and it basically means that I want to read 1 byte of data from the address 0x01. So after the last bit 1 is sent, I should expect back 2F'hex but I don't. I see a RC discharge waveform which is indicative of high-impedance node somewhere. Note that for AD9273, there is SDIO pin, which is bidirectional. This means that back at the FPGA, the SDIO pin must be declared as inout, which means that for the 16 bits 1000 0000 0000 0001, the direction is output, but when the FPGA want to read back 2F'hex, then this pin must go to high-impedance!
My suspicion is that there is a moment in time where both the FPGA SDIO and ADC SDIO pins are high-impedance. As per the ADC datasheet, input data to ADC is registered on rising edge of SCLK, and output data is registered on falling edge. After the last instruction bit is registered, the ADC will understand that it is time to output data to the FPGA. However, there is a time delay before the ADC SDIO pin switches direction from receiving data from FPGA to transmitting data to FPGA. My hunch is that before the ADC switches direction to output to FPGA, its impedance is very high. Therefore, together with the high-impedance node at the FPGA, we are seeing a very large RC time constant, which explains why we see this waveform.
Does anyone know if my reasoning is correct? If so, how can I fix the issue?
Help is very much appreciated, this thing has been driving me mad! Thanks!!!!!

