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

????????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更適合中等級別且需要同步的動態(tài)信號采集,非常適合常規(guī)電壓信號、聲音、振動、加速度等IEPE傳感器采集,220KHz模擬帶寬足以滿足絕大多數(shù)的項目應用。
?????? ?5、更加智能:用戶還可以直接在FPGA芯片里面加入LabVIEW各種濾波、FFT頻譜變換等VI算法,讓我們的FPGA DAQ信號采集卡變得更加智能化、人性化,只要會一點LabVIEW,就能搞定測試測量、聲音與振動、機器健康狀態(tài)監(jiān)測等應用開發(fā)。
?????? ?6、原位替代:ADI公司的設計理念非常好,為了減少客戶PCB制版的工作量,他們竟然巧妙的將18位AD7606C跟16位AD7606芯片做成了完全引腳兼容的封裝,如圖1所示。這樣用戶就不需要做板子或者改板子了,直接從網(wǎng)上買一個18位的AD7606C-18芯片回來(立創(chuàng)商城上有賣的),然后直接焊接到原先的AD7606板子上面,即可實現(xiàn)原位替代。

????????提醒:ADI設計的思路很巧妙,16位的AD7606并行模式下每次讀取1個通道數(shù)據(jù),18位的AD7606C則分成兩次,第一次讀取高16位,第二次讀取低2位,然后左移拼接一下即可,如圖2所示。所以硬件不需要改動,只要把底層讀取時序改一下即可,這個在我們后續(xù)給出來的LabVIEW FPGA程序框圖里面可以看到!

