fannwong
驱动牛犊
驱动牛犊
  • 注册日期2003-01-31
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2164回复:12

关于9054的ready信号的问题

楼主#
更多 发布于:2003-04-09 17:25
当9054控制local bus时,并向local端发出写周期时,在9054产生ads的负脉冲后:
local端长时间不将ready信号拉低(有效)、即9054长期采不到ready有效,
9054如何处理?死锁?重试?
flying
驱动小牛
驱动小牛
  • 注册日期2002-08-01
  • 最后登录2016-06-19
  • 粉丝0
  • 关注0
  • 积分197分
  • 威望70点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-04-09 18:25
看你的本地寄存器中的相应设置项!
Ready#对于PCI9054 是作为I/O用的。
fannwong
驱动牛犊
驱动牛犊
  • 注册日期2003-01-31
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-04-10 21:15
请说具体点,哪个local register?
因为9054控制local bus,所以ready对9054来说是输入(没错吧?).
多谢了
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-04-11 11:08
硬件一直等待下去,计算机表现是完全死机.
兄弟们,给点分吧
power_lei
驱动小牛
驱动小牛
  • 注册日期2002-05-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-04-11 14:18
不给出READY信号,9054就无法进行下面的数据传输。
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-04-17 17:27
是啊,我现在也是收不到LOCAL BUS的ready信号,不知道怎么回事,仿真了CPLD的内容,没有错误,可是当DMA开始后就一直等待,陷入死循环!
 有没有高手知道我该怎么继续调试下去,会另开贴送分的阿!
flying
驱动小牛
驱动小牛
  • 注册日期2002-08-01
  • 最后登录2016-06-19
  • 粉丝0
  • 关注0
  • 积分197分
  • 威望70点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2003-04-17 19:20
1,你的CPLD需要对9054的Ready#信号作出反应,也就是说你要正确的驱动它,使9054能够接收数据!
2,在PCI9054中,DMA Mode寄存器要允许Ready#输入。
3,在DMA时,9054的Local 端的地址要正确填写,否则就会出现好像是“死机”的现象了!
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-04-18 09:16
flying,我就是使能了READY输入在DMAMODE里面,LOCAL的地址我给的是局部映射到PC内存的地址,这样配置应该没有错误吧,可是却出现了无限等待的情况?
但当我不使能READY输入时,却可以接收到ISDONE信号了,说明DMA结束了,但没有数据读出来,真的很头痛,能不能指点一下该怎么办阿?
flying
驱动小牛
驱动小牛
  • 注册日期2002-08-01
  • 最后登录2016-06-19
  • 粉丝0
  • 关注0
  • 积分197分
  • 威望70点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2003-04-18 19:01
Local的地址是指你的板子上的读数据的地址,这个和PCI地址是不相关的。比如说你的PCI9054前端接的是SRAM(假设如此),当你要将SRAM中的数据DMA到内存时,需要在DMA相关的Local地址寄存器上填上该SRAM的地址(这个地址是对于Local端来说的,即:LA[31..2],假设为20000000H),而不需要Local向PCI映射的地址。
另外,在你的CPLD中,也还要对这个地址(一般来说高位)作出相应的响应,并正常使能Ready#信号,让9054从Local Bus是取走数据。

你的情况我也碰到过的,所以,如果如果我没有想错的话,你可以这样试试你的DMA:
DMAMODE0 =143H
DMAPADR0 =这里是你的主机端的DMA的物理地址
DMALADR0 =这个值就填上我刚才假设的SRAM的地址(20000000H)
DMASIZ0  =传输的数据量
DMADPR0  =08H
然后再启动DMA试试!(这是Block DMA)

祝好运!
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-04-18 19:12
flying,太感谢你那么详细的指导了了,我另外开贴给你分吧!
我这就试试你说的配置,上帝保佑可以成功吧!
flying
驱动小牛
驱动小牛
  • 注册日期2002-08-01
  • 最后登录2016-06-19
  • 粉丝0
  • 关注0
  • 积分197分
  • 威望70点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2003-04-18 19:18
呵呵,不用客气!
这里的氛围挺不错的,在这里有什么问题大家可以提出来相互探讨,相互学习。
希望以后有机会多多交流!
zhangyanping
驱动小牛
驱动小牛
  • 注册日期2003-02-23
  • 最后登录2004-07-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-04-18 19:36
flying,先谢谢你了!

我试了你说的设置,结果还是在等待DMAISDONE信号上陷入了死循环,我感觉好像是9054没有接收到CPLD的READY信号,所以,一直等待,可是,一不使能READY信号,就可以接收到DMAISDONE信号了!可是没有READY信号,数据是无法传送的阿,所以很矛盾!

这个板子应该没有问题的,因为我可以正常单周期读写,可DMA就不行了!

我用PLXMON看了一下,也是DMA时,和诊断程序一样陷入了无限等待状态!

flying
驱动小牛
驱动小牛
  • 注册日期2002-08-01
  • 最后登录2016-06-19
  • 粉丝0
  • 关注0
  • 积分197分
  • 威望70点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2003-04-18 22:04
哦,你用逻辑分析仪看一下9054Local端的时序看吧
你的Ready#信号是由CPLD产生的吧?
这个Ready#信号,你可以参照RDK上的Verilog程序做,应该没问题的,我就是这么做的。
再试试吧,
游客

返回顶部