欢迎光临散文网 会员登陆 & 注册

LabVIEW My FPGA重量级成员:18位8通道1MS/s同步高精度信号采集:AD7606C-18

2021-07-26 23:47 作者:神电测控  | 我要投稿

        LabVIEW My FPGA家族又添重量级新成员啦!!!

        1、神电官宣:LabVIEW My FPGA工具包里面诞生了18位8通道同步最高1MS/s采样率的高精度多通道并行ADC FPGA驱动VI和例程:AD7606C-18

        2、重量级:AD7606C-18采样率和带宽等性能指标,远远超出普通AD7606芯片好几倍;带C和不带C有着天壤之别,AD7606C系列属于ADI公司。

        3、同步并行:支持8通道同步,所有通道都是真正意义上的并行同步采集,每个通道都能同时达到1MS/s采样速率。

        4、应用范围广:相较于普通AD7606芯片,AD7606C-18更适合中等级别且需要同步的动态信号采集,非常适合常规电压信号、声音、振动、加速度等IEPE传感器采集,220KHz模拟带宽足以满足绝大多数的项目应用

        5、更加智能:用户还可以直接在FPGA芯片里面加入LabVIEW各种滤波、FFT频谱变换等VI算法,让我们的FPGA DAQ信号采集卡变得更加智能化、人性化,只要会一点LabVIEW,就能搞定测试测量、声音与振动、机器健康状态监测等应用开发。

        6、原位替代:ADI公司的设计理念非常好,为了减少客户PCB制版的工作量,他们竟然巧妙的将18位AD7606C跟16位AD7606芯片做成了完全引脚兼容的封装,如图1所示。这样用户就不需要做板子或者改板子了,直接从网上买一个18位的AD7606C-18芯片回来(立创商城上有卖的),然后直接焊接到原先的AD7606板子上面,即可实现原位替代。


图1:AD7606C跟AD7606芯片所有引脚完全兼容(原位替代,左边是AD7606C,右边AD7606)

        提醒:ADI设计的思路很巧妙,16位的AD7606并行模式下每次读取1个通道数据,18位的AD7606C则分成两次,第一次读取高16位,第二次读取低2位,然后左移拼接一下即可,如图2所示。所以硬件不需要改动,只要把底层读取时序改一下即可,这个在我们后续给出来的LabVIEW FPGA程序框图里面可以看到!

图2:18位的AD7606C-18芯片读取时序(每个通道分两次读取后进行拼接)


        7、芯片实物对比

        比如我们把黑金的AD7606模块上的芯片吹下来,换上网上买的AD7606C-18芯片,如图3所示,这就变成了一个18位8通道同步1MS/s采样率的模块了,价值瞬间翻几倍(@黑金,建议把AD7606C-18模块也做好放在网上卖!!!),如图4所示。

图3:将网上买的AD7606C-18芯片跟AD7606芯片互换(右边是AD7606C-18芯片)
图4:将网上买的AD7606C-18芯片焊接到黑金的AD7606模块上(完美升级)

        提醒:上面的这种芯片原位替换方式是不是要比去ADI公司买AD7606C-18 EVM评估版要划算很多,也快很多,点赞!

        8、测试环境搭建

        由于黑金的所有模块跟黑金的FPGA开发板扩展槽都是标准的40pin,所以不需要杜邦线,直接插到黑金的FPGA开发板里面即可;同时也能减少杜邦线带来的不稳定性,特别是高频时钟信号的完整性和抖动性。图5显示的是我们替换后的AD7606C-18模块跟黑金Spartan6 FPGA开发板之间硬件接线实物图;图6是AD7606C-18跟黑金ARTIX7开发板之间的接线实物图。

图5:AD7606C-18模块跟黑金Spartan6开发板接线实物图
图6:AD7606C-18模块跟黑金ARTIX7开发板接线实物图


        9、LabVIEW AD7606C-18 FPGA项目浏览器

        下面我们给用户针对Xilinx 6系列FPGA和7系列FPGA开发了AD7606C-18的LabVIEW项目工程和FPGA驱动VI。其中,图7显示的是黑金Spartan6开发板对应的AD7606C-18和AD7606C-16的FPGA项目截图;图8显示的是黑金ARTIX7开发板对应的AD7606C-18项目截图。