????????7、芯片實物對比
????????比如我們把黑金的AD7606模塊上的芯片吹下來,換上網(wǎng)上買的AD7606C-18芯片,如圖3所示,這就變成了一個18位8通道同步1MS/s采樣率的模塊了,價值瞬間翻幾倍(@黑金,建議把AD7606C-18模塊也做好放在網(wǎng)上賣?。。。?,如圖4所示。


????????提醒:上面的這種芯片原位替換方式是不是要比去ADI公司買AD7606C-18 EVM評估版要劃算很多,也快很多,點贊!
????????8、測試環(huán)境搭建
????????由于黑金的所有模塊跟黑金的FPGA開發(fā)板擴展槽都是標準的40pin,所以不需要杜邦線,直接插到黑金的FPGA開發(fā)板里面即可;同時也能減少杜邦線帶來的不穩(wěn)定性,特別是高頻時鐘信號的完整性和抖動性。圖5顯示的是我們替換后的AD7606C-18模塊跟黑金Spartan6 FPGA開發(fā)板之間硬件接線實物圖;圖6是AD7606C-18跟黑金ARTIX7開發(fā)板之間的接線實物圖。


????????9、LabVIEW AD7606C-18 FPGA項目瀏覽器
????????下面我們給用戶針對Xilinx 6系列FPGA和7系列FPGA開發(fā)了AD7606C-18的LabVIEW項目工程和FPGA驅動VI。其中,圖7顯示的是黑金Spartan6開發(fā)板對應的AD7606C-18和AD7606C-16的FPGA項目截圖;圖8顯示的是黑金ARTIX7開發(fā)板對應的AD7606C-18項目截圖。


????????10、細節(jié)決定成敗
????????在開始編寫下位機FPGA程序之前,我們還需要對AD7606C-18跟FPGA之間的引腳對應到LabVIEW FPGA項目里面的EIO節(jié)點進行參數(shù)設置。
????????很多客戶發(fā)現(xiàn)自己寫的LabVIEWFPGA程序讀取回來的AD通道數(shù)據(jù),存在通道錯位;還有就是明明時序仿真都是OK的,但是為什么嵌到LabVIEW FPGA里面出來的結果就不對了呢?這是什么原因造成的呢?
????????其實,細心的用戶會發(fā)現(xiàn),封裝到FPGA里面的EIO節(jié)點,有個屬性參數(shù)配置頁面。右擊項目瀏覽器里面的EIO節(jié)點,選擇屬性,在彈出來的對話框里面,默認的參數(shù)是這樣,如圖9所示。

????????通過查看LabVIEW幫助文檔可以看到,實際上就是LabVIEW FPGA里面的EIO節(jié)點數(shù)據(jù)真正到達FPGA程序框圖里面,需要經(jīng)過2個同步寄存器,相當于延時了兩拍(自動,就是2),而EIO節(jié)點輸出作為到真正的FPGA引腳,中間需要經(jīng)過1個同步寄存器,相當于延遲兩拍。而我們通常在使用VHDL或者Verilog編寫程序時,默認是沒有同步寄存器一說的,因此寫出來的時序必須要求FPGA引腳讀寫在一個CLK內到達的,不能存在節(jié)拍延遲的,故我們需要將AD7606C-18相關的FPGA EIO節(jié)點里面的讀寫同步寄存器全部改成0,如圖10所示。這樣就不存在延遲了,對應的時序就能很好的滿足,讀出來的數(shù)據(jù)也就是正確了。

????????11、AD7606C-18 FPGA讀取時序
????????我們使用LabVIEW編寫的AD7606C下位機FPGA程序,主要分為兩類:一是使用50MHz時鐘來驅動AD7606C-18時序進行8通道讀取,程序框圖11所示;二是使用100MHz時鐘來驅動AD7606C-18讀取,F(xiàn)PGA程序如圖12所示。


????????需要注意的是:如果用戶選擇的是45nm的Spartan6 FPGA芯片來操作AD7606C-18讀取的話,由于45nm的6系列FPGA引腳時鐘穩(wěn)定性方面要比28nm的7系列FPGA差一些,而AD7606C-18芯片手冊上的ADC內部轉換一次需要0.5us~0.65us,如果要實現(xiàn)1MS/s采樣率,那么留給讀取的時間最多只有350ns,對于18位的AD7606C芯片完成8個通道掃描讀取的話,需要讀取16次(高16和低2位),每次讀取的高電平和低電平持續(xù)時間最小不能低于10ns(芯片手冊可以查詢到),所以按照極限參數(shù)來計算的話,掃描讀取8通道需要耗時16×2×10ns=320ns,剛好滿足350ns。但是現(xiàn)實是殘酷的,如果FPGA產(chǎn)生的10ns延時存在抖動和不穩(wěn)定,那么就會導致FPGA從AD7606C-18讀取出來的數(shù)據(jù)也會存在問題;但是AD7606C-16不會存在這個極限問題,因為16位的AD7606C芯片8個通道一共只需要讀取8次就可以了。
?????? ?重要結論:如果客戶打算使用45nm的Xilinx 6系列FPGA來讀取AD7606C-18芯片,建議使用50MHz時鐘驅動,會比較穩(wěn)定,但是等效的8通道實際采樣率是740KS/s左右,如果只讀取AD7606C-18其中4個通道的話,可以每個通道都能達到1MS/s。當然,如果客戶想要讓18位的AD7606C芯片8個通道都能以1MS/s采樣率工作的話,可以選擇Xilinx 28nm的7系列FPGA芯片,比如ARTIX7或者Kintex7或者Virtex7.關于測試結果后續(xù)我們會展示給大家。
????????12、靈活的LabVIEW FPGA編程
?????????需要提醒用戶的是:實際上我們根據(jù)AD7606C-18芯片的時序,利用Verilog編寫了驅動IP,生成網(wǎng)表再利用LabVIEW FPGA的IP Block節(jié)點進行調用,如圖13所示,這種方式不直觀;應廣大企業(yè)客戶需求,我們直接在LabVIEW FPGA框圖里面利用狀態(tài)機編程,直接將AD7606C芯片的整個操作和讀取用LabVIEW FPGA編寫出來了,每一步都能看到,如圖14所示,這種方式具有借鑒和參考價值,今后大家都可以利用LabVIEW標準狀態(tài)機來編寫FPGA時序,不用怕,其實很簡單,并且測試發(fā)現(xiàn),利用LabVIEW標準狀態(tài)機編寫出來的FPGA代碼要比ngc網(wǎng)表的還有小一些,所以不用擔心FPGA資源浪費和不夠用的問題。


????????13、AD7606C-18下位機FPGA測試程序(精髓)
????????雖然我們的Spartan6 FPGA具備LabVIEW FPGA下位機在線前面板調試功能,但是為了給用戶全方位的展示出來LabVIEW FPGA的強大,除了下位機FPGA程序可以使用LabVIEW編寫外,我們還給大家編寫了一個上位機LabVIEW程序,用于接收下位機FPGA將采集到的AD7606C-18的所有原始數(shù)據(jù)放在波形圖里面顯示出來,當然還可以流盤或者進一步處理。
????????因為在真實的應用中,不可能永遠掛著下載器,必須要上位機和下位機分離,然后二者之間通過串口、USB、千兆以太網(wǎng)或者PCIe/PXIe進行通信。這樣才是一個完整的項目和產(chǎn)品開發(fā)思路。
????????因為我們手頭的Spartan6和ARTIX7 FPGA開發(fā)板沒有PCIe接口,因此,我們選擇最快的千兆以太網(wǎng)作為上下位機之間的通信接口,當然有條件的用戶還可以參考我們編寫的《LabVIEW FPGA Pro5開發(fā)寶典》,使用黑金帶PCIe的AX7103 FPGA開發(fā)板來進行傳輸。既然我們的下位機FPGA已經(jīng)采集到了AD7606C-18的所有通道數(shù)據(jù)了,那么是否可以直接將其連到千兆以太網(wǎng)發(fā)送端的FIFO里面呢?答案是不行的!因為在本書《LabVIEW FPGA開發(fā)寶典》之前的實驗16里面,給用戶提供過普通AD7606芯片采集+千兆以太網(wǎng)通信傳輸?shù)陌咐?,但是本?jié)實驗的AD7606C-18是18位的,并非16位,如果我們想直接在前面實驗16的基礎上小改的話,是有一個技巧的。
????????AD7606C-18芯片共有8個18bit(FXP<±18>)的通道數(shù)據(jù),換算成bit就是8×18=144,正好是9個I16,可以想象成一個16位的AD7606但是有9個通道同時讀取。因此,我們需要在FPGA里面編寫一個定時循環(huán),將AD7606C-18的8個有符號數(shù)I18轉換成9個有符號數(shù)I16,如圖15所示。這樣后續(xù)的并轉串和千兆以太網(wǎng)發(fā)送框架就可以保持不變了。

