teleboy
驱动牛犊
驱动牛犊
  • 注册日期2003-07-10
  • 最后登录2004-05-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1473回复:4

9054总是要读两次才能正确读出数据,为什么呀?

楼主#
更多 发布于:2003-10-11 16:50
9054,想用PCI Target Read方式从双口RAM中读数据,目前情况是:
如果不用Read Ahead(No Flush),用Plxmon中命令“dl s0 \",\"dl s0 1\"或者Read Block,Next Block都读不出数据,读出为FFFFFFFF。用Windriver也读不出。
若使用Read Ahead,且Disable Prefetch,则用命令“dl s0 1 r\"是正常数和全F间隔出现,“dl s0”仍为全F;Read Block除了第一个数为FFFFFFFF外,都是正常数据,Next Block正常。用Windriver,正常数和全F间隔出现。
若使用Read Ahead,但Prefetch 16个数据,用Read Block和Next Block 时,两列正常数据与两列FFFFFFFF相间隔,“dl s0”现象同上,\"dl s0 1 r\"也是正常数和全F间隔出现,不同是:若依次用以下命令:\"dl s0 1\",\"dl s0+4 1\",\"dl s0+8 1\".......地址依次加4(也就是Read Ahead的要求),则这16个在FIFO中的数能一次读出。再往下第17个数就还要读两次,直到第32个数又只需读一次。好像是读两次,把整个16个数放到FIFO中,然后从 FIFO 中只需一次便可读出(我的分析)。用Windriver地址依次加4也是这个结果。
不能用PCI Target Retry Delay Clocks,如果用就读不出。
LHOLD和LHOLDA相连通过10K电阻接地,Ready#脚通过10K电阻接地。
我的本地时钟40M/20M,写没有问题,就是读不行。

请各位帮忙分析一下,我没有用Delayed Read Mode,为什么读数据要读两次呢?
再次谢谢各位啦!

[编辑 -  10/11/03 by  teleboy]

[编辑 -  10/11/03 by  teleboy]

最新喜欢:

mapoflmapofl
Suny1966
驱动牛犊
驱动牛犊
  • 注册日期2002-12-08
  • 最后登录2011-03-25
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-12 14:02
这有以下可能:
  1.9054 local 端的target读时序有问题.你对照以下时序图,看你读的DPRAM的时序是否完全正确.
  2.local configuration 中space0(or 1)的描述寄存器配置得不妥
teleboy
驱动牛犊
驱动牛犊
  • 注册日期2003-07-10
  • 最后登录2004-05-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-10-13 13:29
好像第一遍时读到FIFO中,第二遍时才读到PCI总线上。可为什么直通不过去呢?寄存器中有没有哪些位是设置成直通的(一遍就送到PCI总线上)?有没有寄存器是管这些FIFO的?

郁闷呀!!!!!
freen3
驱动牛犊
驱动牛犊
  • 注册日期2002-11-09
  • 最后登录2004-02-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-10-28 16:04
有人说这是为了增加数据传输的可靠性,保证数据完整

 :cool:

[编辑 -  10/28/03 by  freen3]
AOJIANQIANG
驱动牛犊
驱动牛犊
  • 注册日期2003-10-24
  • 最后登录2008-10-15
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-11-24 17:51
你可以插入等待周期。
游客

返回顶部