AnsweredAssumed Answered

Enabling FIR causes wrong chain recalculation

Question asked by gshadow on Aug 21, 2015
Latest reply on Sep 1, 2015 by gshadow

Hello.

I have a problem with chain configuration when I try to enable FIR.

Hardware: FMCOMMS3 + Xilinx ZC706 Evaluation Board with Microblaze no-OS.

I had configured chain in default_init_param structure like this:

 

{1280000000u, 320000000u, 160000000u, 80000000u, 40000000u, 20000000u},//uint32_t  rx_path_clock_frequencies[6] *** adi,rx-path-clock-frequencies

{1280000000u, 160000000u, 160000000u, 80000000u, 40000000u, 20000000u},//uint32_t  tx_path_clock_frequencies[6] *** adi,tx-path-clock-frequencies

 

Then I added FIR enable after it`s configuration inside AD9361_Init():

 

ad9361_set_tx_fir_config(ad9361_phy, tx_fir_config);

ad9361_set_rx_fir_config(ad9361_phy, rx_fir_config);

ad9361_set_tx_fir_en_dis  (ad9361_phy, 1u);

ad9361_set_rx_fir_en_dis  (ad9361_phy, 1u);

 

After that I could see wrong frequencies on my board and this lines in console debug output:

 

ad9361_validate_enable_fir: TX FIR EN=0/TAPS128/INT2, RX FIR EN=1/TAPS128/DEC2

ad9361_calculate_rf_clock_chain: requested rate 40000000 TXFIR int 1 RXFIR dec 2 mode Nominal

ad9361_set_trx_clock_chain

ad9361_set_trx_clock_chain: 1280000000 640000000 320000000 160000000 80000000 40000000

ad9361_set_trx_clock_chain: 1280000000 320000000 160000000 80000000 40000000 40000000

[...]

ad9361_validate_enable_fir: TX FIR EN=1/TAPS128/INT2, RX FIR EN=1/TAPS128/DEC2

ad9361_calculate_rf_clock_chain: requested rate 40000000 TXFIR int 2 RXFIR dec 2 mode Nominal

ad9361_set_trx_clock_chain

ad9361_set_trx_clock_chain: 1280000000 640000000 320000000 160000000 80000000 40000000

ad9361_set_trx_clock_chain: 1280000000 320000000 160000000 80000000 80000000 40000000

 

This output is taken after TX FIR enable. Same problem with RX FIR exists.

As you could see, it selected 40 MHz as a sampling rate instead of required 20 MHz, and all other frequencies twice of expected.

 

Registers after initialization:

TX_ENABLE     (0x002) = 0x000000DA

RX_ENABLE     (0x003) = 0x000000DE

BBPLL               (0x00A) = 0x00000009

 

What the reason of such chain recalculation and how to solve it? Thanks in advance.

Outcomes