阅读:2164回复:12
关于9054的ready信号的问题
当9054控制local bus时,并向local端发出写周期时,在9054产生ads的负脉冲后:
local端长时间不将ready信号拉低(有效)、即9054长期采不到ready有效, 9054如何处理?死锁?重试? |
|
沙发#
发布于:2003-04-09 18:25
看你的本地寄存器中的相应设置项!
Ready#对于PCI9054 是作为I/O用的。 |
|
板凳#
发布于:2003-04-10 21:15
请说具体点,哪个local register?
因为9054控制local bus,所以ready对9054来说是输入(没错吧?). 多谢了 |
|
地板#
发布于:2003-04-11 11:08
硬件一直等待下去,计算机表现是完全死机.
|
|
|
地下室#
发布于:2003-04-11 14:18
不给出READY信号,9054就无法进行下面的数据传输。
|
|
5楼#
发布于:2003-04-17 17:27
是啊,我现在也是收不到LOCAL BUS的ready信号,不知道怎么回事,仿真了CPLD的内容,没有错误,可是当DMA开始后就一直等待,陷入死循环!
有没有高手知道我该怎么继续调试下去,会另开贴送分的阿! |
|
6楼#
发布于:2003-04-17 19:20
1,你的CPLD需要对9054的Ready#信号作出反应,也就是说你要正确的驱动它,使9054能够接收数据!
2,在PCI9054中,DMA Mode寄存器要允许Ready#输入。 3,在DMA时,9054的Local 端的地址要正确填写,否则就会出现好像是“死机”的现象了! |
|
7楼#
发布于:2003-04-18 09:16
flying,我就是使能了READY输入在DMAMODE里面,LOCAL的地址我给的是局部映射到PC内存的地址,这样配置应该没有错误吧,可是却出现了无限等待的情况?
但当我不使能READY输入时,却可以接收到ISDONE信号了,说明DMA结束了,但没有数据读出来,真的很头痛,能不能指点一下该怎么办阿? |
|
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) 祝好运! |
|
9楼#
发布于:2003-04-18 19:12
flying,太感谢你那么详细的指导了了,我另外开贴给你分吧!
我这就试试你说的配置,上帝保佑可以成功吧! |
|
10楼#
发布于:2003-04-18 19:18
呵呵,不用客气!
这里的氛围挺不错的,在这里有什么问题大家可以提出来相互探讨,相互学习。 希望以后有机会多多交流! |
|
11楼#
发布于:2003-04-18 19:36
flying,先谢谢你了!
我试了你说的设置,结果还是在等待DMAISDONE信号上陷入了死循环,我感觉好像是9054没有接收到CPLD的READY信号,所以,一直等待,可是,一不使能READY信号,就可以接收到DMAISDONE信号了!可是没有READY信号,数据是无法传送的阿,所以很矛盾! 这个板子应该没有问题的,因为我可以正常单周期读写,可DMA就不行了! 我用PLXMON看了一下,也是DMA时,和诊断程序一样陷入了无限等待状态! |
|
12楼#
发布于:2003-04-18 22:04
哦,你用逻辑分析仪看一下9054Local端的时序看吧
你的Ready#信号是由CPLD产生的吧? 这个Ready#信号,你可以参照RDK上的Verilog程序做,应该没问题的,我就是这么做的。 再试试吧, |
|