Lossless data storing

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

cross mob
siz
Level 1
Level 1
5 replies posted Welcome! First question asked

Hello,

I write here because I am new to Cypress devices and I would like to clarify a few doubts.

For a project I am working on I need to transfer (without loss of information) data at 48 MB/s (32 bits - 12 MSPS from an ADC) to an external USB mass storage device.

For these kind of data writing rates, I must use at least a 3.0 standard and as far as I know, I could use the

https://www.cypress.com/documentation/development-kitsboards/cyusb3kit-003-ez-usb-fx3-superspeed-exp...

and the only interface port that I can use with an FPGA (a Xilinx Zynq device in this case) is the GPIF 2.


Could you confirm that this is the right kit I need to achieve this kind of lossless transfer ?

Regards.

s.

0 Likes
1 Solution
Rashi_Vatsa
Moderator
Moderator
Moderator
5 likes given 500 solutions authored 1000 replies posted

Hello Simon,

Please confirm that you are aware that FX3S is also a peripheral controller and cannot be configured as USB 3.0 Host controller.

Also confirm that you have gone through the FX3S datasheet and the functionalities and you are fine with it.

- Yes you can get data through GPIF lines and store the data to storage ports

- The maximum GPIF  bus width supported by FX3S is 16 bits

- FX3S Supports up to 2 memory cards - SD 3.0, eMMC 4.41, SDIO 3.0

- The SDK 1.3.4 includes msc_examples. You can install the SDK from https://www.cypress.com/documentation/software-and-drivers/ez-usb-fx3-software-development-kit

You need to combine the slavefifo example (AN65974) and the storage class example for your application.

Path for the examples: C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\msc_examples

You can also refer to RAID applications. Please refer to the atached zip files in these links

https://www.cypress.com/documentation/code-examples/ez-usb-fx3s-sdmmc-backed-raid-0-example

https://www.cypress.com/documentation/application-notes/an89661-usb-raid-1-disk-design-using-ez-usbr... 

- S0 and S1 ports can be configured for 8 bits data bus maximum

- Both the ports S0 and S1 can be enabled from the firmware itself (io_matrix).  The reading/writing to ports can be selected in the APIs by passing argument like PORT_ID

Regards,

Rashi

Regards,
Rashi

View solution in original post

0 Likes
9 Replies
Rashi_Vatsa
Moderator
Moderator
Moderator
5 likes given 500 solutions authored 1000 replies posted

Hello,

Yes, EzUSB FX3 would be right for this application.

The maximum frequency supported for the GPIF II interface clock is 100 MHz. And maximum bus width supported is 32 bits. So, the maximum bandwidth supported by GPIF II interface is (32 bits*100 MHz) = 3.2Gbps / 400 MBps which would be enough for your application.

You can refer to this application note Designing with the EZ-USB FX3 Slave FIFO Interface https://www.cypress.com/file/136056/download

You can refer to section 11.1 Hardware setup (in app note). If you are having similar setup, you can use the Super speed explorer kit

(CYUSB3KIT-003). You can also develop a custom board using EzUSB FX3 (CYUSB301x) if FX3 explorer kit doesn't match up to your application.

Please let me know if any other queries.

Regard,

Rashi

Regards,
Rashi

Hi Rashi,

We have already purchased a CYUSB3KIT for our project.

I was quiet sure this is the right kit to interface in my design, but it always fine to have someone more experirenced that assures about any doubt.

Thank you very for yor reply.

s.

0 Likes
siz
Level 1
Level 1
5 replies posted Welcome! First question asked

Hello RashiV_61​,

I have another question. The AN65974 you indicated to me specifies an USB Host as a destination, and I need to write into an USB device such as a pen drive .

Isn't it possible to store data into an USB storage device with CYUSB3KIT-003 Starter Kit ? I am strongly doubting about it because I could not power up the kit if I just plug a pen drive to it, unless I supply the board with an external power supply from pin headers with appropriate voltage levels...

If not, could you suggest a solution ?

Thanks.

Regards,

s.

0 Likes
Rashi_Vatsa
Moderator
Moderator
Moderator
5 likes given 500 solutions authored 1000 replies posted

Hello,

Apologies for missing out an important point.

