I will try to give more details instead of my "reduced simplified version" and hopefully answer some of your questions.
I am talking about a DPD functionality where software reads from sdram
2,457,600 samples of each of TxI,TxQ,sRxI,sRxQ.
all these four slots are 16 bits signed and interleaved in above order giving a total stream size of 2,457,600 x 4 samples.
inside FPGA: TxI and TxQ are first concatenated as(16 x 2 bits), then passed through a small dc fifo for clock crossing.
sRxI and sRxQ are data received from Tx after going through DAC & PA then sampled back by an ADC for DPD algorithm. sRxI and sRxQ are also concatenated as 16 x 2 bits. They also go through their dc fifo for clock crossing.
Then all four data are concatenated as 16 x 4 = 64 bits.
The stream is then passed as 128 bits using sc fifo for sdram controller IF (Altera sdram controller). At the i/o data is passed as two streams each 16 bits and each has its own sdram. Thus we have two sdrams (one for Tx data and one for sRx data)
Almost all field units work without any problem. Occasionally, it is reported that DPD algorithm fails and when I looked at captured files I noticed that sRx data was ok but TxI and TxQ each shows same problem I described where their odd samples had shifted location relative to even ones. So instead of the normal order of 0,1,2,3,4,...etc. I noticed it was
0,9,2,11,4,13,6,15,8,... from beginning to the end of 2,456,7600
Apart from that there is no other error and all values are correct judging by spectrum and time domain.
What happens at the moment of the glitch we don't know, I haven't tested any failed units in the lab though I requested that. We have inserted some extra logic to capture data directly from fifos in case of the event but we failed to reproduce the error. Units are in different countries and it is hard to keep track of debugging.
My first conclusion is that there must be memory involved and it must be a case of read/write toggling. The basic fpga concatenation logic does not involve storage and so is ruled out. FPGA fifos are block ram based and we have hundreds of them all across the design for various parts without issues.
sdram controller and i/o timing have been done by Altera experts.
Design is timing clean, lab tested across full range of temperature.
Kaz
--------------------------------------- Posted through
formatting link