| SLA Status | Assignee | Support Status |
|---|---|---|
| SLA Closed. Met after 0 hours |
SJagini andrei_g srimoyi MStokowski |
Awaiting Customer Response |
AD9361
Recommended for New Designs
The AD9361 is a high performance, highly integrated radio
frequency (RF) Agile Transceiverâ„¢ designed for use in 3G and
4G base station applications....
Datasheet
AD9361 on Analog.com
Hello,
I'm having issues getting anything visible on the RX data lines coming into the Artix U+ FPGA that interfaces to the FMCOMMS2 AD9361 over FMC. I've got a softcore CPU running the no-os firmware, and SPI to the AD9361 works great, RX DATA_CLK is present and correct (l_clk is legit 61.44MHz).
The dig_tune() is completely broken on ever pair.
Here's what works:
chip_id (0x037)=0x0A, all register R/W clean.bbpll_lock=1, rx_vco_lock=1, tx_vco_lock=1.ad9361_init() completes ("AD936x Rev 2 successfully initialized"); all calibrations pass (RX/TX BB filter, TIA, ADC, BB-DC, RF-DC, Tx quad).REG_STATE lower nibble = 0xA), RX1_EN=1.rx1_rssi shows real energy (symbol ≈ 10900, preamble ≈ 11150), rx1_rf_gain = 71 dB.l_clk measures 61.44 MHz (the correct 1R1T LVDS DDR rate) via the core's clock monitor; adc_valid pulses continuously.0x010=0xC0, 0x011=0x00, 0x012=0x10.Here's what I tried already:
rx_clk/rx_frame/rx_data[5:0] LVDS assignments checked against both the carrier and FMCOMMS2 schematics; all are LVDS DIFF_TERM_ADV TERM_100.rstn=0x3 (released); IDDR capture primitives have reset tied off.ENABLE_ENSM_PIN_CTRL + level mode + ENABLE asserted). Both reach FDD-active (0xA); both give 0.dig_tune incl. the FPGA IDELAY sweep across taps 0–31 on all lanes; no passing window anywhere. Also tried ADC_INIT_DELAY=11 (per zcu102). No change.l_clk=61.44 MHz is the expected 1R1T rate, RX1_EN=1, core runs R1 (runtime adc_r1_mode). A framing mismatch would yield scrambled non-zero data, not static zero.Here's a summary of the hdl and no-os Git repos I'm using:
ADI analogdevicesinc/hdl main @ 32e1f9c8 ("library/axi_ad485x: Fix simulation issue")
ADI analogdevicesinc/no-OS main @ 313b6a68 ("drivers: axi_core: axi_dmac: …")
So the ultimate questions:
Please help
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
This is my log I have when my board starts up:
[ad9361_no-os] NEORV32 + AD9361 driver starting...
[ad9361_no-os] Calling ad9361_init()...
ad9361_reset: by GPIO
... [BBPLL + clock chain + all calibrations completed OK] ...
ad9361_set_trx_clock_chain: 983040000 245760000 122880000 61440000 30720000 30720000
ad9361_rx_adc_setup : BBBW 8606895 : ADCfreq 245760000
ad9361_run_calibration: CAL Mask 0x80 # RX BB filter -> OK
ad9361_run_calibration: CAL Mask 0x40 # TX BB filter -> OK
ad9361_run_calibration: CAL Mask 0x1 # BB DC offset -> OK
ad9361_run_calibration: CAL Mask 0x2 # RF DC offset -> OK
ad9361_run_calibration: CAL Mask 0x10 # TX quad -> OK
LO leakage: 1 Quadrature Calibration: 1 : rx_phase 26
ad9361_set_tx_atten : attenuation 0 mdB tx1=1 tx2=0
rx_adc: Successfully initialized (40960693 Hz)
ad9361_init : AD936x Rev 2 successfully initialized
[ad9361_no-os] ENSM -> FDD
--- RX capture probe (every stimulus reads exactly 0x0000) ---
PHASE 1 real RX (BIST off): ADC_STATUS=0x05 link_ok=1; adc_valid 200/200 (100%); ch0_I/Q min=0 max=0
PHASE 2 BIST PRBS_INJ_RX (0x3F4=0x09): link_ok=1; adc_valid 200/200 (100%); ch0_I/Q min=0 max=0
PHASE 3 BIST + CHAN_CNTRL_3 pn_sel=9: ch0_I/Q min=0 max=0
Chip TX-BB->RX-BB loopback (ad9361_bist_loopback(1), DAC PN9): ch0_I/Q min=0 max=0
--- ad9361_dig_tune(BE_MOREVERBOSE|DO_IDELAY), skipmode=1 (RX) ---
SAMPL CLK: 30720000 tuning: RX
0:1:2:3:4:5:6:7:8:9:a:b:c:d:e:f:
0:# # # # # # # # # # # # # # # #
1:# # # # # # # # # # # # # # # #
ad9361_dig_tune_delay: Tuning RX FAILED!
RX Lane 0, window cnt 0, start 0, IODELAY set to 0 # rx_data[0]
RX Lane 1, window cnt 0, start 0, IODELAY set to 0 # rx_data[1]
RX Lane 2, window cnt 0, start 0, IODELAY set to 0 # rx_data[2]
RX Lane 3, window cnt 0, start 0, IODELAY set to 0 # rx_data[3]
RX Lane 4, window cnt 0, start 0, IODELAY set to 0 # rx_data[4]
RX Lane 5, window cnt 0, start 0, IODELAY set to 0 # rx_data[5]
RX Lane 6, window cnt 0, start 0, IODELAY set to 0 # rx_frame
--- RX-path diagnostic dump ---
[adc_status]
l_clk_hz=61441040 (expect 61440000 for 1R1T LVDS DDR)
idelay refclk_hz=300000000 fine_tap=104ps sw_step=1664ps ui=8137ps sw_taps_per_ui=4.89
rstn=0x3 status=0x5 link_ok=1 pn_oos=1 pn_err=0
ch0_I ctrl=0x051 status=0x02 data=0x0000 pn_oos=1 pn_err=0 hdr=0
ch0_Q ctrl=0x051 status=0x02 data=0x0000 pn_oos=1 pn_err=0 hdr=0
[chip_status]
parallel_port_conf 0x010=0xC0 0x011=0x00 0x012=0x10 (LVDS, DDR, 1R1T, level frame, IQ swap)
state (0x017)=0x1A -> ENSM=FDD (0xA)
RX1_EN=1 RX2_EN=0 TX1_EN=1 TX2_EN=0
chip_id (0x037)=0x0A bbpll (0x05E)=0x81 lock=1
rx_cp_vco (0x247)=0x02 rx_vco_lock=1 tx_cp_vco (0x287)=0x02 tx_vco_lock=1
rx1_rf_gain=71 dB rx1_rssi: symbol=10925 preamble=11150
rx_sampling_freq=30720000 Hz tx_sampling_freq=30720000 Hz
CodeWarrior - Moved from FPGA Reference Designs to Support AD9361/AD9363/AD9364. Post date updated from Sunday, May 31, 2026 5:55 AM UTC to Sunday, May 31, 2026 5:55 AM UTC to reflect the move.
SJagini - Moved from Support AD9361/AD9363/AD9364 to FPGA Reference Designs. Post date updated from Sunday, May 31, 2026 5:55 AM UTC to Tuesday, June 2, 2026 1:33 PM UTC to reflect the move.
Hello!
Do you have any updates?
Regards,Elena
Hello!
Do you have any updates?
Regards,Elena