I too think Infineon FX is worth ruling in as an option, since it's almost purpose-built for such a task.
I have struggled setting up FX2 in the past because Infineon/Cypress documentation seems mixed with FX3. But I'm sure FX2 could handle it.
FX3 CYUSB3KIT-003 is 44 euro, so another option could be to buy that, granted it's more expensive than FX2, but still in hobby territory. I don't know much about it, but I gave it a shot:
(1) I ran the
GPIF II Designer, and selected
New Project. The screenshots show what I set up for the interface definitions, and state machine, to sample 8-bits repeatedly. Then I clicked on
Build->Build Project. The software generates a file called
cyfxgpif2config.h(2) I started
EZ USB Suite, and imported a project
C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\firmware\boot_fw\gpiftousb, which when imported gets called
BootGpifDemo for some reason.
(3) I replaced the cyfxgpif2config.h in the imported project with the file that was generated in step 1.
(4) Right-click on the project name in Project Explorer, select
Properties, add an Include path as shown in the attached screenshot (BootGpifDemo-proj-settings.jpg)
(5) A bit naughty, but edit the file cyfxgpif2config.h to comment out a particular line (see file-mod.jpg). I'm sure there's a better way but I couldn't find it. If that line is not commented out, then I saw a build error.
(6) Click on the
hammer icon to build the code.
(7) Take the CYUSB3KIT-003 board, and make sure jumper J4 is attached (by default it is not). As supplied, just J2 and J3 are attached. Attach J4 too, so that
J2,J3,J4 are attached. J5 is not to be attached. J4 attached means that the board can boot from USB into RAM.
(
Plug in the board into PC, using a USB 3.0 capable port. Run the software called
Control Center and select the USB device in the left pane, and click on
Program->FX3->RAM. Navigate to your project folder, and in the
Debug sub-folder you'll see the built firmware, called
BootGpifDemo.img and select it. It will get uploaded into the RAM in the FX3 chip, and the text 'Programming Succeeded' will appear in the bottom status bar of the Control Center software.
(9) Run the app called
streamer.exe, it is at
C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.3\application\cpp\streamer\x86\Release(10) See the screenshot (fx3-streamer.jpg) to see in red boxes what I configured. Then click
Start, and you should see a value of approx. 98000 KBps displayed, i.e. 95 MBytes per sec. I tested with a i7-8650U laptop in case that makes any difference.
(11) If you want to see the data, click Stop, then check the box labelled "
Show Transferred Data" and then click Start, but it will heavily affect the performance.
The bytes that are being transferred correspond to the logic levels on pins D00 to D07 on the board, they may float up to read 0xFF by default.
The source code for the streamer.exe application would need to be modified, to first make it dump to RAM (e.g. a massive array in C, or malloc'd memory), and then dump to disk. I don't know what impact that would have to performance.
I'm sure there are far better ways with FX3, and as mentioned, I'm a beginner with it, I'm very likely only extracting a fraction of its performance (but perhaps 95Mbytes/sec is sufficient?), but if anyone can offer any quick tips, I can try out any suggestion on the board.