图7:Spartan6 FPGA终端项目浏览器(AD7606C-18和AD7606C-16)
图8:ARTIX7 FPGA终端项目浏览器(AD7606C-18)


        10、细节决定成败

        在开始编写下位机FPGA程序之前,我们还需要对AD7606C-18跟FPGA之间的引脚对应到LabVIEW FPGA项目里面的EIO节点进行参数设置。

        很多客户发现自己写的LabVIEWFPGA程序读取回来的AD通道数据,存在通道错位;还有就是明明时序仿真都是OK的,但是为什么嵌到LabVIEW FPGA里面出来的结果就不对了呢?这是什么原因造成的呢?

        其实,细心的用户会发现,封装到FPGA里面的EIO节点,有个属性参数配置页面。右击项目浏览器里面的EIO节点,选择属性,在弹出来的对话框里面,默认的参数是这样,如图9所示。

图9:LabVIEW FPGA里面封装的EIO节点默认读写存在同步寄存器导致延迟节拍

        通过查看LabVIEW帮助文档可以看到,实际上就是LabVIEW FPGA里面的EIO节点数据真正到达FPGA程序框图里面,需要经过2个同步寄存器,相当于延时了两拍(自动,就是2),而EIO节点输出作为到真正的FPGA引脚,中间需要经过1个同步寄存器,相当于延迟两拍。而我们通常在使用VHDL或者Verilog编写程序时,默认是没有同步寄存器一说的,因此写出来的时序必须要求FPGA引脚读写在一个CLK内到达的,不能存在节拍延迟的,故我们需要将AD7606C-18相关的FPGA EIO节点里面的读写同步寄存器全部改成0,如图10所示。这样就不存在延迟了,对应的时序就能很好的满足,读出来的数据也就是正确了。

图10:将EIO节点属性里面的读写同步寄存器数量全部改成0(这样就不存在延迟了)


        11、AD7606C-18 FPGA读取时序

        我们使用LabVIEW编写的AD7606C下位机FPGA程序,主要分为两类:一是使用50MHz时钟来驱动AD7606C-18时序进行8通道读取,程序框图11所示;二是使用100MHz时钟来驱动AD7606C-18读取,FPGA程序如图12所示。

图11:使用50MHz时钟来驱动AD7606C-18时序读取通道数据
图12:使用100MHz时钟来驱动AD7606C-18时序读取通道数据

        需要注意的是:如果用户选择的是45nm的Spartan6 FPGA芯片来操作AD7606C-18读取的话,由于45nm的6系列FPGA引脚时钟稳定性方面要比28nm的7系列FPGA差一些,而AD7606C-18芯片手册上的ADC内部转换一次需要0.5us~0.65us,如果要实现1MS/s采样率,那么留给读取的时间最多只有350ns,对于18位的AD7606C芯片完成8个通道扫描读取的话,需要读取16次(高16和低2位),每次读取的高电平和低电平持续时间最小不能低于10ns(芯片手册可以查询到),所以按照极限参数来计算的话,扫描读取8通道需要耗时16×2×10ns=320ns,刚好满足350ns。但是现实是残酷的,如果FPGA产生的10ns延时存在抖动和不稳定,那么就会导致FPGA从AD7606C-18读取出来的数据也会存在问题;但是AD7606C-16不会存在这个极限问题,因为16位的AD7606C芯片8个通道一共只需要读取8次就可以了。

        重要结论:如果客户打算使用45nm的Xilinx 6系列FPGA来读取AD7606C-18芯片,建议使用50MHz时钟驱动,会比较稳定,但是等效的8通道实际采样率是740KS/s左右,如果只读取AD7606C-18其中4个通道的话,可以每个通道都能达到1MS/s。当然,如果客户想要让18位的AD7606C芯片8个通道都能以1MS/s采样率工作的话,可以选择Xilinx 28nm的7系列FPGA芯片,比如ARTIX7或者Kintex7或者Virtex7.关于测试结果后续我们会展示给大家。

        12、灵活的LabVIEW FPGA编程

         需要提醒用户的是:实际上我们根据AD7606C-18芯片的时序,利用Verilog编写了驱动IP,生成网表再利用LabVIEW FPGA的IP Block节点进行调用,如图13所示,这种方式不直观;应广大企业客户需求,我们直接在LabVIEW FPGA框图里面利用状态机编程,直接将AD7606C芯片的整个操作和读取用LabVIEW FPGA编写出来了,每一步都能看到,如图14所示,这种方式具有借鉴和参考价值,今后大家都可以利用LabVIEW标准状态机来编写FPGA时序,不用怕,其实很简单,并且测试发现,利用LabVIEW标准状态机编写出来的FPGA代码要比ngc网表的还有小一些,所以不用担心FPGA资源浪费和不够用的问题。

