cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Participant
Participant
1,352 Views
Registered: ‎12-20-2016

Split IQ data between two CPRI

Hello community,

 

In my project I want to use CPRI interface in loopback mode on Ultrascale+ ZCU102 board, featured with four SFP+ and GTH transceivers in fpga device.

 

I need to transmit IQ samples at 15.7 Gbit/s over CPRI link in loopback mode, which forces me to use two GTH transceivers. In documentation for CPRI v8.7 I found information on how to share clocking and tx-alignment resources between up to 4 CPRI cores, operating at the same rate. In Vivado simulation I see that in this case each CPRI starts IQ transmission simultaneously (i.e. iq_tx_enable signal)

 

Is there any standard means to synchronize data at the RX side as well? On reception I need to reassemble data, which have been divided between two CPRI blocks. I use rx_chk module from example design for each CPRI and I monitor number of received  frames. Numbers are different all the time.

My setup is similar to one depicted in pb047-cpri-gateway.pdf (I have 2 cpri links in loopback):

CPRI-loopback.png

 

How can I align received data back? I'm thinking about some buffering solution... Or shall I measure difference in cable latency, and try to compensate it with some delay primitives? BTW, cables and SFP+ transceivers are identical.

I'm new to CPRI, any advise is highly appreciated.

 

br,

Pavel

Tags (4)
3 Replies
Highlighted
Xilinx Employee
Xilinx Employee
1,262 Views
Registered: ‎08-02-2007

at RX side, basic_frame_first_word is used to align the I/Q data, also you can use one RX recovery clock to drive RX refclk of 4 lanes, so all the channels are running at the same data rate.

 


Answers your question? Accept as Solution!

Answers helpful?            Give Kudos


 

0 Kudos
Highlighted
Participant
Participant
1,118 Views
Registered: ‎12-20-2016

Thanks for your answer.

 

As you adviced, on RX side we use recclk from the "master" lane to generate refclk for all CPRIs. Also we use basic_frame_first_word signals from each of CPRIs to know BF boundaries, we pass the received data to FIFOs and we read from these FIFOs (which have to be properly sized) once all of them are not empty.

 

Thanks for help.

 

Pavel

0 Kudos
Highlighted
Visitor
Visitor
143 Views
Registered: ‎08-21-2020

hello, I am working with CPRI now, I want to know how to share clocking and tx-alignment resources between up to 4 CPRI cores, could you help me with the problem, thanks

0 Kudos