Link_X
驱动牛犊
驱动牛犊
  • 注册日期2003-12-15
  • 最后登录2005-11-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1958回复:4

9054 DMA传输(SG方式)依然不稳定,问题比想象的要严重,而且感觉与主机端程序的进程优先级有关(windows 2000),不知所措:(

楼主#
更多 发布于:2004-11-17 22:01
曾经发过一个关于该问题的帖子,后来改了fpga上的程序,自以为问题解决了,后来才发现当dma读写循环(就是调用sdk中的PlxDmaSglTransfer,先写,然后立刻读取,每次4096 bytes)数万次后,有上千次的读写数据不一致,这样的错误率(约有 1/20)真是令人不可忍受.......

目前发现,错误率与两个因素有关:
1. 循环的次数:
   几百次时(全对)
   几千次时(1~3次 错,错误率约1/1000,偶尔全对)
   几万次时(有上千次错,错误率约1/20)
2.主机程序的进程优先级
  当主机程序的优先级达到“实时”时,错误率有所下降,但只是下降,仍无法消除。                

现在真是不知所措:(

另:
pci卡上的时钟为50M,采用continue burst mode,传输速度倒是挺理想的,我在想是不是因为pci端跟不上local端,导致9054的fifo被读空或写满造成的
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-11-19 09:46
首先没有理由怀疑操作系统或者SDK,我这里的测试要求几乎是极限,但从来不出问题;
测试软件的编写一般也没有什么大问题,但切忌多线程同时操作硬件;
最大的可能仍然是FPGA,这方面设计出错的很多,建议先设计简单的非burst时序,排除其他方面的问题。
兄弟们,给点分吧
stephen_young
驱动牛犊
驱动牛犊
  • 注册日期2002-08-19
  • 最后登录2008-02-17
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-22 17:13
首先没有理由怀疑操作系统或者SDK,我这里的测试要求几乎是极限,但从来不出问题;
测试软件的编写一般也没有什么大问题,但切忌多线程同时操作硬件;
最大的可能仍然是FPGA,这方面设计出错的很多,建议先设计简单的非burst时序,排除其他方面的问题。


松涛兄,我有一个疑问:plx SDK3.0里面关于分散集中模式的例子,好像没有涉及“DMA描述符寄存器”里“下一个描述符地址”这一段,是不是说可以不用填写这一段的内容?
谢谢!
三人行必有我师!
Link_X
驱动牛犊
驱动牛犊
  • 注册日期2003-12-15
  • 最后登录2005-11-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-11-23 17:42
感谢版主的关心:)

前面所描述的现象,现在看来其实是一个假象,传输出错的次数其实与文件的长度没有必然联系,而是与文件的内容紧密联系的。现在刻意制造了内容为:
00 00 00 00 FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00 FF FF FF FF 00 00 00 00 00 00

的文件,发现传输该文件(仅几十个字节)每次必错。

现在初步判断是硬件线路本身不稳定,不过还不敢完全排除VHDL代码的时序问题(仅从quartus的仿真来看是没什么问题).............
jst7792
论坛版主
论坛版主
  • 注册日期2001-12-10
  • 最后登录2006-11-16
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-29 09:41
[quote]首先没有理由怀疑操作系统或者SDK,我这里的测试要求几乎是极限,但从来不出问题;
测试软件的编写一般也没有什么大问题,但切忌多线程同时操作硬件;
最大的可能仍然是FPGA,这方面设计出错的很多,建议先设计简单的非burst时序,排除其他方面的问题。


松涛兄,我有一个疑问:plx SDK3.0里面关于分散集中模式的例子,好像没有涉及“DMA描述符寄存器”里“下一个描述符地址”这一段,是不是说可以不用填写这一段的内容?
谢谢! [/quote]
这些寄存器的控制具体都是驱动程序在底层完成的,你自己一般不需要再关心。
兄弟们,给点分吧
游客

返回顶部