数据采集卡的实现!
时间:10-02
整理:3721RD
点击:
经过了接近一个月的时间,终于调试完成了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
吉他,关注中。
小编真牛人啊,一个月就调通了?是包括软硬件么
吉他,
我顶你,以后多分享一些啊
笛盎
关注一下
吉他哥很厉害呀
等待下文支持小编~
关注你很久了! 才知道你叫吉他哥啊!帮顶了!
,呵呵
还在关注你的下文呢,数据采集卡整体完了没有?
完了,呵呵,现在在做pcie的testbench,
没看到下文呢,能加个QQ不?或者看一下你的总结
等几天吧,最近比较忙,还没有时间整体一下
小编,那能否分享做平均值的算法啊?!我这边目前是由PC机软件来实现的。
原来这就是吉他哥
小编厉害啊
这个暂时还不能,公司不允许的,抱歉啊
顶一个
顶啊!不知道产品出来了没有!关注中啊!
,已经出来了,不过要等一段时间把,因为这个项目不是民品,所以暂时不好公布
嗯,期待中啊!
我也在做8通道的数据采集卡项目。
想问问小编关于ADC时序约束方面的问题,ADC数据总线上串接了电阻,时序约束时如何算T(pcb)?
这个你进行一下SI仿真
用什么工具啊?modelsim还是proteus?以前做时序约束一般做一下时钟约束,input和output的约束,然后就是多周期和falsepath的,深一点的就是logiclock了,没遇见过串接电阻这种情况。
用cadence或者metore的专门SI仿真工具
要学的软件真多啊!学不会啊!
高端大气上档次。关注小编!