In the FX3 SDK, there is an example project called GpiftoUSb. It is used to sample binary signals from the 32 Bit GPIF Paralllel bus (can be configured to 16 Bus as per your requirement. Contact Cypress Tech Support for the same)
The current example is such that is samples the signals on the raw unconnected pins and is read by PC using our host application called streamer. (whose source code is available in FX3 SDK).
You can edit the streamer source code to dump the read data into a File on the disk. We provide a sample code for storing the read data on the disk. Please contact the Tech Support to get this code as well.
- Madhu Sudhan
As a followup, here's what needed to be done to get this working.
The clock frequency is so low (~3MHz) relative to the GPIF clock (100MHz), we can just read in the data asynchronously with respect to the external clock. It will be highly oversampled. To avoid reading in the data at the oversampled rate, the GPIFII designer can be used. (New project, set up a 32 bit bus, and make a DACK special signal on one of the CTL pins). I developed a state machine that read once once it saw a DACK assertion and then goes into an idle state until DACK is no longer asserted. These states just loop so that it is as if the data is being sampled on the rising edge. Note that if your data is also changing on the rising edge, it may not be read in reliably. To maximize hold times, change your data only on the DACK falling edge and read it on the rising edge as set up by the state machine. Build the state machine and get the created gpif2config.h file and copy that into the gpiftousb firmware project.
Build the firmware and flash it to the device. The streamer can be used to read the data in.