shiyinjita的个人空间 https://blog.eetop.cn/239461 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

数据采集卡的实现!!!

已有 2557 次阅读| 2013-3-20 20:45 |个人分类:xilinx

[i=s] 本帖最后由 shiyinjita 于 2013-3-20 20:51 编辑

经过了接近一个月的时间,终于调试完成了8通道的数据采集卡,在这里简单的说一下数据采集卡的FPGA实现过程。首先确定方案  ->
数据采集卡实现为 AD数据 -> FPGA接收->DDR2(2片)->ARM显示。
其中整体方面 ,因为受DDR2内存的限制,所以为了提高采集数据的长度,所以可以自由配置8 ,4,2,1通道,这样就可以保证在1通道时候,独占内存,2通道的时候平均分配内存,这种设计思路可以整体上提高采集长度。
               2 :在DDR2方面,有两种方案可以选择,平均分配内存或者拼接的数据存储到DDR2中,在8,4通道的时候,平均分配虽然可以提高读取的速率,但是跳转BANK导致了刷新时间浪费了很多,同时为了操作方便,采用了通道数据拼接然后存储到DDR2中。
                3 :因为ARM有选择的读取某一通道的数据,所以必须准备的选择好正确的数据,这样就必须在拼接的时候,记录下每个通道的位置,这个位置与上位机发送的通道对比,哪个AD位数为1,就保留哪个AD位数的数据。
               4 : 关于触发,因为DDR2最小burst为4,两片DDR2就是8,在8个通道拼接的时候,每个触发能准确的对准每个数据,所以触发的误差就是 +-1 ,这个1的误差是由于触发和时钟的差导致的,在数据采集卡中可以不用考虑,而4ch的时候,由于拼接的数据中含有4 *2 个数据,这样就会导致触发抖动就是1 (+-1) ,而在1个通道的时候,触发误差就是7 (+-1) ,所以FPGA必须准确的记录下触发误差,当误差为0的时候,按照采样个数进行采集,而当误差 >=1的时候,FPGA就需要多读一个burst,然后丢掉前面的误差数据,以及后面多余的数据,这时候剩下的数据就是正确采集的数据(针对单次)
             5 :关于触发,连续模式情况下,与上面情况一下,必须准确的记录好trig位置,在这里不再详述。
             6 :关于采集个数,因为上位机发送的是触发前和触发后的个数,所以在8ch的时候为这个数据的 n*8/2 ,4通道为N*4/2。。。。。
             7 :关于复位,我采用的SP6的DDR2,因为没有复位FIFO机制,所以必须在每次采集之前都必须读空FIFO数据。
以上就是FPGA采集的过程,
           下一步就是在FPGA中做运算,包括平均值,最大值,最小值,FFT等算法。写完后进行分享


                                                                                                                                          动静道人-2013-03-20

点赞

全部作者的其他最新日志

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 2

    好友
  • 1

    获赞
  • 29

    评论
  • 2809

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-20 12:02 , Processed in 0.014757 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部