我参考的是CYPRESS官方例程AN65974。FPGA以100MHz的时钟读取CYUSB3014的数据没问题。但由于后续存储器比较慢,现在想以50MHz的时钟读取CYUSB3014的数据,数据线仍然保持为32位。不知道该如何修改FX3的代码来匹配FPGA的50MHz读取频率。请问各位工程师,我需要在EZ USB Suite中修改哪些代码来?GPIF II配置要不要修改?
EZ USB Suite的部分时钟代码如下,供您参考:
/* setSysClk400 clock configurations */
clkCfg.setSysClk400 = CyTrue; /* FX3 device's master clock is set to a frequency > 400 MHz */
clkCfg.cpuClkDiv = 2; /* CPU clock divider */
clkCfg.dmaClkDiv = 2; /* DMA clock divider */
clkCfg.mmioClkDiv = 2; /* MMIO clock divider */
clkCfg.useStandbyClk = CyFalse; /* device has no 32KHz clock supplied */
clkCfg.clkSrc = CY_U3P_SYS_CLK; /* Clock source for a peripheral block */
已解决! 转到解答。
PC机向CYUSB3014的传输速率也可降低。
你不需要改FX3的代码。
就是说FPGA可以直接以50MHz的频率读取CYUSB3014的数据?我试过,但跟100MHz的结果不一样,以为是FX3的代码有问题。我再调调FPGA这边的代码。
我测试了一下,如果FPGA以50MHz读取CYUSB3014的数据,容易发生FIFO溢出导致发送数据失败,因为PC到CYUSB3.0是非常高速的。
那现在问题变成了:如何在FX3中设置代码,使得电脑传递到CYUSB3014的速度降低?
这个问题可能不常见,但我手里确实只有这一块CYUSB3014的控制板,必须用这个。所以想通过USB3014的限速来提高后续存储的可靠性。