Throughput issue in AN65974-Designing with the EZ-USB FX3 Slave FIFO Interface

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

Hi,

   

(A)
I am trying to setup the Stream-in-case of AN65974(the EZ-USB FX3 Slave FIFO Interface)
by using "EZ-USB FX3 SuperSpeed Explorer Kit".
The softwares (SDK 1.33 and Explorer Kit) are installed successfully.

   

(B)
Here are configurations:
Loaded Firmware: AN65974-SF_streamIN.img
PC Application: SDK1.3/application/c_sharp/streamer/bin/Release/Streamer.exe

   

EZ-USB FX3 Pin:
CTL0(GPIO[17] or SLCS#) = GND
CTL1(GPIO[18] or SLWR#) = GND
CTL2(GPIO[19] or SLOE#) = 3.3V
CTL3(GPIO[20] or SLRD#) = 3.3V
CTL4(GPIO[21] or FLAGA) = Floating
CTL5(GPIO[22] or FLAGB) = Floating
CTL6(GPIO[23] or FLAGC) = Floating
CTL7(GPIO[24] or PKTEND#) = 3.3V
CTL8(GPIO[25] or FLAGD) = Floating
CTL11(GPIO[28] or A1) = GND
CTL12(GPIO[29] or A0) = GND
PCLK(GPIO[16]) = accurate 8.192 MHZ clock(50% duty cycle)
DQ[0:31] = GND or 3.3V

   

I cannot find the mapping for CTLX and GPIO[XX] in the docs temporarily,
so the above mapping is according to the PCLK = GPIO[16] and PCB labeling.
And then the PC application Streamer.exe can start and run the stream-in mode.
If the above mapping is wrong, please inform me.

   

(C)
My question is:
The physical PC stream-in-Throughput(32500 KB/s shown in Streamer.exe) is wrong(not enough)!
The Throughput should be 32768 KBytes/Sec(8.192 MHZ * 32bits = 32768 KBytes/Sec)

   

I tried to increase the "Packets per Xfer" and "Xfers to Queues", but the results are the same
after running Streamer.exe for a long time.

   

I did not change the source code or firmware, but just setup AN65974-streamIN mode according to the above pin mapping.
Do you have any idea? Your any help will be much appreciated!!

   

BR,
cykuo

0 Likes
5 Replies
Anonymous
Not applicable

Hi,

   

The Pin Mapping is correct and you can find the same in Table  2 of An65974 App Note.

   

Yes, it is true that the streamer Application only gives an approximate throughput.

   

Regards,

   

- Madhu Sudhan

0 Likes
Anonymous
Not applicable

Hi, Madhu,

   

Thank you very much for your quick response!!

   

For displaying more accurate Stream-in-Throughput,
I changed the source code of FX3 Streamer.exe as following:

   

=====Before==============================================================
xferRate = (long)(XferBytes / elapsed.TotalMilliseconds);
xferRate = xferRate / (int)100 * (int)100;

   

=====After: just comment out the second line==================================
xferRate = (long)(XferBytes / elapsed.TotalMilliseconds);
//xferRate = xferRate / (int)100 * (int)100;

   


Then, Stream-in-Throughput = 32584 KBytes/Sec after running a long time.
This means Throughput Difference ~= 32768(Target) - 32584(Physical) = 184KBytes/Sec

   

So, I am afraid that some data is not received at the PC Application(FX3 Streamer.exe)!!
By the way,  what is the maximum Stream-in-Throughput if address pins are always A1=A0=GND?

   

Remark:
I have developed some applications on the EZUSB-FX2LP development boards for the past years. The Stream-in-Throughput(Streamer.exe in EZUSB-FX2LP) is very accurate and it is an important and convenient indicator for debugging problems.

   

Remark:
The AN65974-table 2 does not contain the PCB labeling information (CTL0, CTL1, ...CTL12) of the FX3 SuperSpeed Explorer Kit. It will be convenient for a FX3 beginner if table 2 contains it in the future.

   

Your any help will be much appreciated!!

   

BR,
cykuo

0 Likes
Anonymous
Not applicable

Hi, Madhu,

   

I do the following experiment, and find the captured data has an error pattern.

   

Let PCLK = accurate 8.192MHz 50% duty and DQ[1:0] = 00 01 10 11 00 01 10 11 ... (binary data)
Then the wanted received data(DQ[1:0] sequence) at the PC application(Streamer.exe) will be
00 01 02 03 00 01 02 03 00 01 02 03 00 01 02 03 ... (hex data)

   

But the physical received DQ[1:0] sequence is as following pattern:
position    values
00000000h   03 00 01 02 03 00 01 02 03 00 01 02 03 00 01 02
00000010h   03 00 01 02 03 00 01 02 03 00 01 02 03 00 01 02
...
00000ff0h   03 00 01 02 03 00 01 02 03 00 01 02 03 00 01 02
00001000h   02 03 00 01 02 03 00 01 02 03 00 01 02 03 00 01
00001010h   02 03 00 01 02 03 00 01 02 03 00 01 02 03 00 01
...
00001ff0h   02 03 00 01 02 03 00 01 02 03 00 01 02 03 00 01
00002000h   01 02 03 00 01 02 03 00 01 02 03 00 01 02 03 00
00002010h   01 02 03 00 01 02 03 00 01 02 03 00 01 02 03 00

...

   

The errors happen at the 1000h(4096), 2000h(8192), 3000h(12288), ...
and the stream-in-throughput is less than the wanted speed.
So I am afraid that some data is lost during the transmission.

   

Remark:
Sorry that I have only a two-bit counter at hand to check this problem.

   

You can check the attachment(a captured DQ[1:0] data sequence in hex) for more details.

   

Thank you in advance!!

   

BR,
cykuo

0 Likes
Anonymous
Not applicable

Hi,

   

We will follow you up in the Tech Suppor Case you created.

   

Regards,

   

-Madhu Sudhan

0 Likes
Anonymous
Not applicable

Hello,

   

I think I have almost the same problem with the data loss and I wanted to ask you if there is any simple explanation for this ( I have already opened a Case since last Friday and I'm still waiting for an answer )

   

Thank you in advance

0 Likes