PCI9054 DMA传输的问题
时间:12-12
整理:3721RD
点击:
使用PLX9054传输数据,PCI和LOCAL总线宽度都是32bit,数据方向是local-to-PCI,电脑
程序中设定每次传输512 DWORD (1 DWORD = 4 bytes),采用连续突发模式传输,DMA启动
后,每次大约能传输300 DWORD,然后电脑会给出一个blast,我的local端使用HOLDA应答
后,电脑会撤掉HOLD信号,然后再次给出HOLD信号,请求继续传输,我反复的追踪,发现
数据并没有丢失,只是传输出现了暂时中断,中断的时间大约是4-5个CLK
现在的问题是为什么数据还没有传输完成会突然给出BLAST信号呢?按照手册上说的,只
有一种可能,也即9054的FIFO满了后才会给出BLAST信号。
可是PCI时钟是33MHZ啊,我自己local的时钟是32MHZ的,local-to-PCI传输中FIFO不可能
满啊。。。。
程序中设定每次传输512 DWORD (1 DWORD = 4 bytes),采用连续突发模式传输,DMA启动
后,每次大约能传输300 DWORD,然后电脑会给出一个blast,我的local端使用HOLDA应答
后,电脑会撤掉HOLD信号,然后再次给出HOLD信号,请求继续传输,我反复的追踪,发现
数据并没有丢失,只是传输出现了暂时中断,中断的时间大约是4-5个CLK
现在的问题是为什么数据还没有传输完成会突然给出BLAST信号呢?按照手册上说的,只
有一种可能,也即9054的FIFO满了后才会给出BLAST信号。
可是PCI时钟是33MHZ啊,我自己local的时钟是32MHZ的,local-to-PCI传输中FIFO不可能
满啊。。。。
机器里也不是只有你一个pci设备,人家就不传数据了?
这个也有可能的,但是我的数据传输每次被挂起的时间是4-5个时钟,这么短的时间别的
设备也无法传输数据啊
一个pci主设备有义务让自己不要长期占用pci总线啊,否则会影响别的设备用总线的.所以一次burst传输不会太长的
另外,你的local时钟低于pci时钟,那么就是说你也无法提供足够的突发数据啊,不能占着总线不传数据啊
说的有道理