图13:利用LabVIEW FPGA IP Block节点直接调用Verilog生成的AD7606C-18网表文件
图14:利用LabVIEW FPGA标准状态机编写AD7606C-18通道数据读取程序


        13、AD7606C-18下位机FPGA测试程序(精髓)

        虽然我们的Spartan6 FPGA具备LabVIEW FPGA下位机在线前面板调试功能,但是为了给用户全方位的展示出来LabVIEW FPGA的强大,除了下位机FPGA程序可以使用LabVIEW编写外,我们还给大家编写了一个上位机LabVIEW程序,用于接收下位机FPGA将采集到的AD7606C-18的所有原始数据放在波形图里面显示出来,当然还可以流盘或者进一步处理。

        因为在真实的应用中,不可能永远挂着下载器,必须要上位机和下位机分离,然后二者之间通过串口、USB、千兆以太网或者PCIe/PXIe进行通信。这样才是一个完整的项目和产品开发思路。

        因为我们手头的Spartan6和ARTIX7 FPGA开发板没有PCIe接口,因此,我们选择最快的千兆以太网作为上下位机之间的通信接口,当然有条件的用户还可以参考我们编写的《LabVIEW FPGA Pro5开发宝典》,使用黑金带PCIe的AX7103 FPGA开发板来进行传输。既然我们的下位机FPGA已经采集到了AD7606C-18的所有通道数据了,那么是否可以直接将其连到千兆以太网发送端的FIFO里面呢?答案是不行的!因为在本书《LabVIEW FPGA开发宝典》之前的实验16里面,给用户提供过普通AD7606芯片采集+千兆以太网通信传输的案例,但是本节实验的AD7606C-18是18位的,并非16位,如果我们想直接在前面实验16的基础上小改的话,是有一个技巧的。

        AD7606C-18芯片共有8个18bit(FXP<±18>)的通道数据,换算成bit就是8×18=144,正好是9个I16,可以想象成一个16位的AD7606但是有9个通道同时读取。因此,我们需要在FPGA里面编写一个定时循环,将AD7606C-18的8个有符号数I18转换成9个有符号数I16,如图15所示。这样后续的并转串和千兆以太网发送框架就可以保持不变了。

图15:将AD7606C-18的8个通道I18转换成9个I16(精髓)

        上图程序的精髓就在于,首先将8个通道的I18变成一维布尔数组,再首尾相连起来,然后利用数组选板里面的“一维抽取”均匀的分成9个布尔数组,这样每个数组就是16bit了,最后再把这些16bit转成I16放到之前创建好的普通AD7606 FIFO里面去,当然了,我们还专门创建了一个虚拟不存在的第9个AD7606 FIFO作为抽取出来的第9个I16。

        接下来,我们在之前实验16的“并转串线程:AD7606C-18-->U8H和U8L”里面将第9个虚拟FIFO加进去,如图16所示。

图16:将抽取出来的第9个I16 FIFO加到并转串线程里面

        最后将千兆以太网发送线程里面的UDP数据包长度改一下,这是因为必须要满足9×2=18个字节的整数倍,这样,上位机接收到UDP数据包才能正确解析出来。比如,这里面我们将UDP一帧数据包长度改成900个字节,那么实际上位机接收并解析出来的AD7606C-18芯片的每个通道数据点数就是900/2/9=50个,如图17所示。

