First let me say I have had no issues with using the FMCOMMS2 and ZC706 reference design when the AD9361 device is interfaced using LVDS. Unfortunately due to board layout constraints I am unable to use the device in this mode. Consequently I need to get the device to operate in CMOS mode. The configuration I am trying to implement is 1R1T, FDD, DDR, Dual Port as described on page 103 of the UG570 manual, sampling both TX and RX at 30.72MHz.
The devices parallel port control registers are programmed as shown below. The FPGA receives the 30.72MHz DATA_CLK and thats about it. I see no TX output.
The only difference as far as I can tell between this version and the LVDS version is the interface type and that the ADI reference design uses 2TX2RX configuration. I have modified the ADI driver code to support these changes. What is not clear is the port the TX is assigned to. On UG-570 it is set to P1_D
"Transmit data is driven on P1_D[11:0] by the BBP such that the setup and hold times between FB_CLK" but the timing waveform shows it on P0_D. I tried to change D6 of register 0x12 to swap the ports but no joy. Please clarify if the TX data does go to P1_D in this mode.
I get the impression that the device is not enabled ( I see the RXFrame as "00" when it should be "10", the DDR data is all zeros and there is no output RF power) and perhaps my ENABLE and TXNRX signals might be incorrect. . These are ignored in LVDS mode. I assume that because the device is dual port duplex mode these signals need to be set high, so ENABLE high for reverse, TXNRX for TX? I have also tried pulsing ENABLE and TXNRX at the start but no joy, ie
Unfortunately page 103 of UG570 does not mention how TXNRX is used in this mode. It says the following about ENABLE.
"A pulse on the ENABLE pin (or a rising edge) triggers the beginning of data transfer, and another pulse (or falling edge) signifies the end of data transfer." This is a little ambiguous. Does this mean I need to toggle the ENABLE at the RX_FRAME rate? Surely in FDD mode the transfer is continuous like LVDS mode? Please explain and update the timing diagrams UG-570 to show the ENABLE and TXNRXN signals. Also please note that the FMCOMMS2 no-os driver code as per the copy I am using only supports correct operation when operating in LVDS and in 2TX2RX mode.
0x010 Parallel Configuration 1 = 0xC8 = 1100100
PP Tx Swap IQ = 1 = No spectral inversion.
PP Rx Swap IQ = 1 = No spectral inversion.
Tx Channel Swap = 0 = Setting this bit swaps the positions of Tx1 and Tx2 samples.
Rx Channel Swap = 0 = Ditto
RX Frame Pulse Mode = 1 = The AD9361 outputs an Rx frame sync signal indicating the beginning of an Rx frame. When this bit is clear, Rx frame goes high coincident with the first valid receive sample. It stays high as long as the receivers are enabled. When this bit is set, the Rx frame signal toggles with a duty cycle of 50%.
D4—Invert Tx1 = 0 =
D3—Invert Tx2 = 0 = Setting this bit digitally multiplies the Tx2 signal by −1.