Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Introduction

XferSize is the dimension (in bytes) of the buffer reserved (on the host computer) for the data transfer over the USB channel between one USB FX2 endpoint and the host computer.

PacketSize is the dimension (in bytes) of the data array to be transferred over the USB channel between one USB FX2 endpoint and the host computer. This data array is subdivided into packets of dimension ≤ MaxPktSize = 512 and scheduled for transmission over the USB channel.

XferSize (driver buffer size)

...

Influence

Given a PacketSize of 102,400 bytes (it can be subdivided into 200 USB packets of 512 bytes), the influence of XferSize (driver buffer size reserved for data communication) on the throughput is reported in the following table.

...

...

Throughput (Mbyte/s)

...

4,096 (Cypress Default)

...

15.6

...

8,192

...

20.4

...

16,384

...

26.3

...

32,768

...

30.2

...

65,536

...

34.1

...

131,072

...

36.2

...

262,144

...

36.7

Table 37: data throughput as a function of XferSize given PacketSize = 102,400 bytes.
To change XferSize in C++, the method

Code Block
languagecpp
BulkEndPoint->SetXferSize(DesiredValue);

shall be used. Cypress sets DesiredValue to 4,096 bytes by default. This default value is not documented in the CyAPI.lib manual (pag 62 of CyAPI.pdf), but it has been retrieved by using the following C++ instructions:

Code Block
languagecpp
int XferSizeReadValue = BulkEndPoint->GetXferSize();

...


cout<< "XferSizeReadValue" << XferSizeReadValue

...

 <<endl;
Scroll Title
titledata throughput as a function of XferSize given PacketSize = 102,400 bytes

XferSize
(bytes)

Throughput
(Mbyte/s)

Data throughput [Mbyte/s] as a function of XferSize [byte]
given PacketSize = 102,400 bytes.

PacketSize = 102,400
(bytes)

Image Added

4,096 (1)

15.6

8,192

20.4

16,384

26.3

32,768

30.2

65,536

34.1

131,072

36.2

262,144

36.7


(1) Cypress XferSize Default = 4096

PacketSize (transfer data size) Influence

 

...

Given an XferSize (driver buffer size) of 131,072 bytes, the influence of PacketSize on the throughput is reported in the following table.

Scroll Title
titledata throughput as a function of PacketSize given XferSize = 102,400 bytes.

Packet Size
(bytes)

Throughput
(Mbyte/s)

Data throughput [Mbyte/s] as a function of PacketSize [byte]
given XferSize = 102,400 bytes
XferSize = 131,072
(Bytes)
Image Added

512

2.32

1,024

4.25

2,048

7.65

4,096

15.22

8,192

20.35

16,384

25.45

32,768

31.05

65,536

35.34

131,072

37.01

...

Conclusion

If a higher throughput is desired,

  1. the value of XferSize shall be greater than the default one
  2. the data to be transferred shall be organized in large data array(s)

Recommended values are :

  • XferSize = 65,536 (or 102400) bytes and PacketSize = 65,536 (or 102400) bytes

for a throughput of ≈ 35 Mbyte/sTable 38: data throughput as a function of PacketSize given XferSize = 102,400 bytes.
To transfer the array of data with dimension PacketSize in C++, the method XferData() shall be used.