图17:将千兆以太网UDP发送包长度改成18的整数倍(这样上位机就不会错乱)

        最后,我们给出完整的下位机FPGA芯片里面的AD7606C-18读取+千兆以太网发送的LabVIEW FPGA程序框图,如图18所示。

图18:完整的下位机FPGA芯片里面的AD7606C-18+千兆以太网发送程序框图(FPGA)

        当下位机FPGA程序写完之后,直接点击运行,即可将LabVIEW FPGA程序框图编译生成原始的FPGA可执行文件,也就是bit文件,然后下载或者固化到FPGA芯片里面运行。对这个过程不熟悉的用户可以参考本开发宝典前面第五章,这里不再赘述!

        14、AD7606C-18千兆以太网上位机通信交互程序

        最后我们给用户编写了一个上位机LabVIEW千兆以太网接收和波形显示程序,其实也可以直接参考前面实验16里面的上位机代码,上位机程序前面板,如图19所示。

图19:上位机千兆以太网接收和波形显示程序前面板(AD7606C-18)

        这个上位机程序的精髓就是,我们需要想办法将下位机FPGA发送上来的每一包900个字节里面的原始bit数据提取解析出来,还原成AD7606C-18每个通道真实的数据,然后显示在前面板的波形图控件去。

        主要的转换思想跟下位机FPGA是反过来的,首先利用数组函数选板里面的“一维数组抽取”函数将900个字节抽取成9个I16通道数据,然后再把I16变成16bit的布尔数组,再利用“一维数组交织”函数合成144bit,再利用“数组子集”拆成8个I18(有符号18位定点数,也可以表示成FXP<±18,18>),最后将所有的8个通道数据索引出来放到前面板对应的波形图控件里面显示出来。整个过程如图20所示。

图20:完整的上位机AD7606C-18千兆以太网接收显示程序(PC)


        15、测量结果

图21:信号发生器产生的10KHz、±2.5V正弦信号给到AD7606C-18采集模块

        先直接运行Spartan6 FPGA开发板上的50MHz时钟驱动的AD7606C-18程序,前面分析过,实际8个通道全部同步采集的话,最大是740KS/s(50M/67),实测结果,如图22所示。

图22:下位机LabVIEW FPGA程序前面板上的读取结果(在线前面板调试运行)

        然后打开AD7606C-18千兆以太网上位机测试程序,可以看到通道1对应的波形图控件里面出现了正弦波,如图23所示;将这个波形图单独放大之后可以看到,一个正弦周期的量化点数是74个,说明我们的AD7606C-18挂在Spartan6 FPGA下面最大同步采样率是740KS/s,如图24所示。幅度计算公式是65534/2^18×10V=2.5V(18位分辨率,AD7606输入量程±5V)。

图23:上位机前面板采集到的波形显示效果(740KS/s,8通道,±65535对应±2.5V)
图24:将通道1波形图放大之后,可以看到正好1个周期74个点,说明采样率是740KS/s

        最后我们测试一下AD7606C-18挂在28nm的ARTIX7 FPGA开发板上的实测效果。先下载A7 100M时钟驱动的AD7606C-18芯片bit文件到黑金AX7035开发板里面,经过10s之后可以看到上位机前面板上的波形图里面出现了正弦信号,如图25所示;将这个波形图放大之后可以看到一个正弦周期实际的量化点数是100个,如图26所示。说明我们的AD7606C-18在A7 FPGA下面可以达到理论的最大同步采样率1MS/s,完美!!!

图25:挂在ARTIX7 FPGA开发板下的AD7606C-18测试结果
图26:28nm的7系列FPGA芯片下AD7606C-18每个通道都能达到1MS/s



LabVIEW My FPGA重量级成员:18位8通道1MS/s同步高精度信号采集:AD7606C-18的评论 (共 条)

分享到微博请遵守国家法律