阅读:674回复:0
PCI扩展卡的开发问题
我们实验室开发了基于PCI总线的卫星数据回放系统.该系统将计算机内存中的数据通过PCI总线以链式(Chaining Mode)DMA传输至PCI扩展卡上的乒乓缓存,然后按一定格式回放输出.
PCI总线接口采用PLX 9080芯片.DMA采用9080的0通道进行,每次传输数据量为256KByte.该系统设计速率指标为35MByte/s,也就是说每7.5ms将触发一次DMA操作.卡上控制逻辑通过置低9080的DREQ0#(pin 29)申请9080的DMA传输,当传输完成以后通过USERO(pin 27)来置高DREQ0#,结束申请. 我们在调试时进行的两组实验中发现如下现象(进行两组实验时,仅PCI槽不一样,其他条件如驱动程序,应用程序等均一样): 1.当扩展卡插在32bit,33MHz,5V的PCI Slot. 从示波器观察到一次DMA占用时间(DREQ0#处于低电平的时间)约为2.9ms,比7.5ms小的多.这时整个系统工作正常,实验结果显示即便在80Mbyte/s的回放速率下,该系统仍然工作正常. 2.当扩展卡插在64bit,33MHz,3.3V的PCI Slot或者64bit,33MHz,3.3V 的PCI-X Slot. 数据回放速率最高只能达到35MByte/s,再高则会出现一块卡上缓冲区内数据已经回放完而另一块缓冲区与计算机内存的DMA传输尚未结束而导致错误的现象.即便在35MByte/s的速率下,系统也不稳定,当对控制界面软件稍加干扰(比如打开其他软件),也会出现前述错误.从示波器观察到一次DMA占用时间(DREQ0#处于低电平的时间)约为6.3ms,比较接近7.5ms,时间裕量远不如情况1. 我们对上述两组实验中的PCI总线上的关键控制信号的波形进行截图,贴在附件word文档中.在每一幅波形截图中,上半部分的黄色波形是实验1条件下观测到,下半部分蓝色波形是实验2条件下相同信号的波形.每个jpg文件记录信号描述如下: 1) REQ#_L.jpg: 较长时间范围内的REQ#信号波形.其中两条蓝色的垂 直光标线标识了两次DMA的间隔7.5ms. 2) REQ#_S.jpg: 较短时间范围内的REQ#信号波形.对于蓝色的波形, 我们很想知道9080为什么在短时间内产生 连续5个短脉冲.问题是否出在这里? 3) GNT#.jpg: 较短时间范围内的GNT#信号波形. 4) FRAME#_S.jpg: 较短时间范围内的FRAME#信号波形.对于蓝色的波 形,我们很想知道9080为什么在短时间内 产生连续4个短脉冲.问题是否出在这里? 另外,是否我们对32bit和64bit PCI的兼容性设计有所欠缺?还是别的什么可能原因会造成试验中观察到的现象?因为最后这套系统必须在64bit的PCI-X槽里运行,所以目前的这个问题急待解决.而且因为时间关系,我们不可能更换更新的64bit接口芯片,所以我们试图确定是否对9080的操作上存在问题. 十分感谢拨冗相助,期待着你们的答复.谢谢. |
|
|