redwolf
驱动牛犊
驱动牛犊
  • 注册日期2001-07-31
  • 最后登录2009-05-02
  • 粉丝0
  • 关注0
  • 积分75分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:2049回复:9

68013的slavefifo

楼主#
更多 发布于:2004-12-10 17:13
我用fx2的slavefifo方式,采用endpoint2。4buffer。每个buffer 1KByte。请教。slavefifo的片选信号和flag信号用同一个IO。我如果想要flag。是不是不用考虑片选信号。
我是一匹来自北方的狼
akangquan
驱动牛犊
驱动牛犊
  • 注册日期2003-05-07
  • 最后登录2011-05-24
  • 粉丝0
  • 关注1
  • 积分15分
  • 威望51点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-10 17:33
Slavefifo 的Flag标志有二种工作模式,你可以避开使用FlagD,使用其它的3个标志位, 一个标志用来表示Fifo 满(IN),另一个标志用来表示Fifo空(OUT),  这个在以前玩过,现在一下想不起来是定义哪个Flag了, 但是肯定可以实现。
我用的是 FPGA + 68013
redwolf
驱动牛犊
驱动牛犊
  • 注册日期2001-07-31
  • 最后登录2009-05-02
  • 粉丝0
  • 关注0
  • 积分75分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-14 13:23
我是屏蔽了flagD。采用slcs。但是,好像每次下载程序后,从slavefifo中数据读取不是很稳定,有时读取不上来,需要再需要再下载一次程序,才能正常工作。迷茫。一楼的有没有msn。交流交流
我是一匹来自北方的狼
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-14 15:48
1,片选信号和FLAG信号怎么能用同一个IO呢,一个是入一个是出啊!同意时间只能用一种功能的
2,还有你用的是ISO模式吗,如果不是怎么会有1K的buffer四缓冲呢。
3,下载程序后系统需要重枚举,重新加载驱动,因此需要等待重枚举完成,并且有的时候第一次下载确实会有问题,当初没查到问题在那,因此我才用下在两次的方法,下载一次后延时一下再下一次,大约延时2-3s。
如果你查到了问题别忘了结贴,把原因贴出来共享一下啊。
redwolf
驱动牛犊
驱动牛犊
  • 注册日期2001-07-31
  • 最后登录2009-05-02
  • 粉丝0
  • 关注0
  • 积分75分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-12-15 10:28
to:jinghuiren
1,我是用PLD作为slavefifo接口的,改变IO设置就行
2,我用bulk方式
3,我也是,不知是不是fx2的bug。还是我们配置有问题。

有没有哪位大侠用过。给点建议,先行谢过了
我是一匹来自北方的狼
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-12-15 14:09
1,最好改成IO,用地址线很麻烦
2,BULK方式最大包大小是512,如果你设置成1K,那么肯定有问题!
3,我又想了想,下载完程序后需要设置一个寄存器让8051复位的,不知道是不是这里的问题,你尝试多复位一次试试,看是否能解决问题。
redwolf
驱动牛犊
驱动牛犊
  • 注册日期2001-07-31
  • 最后登录2009-05-02
  • 粉丝0
  • 关注0
  • 积分75分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-12-16 17:22
to:jinghuiren
1,bulk 方式时。endpoint2的buffer可以是1K
2,我已经复位了。
我是一匹来自北方的狼
akangquan
驱动牛犊
驱动牛犊
  • 注册日期2003-05-07
  • 最后登录2011-05-24
  • 粉丝0
  • 关注1
  • 积分15分
  • 威望51点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-12-17 00:10
我是屏蔽了flagD。采用slcs。但是,好像每次下载程序后,从slavefifo中数据读取不是很稳定,有时读取不上来,需要再需要再下载一次程序,才能正常工作。迷茫。一楼的有没有msn。交流交流


你指的从slavefifo中读数,是IN,还是OUT令牌, 你是说PLD读数,还是单片机里面进行读数?  
要是PLD 读取slavefifo的话, PLD里面的程序可能还是有一定技巧的, 比如,只有在进行读写操作时,总线才进行相应的操作,平时,总线要置为高阻。  还有,在读数时,要一步一步读,68013好像不支持burst模式, 也即,先让读信号有效,下一个时钟再进行读数并取消读信号,再下一个时钟再置读信号。。。。。。 在这个过程中,你也需要判断slavefifo缓冲区中是否有数的标志位。

最好,读数和写数 分成二个状态机实现为佳(个人观点,可以批判性接受些,嘿嘿)
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-12-17 15:00
是吗,协议规定BULK最大包大小是512,如果你设置为1024,后果我不知道,如果你的设备可以正常工作,并且是4缓冲的话也许这是Cy的一个特殊设置

先复位一次,延时一下再复位一次,看程序是否就工作正常了。

建议好好看一下Datasheet关于Slave Fifo的两个读写时序,当初我们做的时候可是研究了一阵子呢。
reuterk
驱动牛犊
驱动牛犊
  • 注册日期2004-12-24
  • 最后登录2005-02-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-12-24 10:50
1.按datasheet上来说,是ep2可以配置成1024×4模式

2.slcs对单片68013系统而言,需要拉低

3.FIFOADR0/FIFOADR1这个是必须要选的

4.重新建立一个keil项目,重新编译,也许可解决下载后枚举不更新的现象
游客

返回顶部