????????上圖程序的精髓就在于,首先將8個通道的I18變成一維布爾數(shù)組,再首尾相連起來,然后利用數(shù)組選板里面的“一維抽取”均勻的分成9個布爾數(shù)組,這樣每個數(shù)組就是16bit了,最后再把這些16bit轉成I16放到之前創(chuàng)建好的普通AD7606 FIFO里面去,當然了,我們還專門創(chuàng)建了一個虛擬不存在的第9個AD7606 FIFO作為抽取出來的第9個I16。
?????? ?接下來,我們在之前實驗16的“并轉串線程:AD7606C-18-->U8H和U8L”里面將第9個虛擬FIFO加進去,如圖16所示。

? ? ? ? 最后將千兆以太網(wǎng)發(fā)送線程里面的UDP數(shù)據(jù)包長度改一下,這是因為必須要滿足9×2=18個字節(jié)的整數(shù)倍,這樣,上位機接收到UDP數(shù)據(jù)包才能正確解析出來。比如,這里面我們將UDP一幀數(shù)據(jù)包長度改成900個字節(jié),那么實際上位機接收并解析出來的AD7606C-18芯片的每個通道數(shù)據(jù)點數(shù)就是900/2/9=50個,如圖17所示。

????????最后,我們給出完整的下位機FPGA芯片里面的AD7606C-18讀取+千兆以太網(wǎng)發(fā)送的LabVIEW FPGA程序框圖,如圖18所示。

????????當下位機FPGA程序寫完之后,直接點擊運行,即可將LabVIEW FPGA程序框圖編譯生成原始的FPGA可執(zhí)行文件,也就是bit文件,然后下載或者固化到FPGA芯片里面運行。對這個過程不熟悉的用戶可以參考本開發(fā)寶典前面第五章,這里不再贅述!
????????14、AD7606C-18千兆以太網(wǎng)上位機通信交互程序
????????最后我們給用戶編寫了一個上位機LabVIEW千兆以太網(wǎng)接收和波形顯示程序,其實也可以直接參考前面實驗16里面的上位機代碼,上位機程序前面板,如圖19所示。

????????這個上位機程序的精髓就是,我們需要想辦法將下位機FPGA發(fā)送上來的每一包900個字節(jié)里面的原始bit數(shù)據(jù)提取解析出來,還原成AD7606C-18每個通道真實的數(shù)據(jù),然后顯示在前面板的波形圖控件去。
????????主要的轉換思想跟下位機FPGA是反過來的,首先利用數(shù)組函數(shù)選板里面的“一維數(shù)組抽取”函數(shù)將900個字節(jié)抽取成9個I16通道數(shù)據(jù),然后再把I16變成16bit的布爾數(shù)組,再利用“一維數(shù)組交織”函數(shù)合成144bit,再利用“數(shù)組子集”拆成8個I18(有符號18位定點數(shù),也可以表示成FXP<±18,18>),最后將所有的8個通道數(shù)據(jù)索引出來放到前面板對應的波形圖控件里面顯示出來。整個過程如圖20所示。

????????15、測量結果

????????先直接運行Spartan6 FPGA開發(fā)板上的50MHz時鐘驅動的AD7606C-18程序,前面分析過,實際8個通道全部同步采集的話,最大是740KS/s(50M/67),實測結果,如圖22所示。

????????然后打開AD7606C-18千兆以太網(wǎng)上位機測試程序,可以看到通道1對應的波形圖控件里面出現(xiàn)了正弦波,如圖23所示;將這個波形圖單獨放大之后可以看到,一個正弦周期的量化點數(shù)是74個,說明我們的AD7606C-18掛在Spartan6 FPGA下面最大同步采樣率是740KS/s,如圖24所示。幅度計算公式是65534/2^18×10V=2.5V(18位分辨率,AD7606輸入量程±5V)。


????????最后我們測試一下AD7606C-18掛在28nm的ARTIX7 FPGA開發(fā)板上的實測效果。先下載A7 100M時鐘驅動的AD7606C-18芯片bit文件到黑金AX7035開發(fā)板里面,經(jīng)過10s之后可以看到上位機前面板上的波形圖里面出現(xiàn)了正弦信號,如圖25所示;將這個波形圖放大之后可以看到一個正弦周期實際的量化點數(shù)是100個,如圖26所示。說明我們的AD7606C-18在A7 FPGA下面可以達到理論的最大同步采樣率1MS/s,完美!??!

