angel19840920
驱动牛犊
驱动牛犊
  • 注册日期2009-06-03
  • 最后登录2010-06-25
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望451点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2632回复:2

BLOCK DMA的 开销(死区)

楼主#
更多 发布于:2009-07-14 12:00
    我准备用PEX8311,   我想了解下   我 进行2次BLOCK DMA传输 中间 的 协议等开销时间(死区),我想这段时间板子要有足够空间存储数据,吧,  希望有经验的朋友告诉我下,  假设我 每次BLOCK DMA 的数据量为64K , 方向为从板子到PC,   这个情况  每次BLOCK DMA 之间的 时间(不读板子数据)大约为多少  .   我算了下 如果 这段时间 在1.6MS 内 那么 目前方案的板子的缓冲还够用  不会丢数.      

走过路过的朋友 帮帮忙吧!!非常感谢!!!

有做PEX8311 的朋友也可以一起交流  QQ 1105849886
sheng_hui
驱动牛犊
驱动牛犊
  • 注册日期2003-12-22
  • 最后登录2009-07-19
  • 粉丝0
  • 关注0
  • 积分44分
  • 威望27点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2009-07-19 00:48
要知道两次dma操作之间的时间,要确定
1 使用的是什么操作系统,windows系统的实时性比较差,两次dma操作之间的时间很不稳定,短的时候只需要几十微秒,但是长的时候会达到毫秒级,你的1.6ms会出现丢数现象。VXWORKS操作系统可以解决实时性问题。
2 启动DMA操作采用了什么方式,是用中断方式启动还是用查询方式,如果用中断,就涉及到中断响应时间WINDOWS下中断响应时间不稳定,查询方式稍微稳定一点,就是比较耗费资源
建议:
如果数据是进入FPGA的话,把LOCAL端数据的最低位连接到测试管脚,然后主机启动DMA操作(传送递增或者递减数),这时候用示波器观测,就能看出两次DMA之间的时间了,这是比较准确的,别人告诉你的数据只能作为参考
angel19840920
驱动牛犊
驱动牛犊
  • 注册日期2009-06-03
  • 最后登录2010-06-25
  • 粉丝0
  • 关注0
  • 积分58分
  • 威望451点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-07-23 07:56
谢谢 前辈的指点和建议, 现在还没板,所以没法测试,只能向各位前辈了解下,然后做板。    如果要加大缓冲就一定要用2片SDRAM了,这个麻烦多了, 现在就是想只用一片128K 的FIFO  ,半满启动一次64K传输,  如果不是经常性出现死区大与1.6MS  那估计还是可以忍受的。  哎 怎么办呢?????????
游客

返回顶部