我的68013做从模式,FPGA做主控,OUT端点手动模式,IN端点自动模式(手动模式也试过),IFCLK由68013提供。
写了个测试程序,电脑发出数据,FPGA将CY7C68013 OUT端点的数据读出,然后向IN端点写入,电脑将数据读出比较。
现测试发现:
若时钟IFCLK正向,FPGA从OUT端点读数据,会出现最前面一个字丢失,并最后一个字重复一个,如:PC向USB OUT端点写12 34 56,FPGA读出的数却是34 56 56,然后向IN端点写入,PC读出来也是34 56 56。
若时钟IFCLK反向,则FPGA能从OUT端点正确读出全部数据,然后向IN端点写入,但CY7C68013却收不到任何数据,IN端点FIFO一直都是空。
使IFCLK时钟为30MHz问题依然。
觉得似乎是IFCLK与WR信号时序不匹配造成,难道是PCB布线长短不同造成?麻烦的是MCU程序上除了改改IFCLK频率或正反向,似乎再无法做其他修改了。。。
但奇怪的是,之前我们用一个CY7C68013开发板和FPGA开发板飞线搭过这个电路,程序调试很顺利,收发都很正常,现相同的电路制成PCB板,程序没做修改,运行起来就出现这样的问题,若是PCB走线长度不同造成,那么之前飞线的电路差异更大才是,搞不清是咋回事了。。
怀疑是时序问题,请问怎么解决? |