阅读:1473回复:4
9054总是要读两次才能正确读出数据,为什么呀?
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] |
|
最新喜欢:mapofl |
沙发#
发布于:2003-10-12 14:02
这有以下可能:
1.9054 local 端的target读时序有问题.你对照以下时序图,看你读的DPRAM的时序是否完全正确. 2.local configuration 中space0(or 1)的描述寄存器配置得不妥 |
|
板凳#
发布于:2003-10-13 13:29
好像第一遍时读到FIFO中,第二遍时才读到PCI总线上。可为什么直通不过去呢?寄存器中有没有哪些位是设置成直通的(一遍就送到PCI总线上)?有没有寄存器是管这些FIFO的?
郁闷呀!!!!! |
|
地板#
发布于:2003-10-28 16:04
有人说这是为了增加数据传输的可靠性,保证数据完整
:cool: [编辑 - 10/28/03 by freen3] |
|
地下室#
发布于:2003-11-24 17:51
你可以插入等待周期。
|
|