CyUSB3KIT-003 Superspeed Explorer Kit cannot be used for storing data to USB storage device (pen drive).

For storing data to USB storage device, FX3 should be configured as host controller.

FX3 (CYUSB3014) can be used as high speed (USB 2.0) host controller https://www.cypress.com/documentation/application-notes/an77960-introduction-ez-usb-fx3-high-speed-u...

But as per your application, FX3 high speed controller won't be able to match up the throughput requirements.

Please confirm that you need FX3 in USB host mode or device mode.

Regards,

Rashi

Regards,
Rashi
0 Likes

Hello RashiV_61​,

Please confirm that you need FX3 in USB host mode or device mode.

Since this is the flow I need: FPGA → USB HOST → USB Device I deduce that FX3 should work as in USB host mode.

Is there any solution to my problem for the mentioned throughput requirements ?

Regards,

Simon

0 Likes
Rashi_Vatsa
Moderator
Moderator
Moderator
5 likes given 500 solutions authored 1000 replies posted

Hello Simon,

FX3 can be configured to be in USB2.0 (High speed) host controller as well as High-speed On-The-Go (HS-OTG) host and peripheral compliant with OTG Supplement Version 2.0. This will not  fulfill bandwidth requirements.

FX3 cannot be configured as USB 3.0 host controller.

FX3 family also includes FX3S which is also a peripheral controller. FX3S's integrated storage host controllers enable developers to add support for SD/eMMC memories and SDIO devices to their system.

You can refer to these links for its details:

- https://www.cypress.com/file/139246/download

- https://www.cypress.com/products/ez-usb-fx3s

but FX3S can have max GPIF bus width of 16 bits.

Please do through these links and let me know if this would help.

Regards,

Rashi

Regards,
Rashi
0 Likes

Hello RashiV_61​,

Good to know that I can use FX3S with S-Port. In case could split 32 bit data into 2 channel, using one SD card each.

The datasheet says that the ports are independent, so to not fall into any mistake, I have additional questions:

So I can achieve FPGA to SD device data transfer using the GPIF II port ? This is what I understand from Logic Block Diagram on page 1 of the CYUSB303X datasheet. Could you confirm it ?

If this is right, how can I select at any time which of the two S-Ports write to ?

Do you have design examples about FPGA to SD cards data transfer ? AN65974 does not mention USB host destination device.

Regards,

Simon

0 Likes
Rashi_Vatsa
Moderator
Moderator
Moderator
5 likes given 500 solutions authored 1000 replies posted

Hello Simon,

Please confirm that you are aware that FX3S is also a peripheral controller and cannot be configured as USB 3.0 Host controller.

Also confirm that you have gone through the FX3S datasheet and the functionalities and you are fine with it.

- Yes you can get data through GPIF lines and store the data to storage ports

- The maximum GPIF  bus width supported by FX3S is 16 bits

- FX3S Supports up to 2 memory cards - SD 3.0, eMMC 4.41, SDIO 3.0

- The SDK 1.3.4 includes msc_examples. You can install the SDK from https://www.cypress.com/documentation/software-and-drivers/ez-usb-fx3-software-development-kit

You need to combine the slavefifo example (AN65974) and the storage class example for your application.

Path for the examples: C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\msc_examples

You can also refer to RAID applications. Please refer to the atached zip files in these links

https://www.cypress.com/documentation/code-examples/ez-usb-fx3s-sdmmc-backed-raid-0-example

https://www.cypress.com/documentation/application-notes/an89661-usb-raid-1-disk-design-using-ez-usbr... 

- S0 and S1 ports can be configured for 8 bits data bus maximum

- Both the ports S0 and S1 can be enabled from the firmware itself (io_matrix).  The reading/writing to ports can be selected in the APIs by passing argument like PORT_ID

Regards,

Rashi

Regards,
Rashi
0 Likes

Hello RashiV_61

Please confirm that you are aware that FX3S is also a peripheral controller and cannot be configured as USB 3.0 Host controller.

Also confirm that you have gone through the FX3S datasheet and the functionalities and you are fine with it.

OK, I confirm and I understand it, I think I am fine with your last explanation.

Thanks.

Regards,

Simon

0 Likes