bqrwiw 发表于 2015-7-15 10:14:02

晒做USB通信时遇到的一些问题,请指教

问题1:USB时序这个由USB的48M时钟提供给FPGA,这个是FPGA的50M时钟分频25M给USB,reg d1,d2;always @(posedge Clk) begin        d1<=!d1;        d2<=d1;endassign ifclk = !d1&d2; //这个是分频的USB时钟由上述分频程序可以分析得出,同步时钟在时序上是落后1/2系统时钟的,所以在对CY7C68013A的时序控制上也需要做一些调整,状态机的触发采用了CLK的下降沿的触发方式, 在真实的情况下我测到的可行的时序USB 48M晶振READ1: slwr <= 1 slrd <=0 sloe <=0READ2:         slrd <=1 WRITE1:slrd <= 1 sloe <=1 slwr <= 0WRITE2:                                 slwr <= 1这个是根据时序图的标准时序(对于48M晶振来说,这两个时序都是可以的,但是对于50M来说只能是下面的时序)///////////////////////////////////////////50M分频25M给FPGA提供时钟Read1 slrd <= 1 slwr <= 1 sloe <= 0Read2 slrd <= 0Write1 slrd <= 1 slwr <= 1 sloe <= 1Write2         slwr <= 050M晶振标准时序 问题2:USB传输 问题4:USB 固件OEB = 0x00,好像是端口B的输出使能,但是在48M晶振里面怎么没有?

uisrc 发表于 2015-7-15 10:29:44

问题好多啊!!
问题1:如果USB芯片给FPGA提供时钟,同步时钟采用USB提供的48MHZ 这样系统是同步时序,如果采用50MHZ FPGA给USB 通信,由于USB芯片最多接收48MHZ 时钟,50MHZ 大于48MHZ 因此这里采用分频为25MHZ 提供给USB芯片,采用FPGA给USB通信,控制时序上应该可以采用一样的方式。具体测试结论需要用户详细分析
问题2:USB传输,发送的数据包,如果你发送的不是完整数据包,就会出现数据无法对齐的情况,你发送的时候虽然软件提示发送成功了,但是当你接收的时候,没有完整的数据包,也是无法接收到了。你可以监控下,用FPGA发的数据如果没有达到一包数据,电脑永远接收不到,除非采用强制上传,强制上传其实是给无效数据补0后补到一个完成数据包传输的。
问题4:50MHZ FPGA给USB提供时钟的程序,是采用了FPGA提供时钟,需要定义一次握手,实现USB的重新配置。并且采用了8bit数据传输。具体阅读数据手册

bqrwiw 发表于 2015-7-15 10:56:45

admin 发表于 2015-7-15 10:29
问题好多啊!!
问题1:如果USB芯片给FPGA提供时钟,同步时钟采用USB提供的48MHZ 这样系统是同步时序,如 ...

问题1:
这个是slave fifo模式下的时序图
但是在50M晶振的时候 在ifclk上升沿到来的时候slwr为高电平,感觉这个读不到数据,
但是事实却是只有这样才能读到数据

这是我画的时序图

bqrwiw 发表于 2015-7-15 11:02:01

admin 发表于 2015-7-15 10:29
问题好多啊!!
问题1:如果USB芯片给FPGA提供时钟,同步时钟采用USB提供的48MHZ 这样系统是同步时序,如 ...

问题2:我做得程序主要是上位机把一些指令通过USB发给FPGA,比如上位机发送几个字节的分频比(肯定不到512个),这样用slave fifo模式FPGA能不能收到??             还有我检测通过FPGA来检测脉冲信号,并把检测到的脉冲信号发送给上位机,这样肯定也不到512个字节,那我怎么能看到这些数据呢??

宋桓公 发表于 2015-7-16 10:37:57

http://www.osrc.cn/forum.php?mod=viewthread&tid=30&extra=
看下这篇文章,希望对你有帮助~~
页: [1]
查看完整版本: 晒做USB通信时遇到的一些问题,请指教