paopao79916
驱动牛犊
驱动牛犊
  • 注册日期2002-12-05
  • 最后登录2005-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1933回复:8

CY7C68013的SLAVE FIFO模式疑问

楼主#
更多 发布于:2003-08-22 11:04
 我的问题是:SLAVE FIFO模式使用AUTO模式时,主机端会不会自动进行数据流量控制呢?
 简单地讲:我用PC机发送了4M字节,外部的主机在对FIFO进行读取时,每读完1024(缓冲大小)字节后,是需要等待PC机再次写入呢,还是由硬件(SIE)自动帮你完成,之间没有任何停顿呢?
 我的理解是这样的:因为使用的是双缓冲机制,所以满了512字节以后,FIFO半满,由外部主机读取512字节,同时PC机向另一个FIFO写,之间应该没有任何停顿。
 如果外部主机没有及时读取FIFO中的数据,那么SIE就会以NAK包响应USB总线,从而使数据不能写入FIFO,一直等到FIFO为空。
 我的理解可能有些问题,各位有不同见解的,可以发贴讨论一下嘛,呵呵!
xuniyiqi
驱动牛犊
驱动牛犊
  • 注册日期2003-08-28
  • 最后登录2005-05-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-19 22:48
我认为如果EP2的话,fifo设成BULK方式的话,是512,又是双缓冲的话就是512*2,如果是4缓冲的话,就是512*4了,如果fifo设成ISO方式的话,是1024,又是双缓冲的话就是1024*2,如果是4缓冲的话,就是1024*4了;
如果EP6的话,fifo设成BULK方式的话,是512,又是双缓冲的话就是512*2,如果是4缓冲的话,就是512*4了,如果fifo设成ISO方式的话,是1024,又是双缓冲的话就是1024*2,但不能设成3x1024或是 4x1024,不知道我说的对不?



我觉得这里是不是有点混淆啊,BULK方式每包最大为512字节,ISO方式每包最大为1024字节(均是高速下),至于端点FIFO的大小配置应该可以自己根据需要配置的。但必须保证各种传输模式下最大包字节数的定义。
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-09-17 21:32
楼上对于bulk的说法我可以肯定是正确的
对于iso的说法因为偶没有仔细研究过,不敢说什么 :D
Ten
Ten
驱动牛犊
驱动牛犊
  • 注册日期2002-04-03
  • 最后登录2003-11-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-09-17 18:07
我认为如果EP2的话,fifo设成BULK方式的话,是512,又是双缓冲的话就是512*2,如果是4缓冲的话,就是512*4了,如果fifo设成ISO方式的话,是1024,又是双缓冲的话就是1024*2,如果是4缓冲的话,就是1024*4了;
如果EP6的话,fifo设成BULK方式的话,是512,又是双缓冲的话就是512*2,如果是4缓冲的话,就是512*4了,如果fifo设成ISO方式的话,是1024,又是双缓冲的话就是1024*2,但不能设成3x1024或是 4x1024,不知道我说的对不?
flytomoon
驱动巨牛
驱动巨牛
  • 注册日期2003-07-09
  • 最后登录2004-10-18
  • 粉丝1
  • 关注1
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-09-15 09:30
[quote]我记得好象如果EP2,6的话,他的fifo本身是1024,又是双缓冲的话就是1024*2,如果是4缓冲的话,就是1024*4了,不知道是不是。


不是的,2和6是可以设置的,但是其fifo本身也是以512为单位的,也就是说4缓冲是2k而不是4k。
 [/quote]

还是REN兄说的是! :D
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-09-15 09:27
我记得好象如果EP2,6的话,他的fifo本身是1024,又是双缓冲的话就是1024*2,如果是4缓冲的话,就是1024*4了,不知道是不是。


不是的,2和6是可以设置的,但是其fifo本身也是以512为单位的,也就是说4缓冲是2k而不是4k。
zhangwm
驱动牛犊
驱动牛犊
  • 注册日期2003-08-26
  • 最后登录2003-10-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-09-14 21:14
我记得好象如果EP2,6的话,他的fifo本身是1024,又是双缓冲的话就是1024*2,如果是4缓冲的话,就是1024*4了,不知道是不是。
free_man_free
驱动小牛
驱动小牛
  • 注册日期2003-08-19
  • 最后登录2005-04-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-08-22 15:04
你的理解比较正确!
可你说的是double buffer,如果是三倍或是四倍的buffer,那又会怎么样呢?
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-08-22 13:42
你的理解是对的。
游客

返回顶部