Hello. I'm using Cypress EZ-USB FX3. The following is my problem.
An FPGA is sending data ranging from 1 to 255 to FX3. The GpifToUsb firmware (located in Cypress\EZ-USB FX3 SDK\1.3\firmware\basic_examples\cyfxgpiftousb) is adjusted, where the data bus is 8 bits and the clock is 12MHz. I add a line in the Streamer C# program to write the data sent from FX3 to PC into a txt file so that I can check whether the data received is right.
The data is right in the most time, but sometimes I can find data missing. For example, this byte is 120, the next byte is 147, not 121.
I store the positions where the data misses and find the periodity. If X stands for the CY_FX_DMA_BUF_SIZE in the GpifToUsb project, then the two continuous positions' difference is X. For example, if CY_FX_DMA_BUF_SIZE is 8192, the positions can be 1, 8193, 16385... The number of data missing at each position varies, usually 26 or 27.
So how can I solve the data missing problem? Thank you!
I wonder how your verilog writes, In cyfxgpiftousb example DMA_RDY_TH0 signal does not work as a signal to notifiy your FPGA to write data, so I think the data lost may cause by PIB thread 0 not ready for read your FPGA still write data to PIB_SOCKET_0.