4:歷史性突破Xilinx A7、K7、V7、ZYNQ、KU等FPGA芯片的LabVIEW在線前面板交互式運行

副標題:重大更新4:上位機直接通過VI/規(guī)范/lvbitx等FPGA引用方式來訪問下位機FPGA VI前面板上的控件(高級功能,至于超高速的PCIe/PXIe DMA FIFO功能請參考本書第7、8章相關(guān)內(nèi)容)
我們始終在想一個問題:就是這幾十年市面上已有的海量的FPGA芯片、板子、板卡,起碼也有幾千萬個了,如何在不破壞板子、不飛線的情況下,還能以零成本的方式實現(xiàn)LabVIEW FPGA在線前面板交互式運行和上位機FPGA引用讀寫訪問控件的功能?我們做到了!
1、重大突破:歷時半年,終于突破了Xilinx 7系列(Artix7、Kintex7、Virtex7)、U系列(KU、KU+、VU、VU+)以及ZYNQ等家族FPGA芯片的LabVIEW在線前面板交互式運行和調(diào)試;當(dāng)然,還有以前就支持的Virtex5/Spartan3E/Spartan6等傳統(tǒng)的5系列、6系列FPGA芯片。
2、重大更新:我們是真正對市面上已有的、海量的、任何廠家的Xilinx FPGA板子或板卡,在不做任何改動,不做任何飛線、不破壞板子的情況下,借助大家所熟知的0成本的Xilinx JTAG下載器或者我們研發(fā)的SDMC FPGA Downloader以太網(wǎng)下載器,實現(xiàn)了真正意義上的FPGA VI在線前面板交互式運行和調(diào)試功能,這是我們與其他封閉式友商最大的不同!
3、重要理念:我們的LabVIEW My FPGA圖形化軟件工具包和RIO開發(fā)方案具有普適性,只有這樣,才能讓廣大用戶自由選擇市面上已有的、海量的FPGA芯片、板子、板卡或者用戶自己自由設(shè)計硬件,而不是被其他友商固定的硬件而綁架了。
4、始終秉持:“為所有想用又不敢用、正在使用和將要使用FPGA的廣大用戶,提供一套通用的國產(chǎn)化、圖形化、開源化RIO解決方案”;讓所有FPGA芯片、板子、板卡都能享受到圖形化編程的樂趣,真正擺脫友商限制,讓用戶的FPGA產(chǎn)品低成本量產(chǎn)成為可能性,并且牢牢抓住FPGA的靈魂程序!
部分摘錄:
?????? ?前面5.5節(jié)和5.6節(jié)重點向大家展示了如何借助傳統(tǒng)的Xilinx JTAG下載器以及我們自研的SDMC FPGA Downloader以太網(wǎng)下載器實現(xiàn)FPGA VI程序的LabVIEW在線前面板交互式運行和調(diào)試。
?????? ?相當(dāng)于我們只需要通過LabVIEW編寫一個下位機FPGA VI,就可以將其下載到FPGA芯片里面運行,同時前面板還活了。這個前面板既是下位機FPGA的UI,又可以看成是一個簡易的上位機調(diào)試界面;最大的優(yōu)勢是不需要再單獨編寫一個上位機程序,節(jié)約了開發(fā)和調(diào)試時間;因為單獨編寫上位機程序來配合下位機FPGA一起調(diào)試的話,往往二者之間的通信協(xié)議要設(shè)計的很完善,不然有可能會帶來一些額外的bug,最后可能都不確定是下位機FPGA程序問題還是二者之間的通信協(xié)議問題還是數(shù)據(jù)解析問題。
?????? ?本節(jié)要跟大家介紹的是LabVIEW FPGA工具包的高級功能,就是上位機LabVIEW應(yīng)用程序可以直接通過調(diào)用FPGA VI或者程序生成規(guī)范或者編譯出來的lvbitx文件,實現(xiàn)對下位機FPGA VI前面板上控件的實時訪問和控制。
?????? ?這樣就不需要用戶單獨去設(shè)計上位機跟下位機FPGA之間的通信協(xié)議了,而是由LabVIEW FPGA工具包在底層自動完成數(shù)據(jù)傳輸和協(xié)議解析,相當(dāng)于一個透明的黑匣子。無論物理上FPGA走的是PCIe/PXIe還是以太網(wǎng)通信,LabVIEW FPGA工具包都可以實現(xiàn)底層屏蔽,用戶不需要去了解底層的傳輸協(xié)議,而是上位機直接通過調(diào)用 “l(fā)vbitx/VI/程序生成規(guī)范”就可以將數(shù)據(jù)拿到以及完成對控件的讀寫。
?????? ?這種方式有利有弊,好的地方在于可以簡化上位機編程,不需要用戶自己設(shè)計傳輸協(xié)議;不好的地方在于底層LabVIEW FPGA封裝的層次太多,犧牲了一些PCIe/PXIe或者以太網(wǎng)的傳輸帶寬。
?????? ?所以,我們在設(shè)計LabVIEW My FPGA軟件工具包和編寫寶典的時候,取其長處,摒除缺點,保留了LabVIEW FPGA在線前面板交互式運行以及上位機通過“l(fā)vbitx/VI/程序生成規(guī)范”訪問下位機FPGA VI前面板上的控件功能。當(dāng)然,這些功能的實現(xiàn)離不開NI提供的上位機FPGA Interface函數(shù)選板里面的VI,如圖5-292所示。
? ? ? ? ? ? ? ? ? ? ?

????????而對那些需要實現(xiàn)連續(xù)數(shù)據(jù)流讀寫的DMA FIFO應(yīng)用來說,我們單獨開發(fā)了一套機制,優(yōu)先保留了PCIe/PXIe總線的高速傳輸帶寬(6.4Gbit/s),這樣用戶才能基于FPGA實現(xiàn)真正意義上的高速采集。關(guān)于這部分內(nèi)容請參考寶典的第7和第8章。這里不再贅述!
?????? ?接下來,我們向大家介紹并演示一下上位機LabVIEW程序是如何通過打開“FPGA VI或者FPGA程序生成規(guī)范或者lvbitx文件”引用的方式實現(xiàn)對下位機FPGA前面板上的控件讀寫。
?????? ?為了驗證基于傳統(tǒng)的Xilinx JTAG下載器和基于我們自研的SDMC FPGA Downloader以太網(wǎng)下載器,二者都可以實現(xiàn)上位機LabVIEW通過“FPGA VI引用”的方式訪問下位機FPGA前面板上的控件,下面分成兩個實驗給大家展示一下過程。
?? ?5.7.1:基于傳統(tǒng)的Xilinx JTAG下載器實現(xiàn)上位機FPGA引用的方式訪問下位機FPGA VI
?????? ?5.7.1.1:實驗平臺:Xilinx JTAG下載器+黑金AX7103 FPGA開發(fā)板(Artix7-100T)
?????? ?為了驗證基于Xilinx JTAG下載器也能通過上位機LabVIEW以FPGA VI引用的方式來控制和訪問下位機FPGA程序,我們選取本書配套的黑金AX7103 FPGA開發(fā)板來做測試,圖5-293顯示的是AX7103 FPGA開發(fā)板與Xilinx JTAG下載器互聯(lián)實物圖。

?????? ?5.7.1.2:上位機LabVIEW程序編寫(調(diào)用FPGA VI引用方式)
?????? ?1)首先,新建一個空白的上位機LabVIEW VI程序,保存一下,命名為“實驗0-通過FPGA VI引用訪問下位機FPGA控件-基于傳統(tǒng)的Xilinx JTAG下載器.vi”,如圖5-294所示。

? ? ? ??2)從“FPGA接口”函數(shù)選板里面,將第一個函數(shù)“打開FPGA VI引用”拖拽到程序框圖里面,如圖5-295所示。

? ? ? ??3)雙擊這個空白圖標,在彈出來的對話框里面,選擇“比特位文件”,然后點擊右側(cè)的“瀏覽”按鈕找到先前我們編譯好的AX7103 FPGA lvbitx文件,如圖5-296所示。除了可以通過lvbitx位文件打開下位機FPGA程序,還可以選擇上面的“程序生成規(guī)范”或者“VI”,一般情況下,都是建議通過打開lvbitx位文件最簡單,最方便。
?????? ?另外,對話框下方還有個“運行FPGA VI”復(fù)選框,默認是勾選的,我們也可以不勾選,直接在程序框圖里面通過調(diào)用FPGA VI屬性方法里面的“運行”來啟動FPGA bit文件,如圖5-297所示。


? ? ? ??4)接著放置一個while循環(huán),在循環(huán)里面通過調(diào)用“讀取/寫入控件”函數(shù)將下位機FPGA前面板上感興趣的控件全部引出來,如圖5-298所示。這樣上位機程序就可以實時觀察或者控制下位機FPGA VI前面板上的控件狀態(tài)或者數(shù)值了。

? ? ? ??5)最后,在上位機程序關(guān)閉退出之前,需要將下位機FPGA bit文件停止運行,關(guān)掉FPGA引用釋放資源,防止出現(xiàn)內(nèi)存泄漏,如圖5-299所示。

? ? ? ??6)為了更形象的展示上位機可以通過FPGA VI引用的方式控制下位機FPGA前面板,我們將引出來的控件放在上位機界面上,如圖5-300所示。

? ? ? ??注意:這個界面是上位機LabVIEW應(yīng)用程序前面板UI,不是下位機FPGA VI前面板,因為本節(jié)實驗里面我們不需要下位機FPGA VI,只需要調(diào)用編譯好的下位機FPGA lvbitx位文件即可。
?????? ?5.7.1.3:實驗現(xiàn)象(基于傳統(tǒng)的Xilinx JTAG下載器實現(xiàn)的)
?????? ?將黑金AX7103 FPGA開發(fā)板跟傳統(tǒng)的Xilinx JTAG下載器連接好之后,上電,然后運行剛剛寫好的上位機LabVIEW程序。此時,奇跡發(fā)生了,F(xiàn)PGA開發(fā)板上的4個LED閃爍了,閃爍頻率5Hz,亮滅持續(xù)時間各100ms,如圖5-301所示。

? ? ? ? 如果,我們在上位機程序前面板上將“Count(mSec)”控件里面的數(shù)值改成1000,F(xiàn)PGA開發(fā)板上的LED閃爍變慢了許多,只有0.5Hz頻率閃爍,同時前面板上的“Running_FPGA”和“儀表”里面遞增的速度也明顯變慢了,如圖5-302所示。說明上位機通過FPGA VI引用的方式成功的控制了下位機FPGA前面板上的控件。

? ? ? ? 如果我們按住黑金AX7103開發(fā)板上的KEY2按鍵,如圖5-303所示。那么上位機程序前面板上的KEY2指示燈會熄滅,如圖5-304所示,說明上位機通過FPGA VI引用的方式捕捉到了下位機FPGA前面板上的指示燈控件狀態(tài)。


? ? ? ? 至此,基于傳統(tǒng)的Xilinx JTAG下載器驗證了LabVIEW FPGA工具包里面重要的功能之一,通過FPGA VI引用的方式直接訪問和控制下位機FPGA VI前面板上的控件,完全OK。
?????? ?重大更新:需要提醒大家的是:我們是直接基于0成本的傳統(tǒng)的Xilinx JTAG下載器實現(xiàn)這個功能的,沒有對市面上的第三方FPGA板子做任何的改造,這個是我們與其他友商最大的不同!
?????? ?因為,我們始終秉持“提供國產(chǎn)化、通用化、開源化的RIO解決方案”給廣大用戶,讓這幾十年里,市面上已有的海量的任意FPGA板子都能享受到圖形化編程的樂趣,真正擺脫NI及其他友商限制,讓自己的FPGA產(chǎn)品低成本量產(chǎn)成為可能性,并且牢牢抓緊FPGA里面的靈魂程序!
?? ?5.7.2:基于我們自研的以太網(wǎng)下載器實現(xiàn)上位機FPGA引用的方式訪問下位機FPGA VI
?????? ?5.7.2.1:實驗平臺:以太網(wǎng)下載器+Digilent BASYS3 FPGA開發(fā)板(Artix7-35T)
?????? ?為了驗證基于我們自研的SDMC FPGA Downloader以太網(wǎng)下載器也能通過上位機LabVIEW打開FPGA VI引用的方式來控制和訪問下位機FPGA前面板上的控件,我們選取國外Digilent公司的BASYS3開發(fā)板來做測試,說明我們這套方案國內(nèi)外通吃。
?????? ?圖5-305顯示的是Digilent BASYS3 FPGA開發(fā)板與SDMC FPGA Downloader以太網(wǎng)下載器連接實物圖。

?????? ?5.7.2.2:上位機LabVIEW程序編寫(調(diào)用FPGA VI引用方式)
?????? ?1)首先,新建一個空白的上位機LabVIEW VI程序,保存一下,命名為“實驗0-通過FPGA VI引用訪問下位機FPGA控件-基于SDMC以太網(wǎng)下載器.vi”,如圖5-306所示。

? ? ? ? 2)從“FPGA接口”函數(shù)選板里面,將第一個函數(shù)“打開FPGA VI引用”拖拽到程序框圖里面,如圖5-307所示。

? ? ? ? 3)雙擊這個空白圖標,在彈出來的對話框里面,選擇“比特位文件”,然后點擊右側(cè)的“瀏覽”按鈕找到先前我們編譯好的BASYS3 FPGA lvbitx文件,如圖5-308所示。除了可以通過lvbitx位文件打開FPGA程序,還可以選擇上面的“程序生成規(guī)范”或者“VI”,一般情況下,都是建議通過打開lvbitx位文件最簡單,最方便。
?????? ?另外,對話框下方還有個“運行FPGA VI”復(fù)選框,默認是勾選的,我們也可以不勾選,直接在程序框圖里面通過調(diào)用FPGA VI屬性方法里面的“運行”來啟動FPGA bit文件,如圖5-309所示。


? ? ? ? 4)接著放置一個while循環(huán),在循環(huán)里面通過調(diào)用“讀取/寫入控件”函數(shù)將下位機FPGA前面板上的感興趣的控件全部引出來,如圖5-310所示。這樣上位機程序就可以實時觀察或者控制下位機FPGA前面板上的控件狀態(tài)或者數(shù)值了。

? ? ? ? 5)最后,當(dāng)上位機程序關(guān)閉退出之前,需要將下位機FPGA bit程序停止運行,關(guān)掉FPGA引用釋放資源,防止出現(xiàn)內(nèi)存泄漏,如圖5-311所示。

? ? ? ? 6)為了更形象的展示上位機可以通過FPGA VI引用的方式控制下位機FPGA前面板,我們將引出來的控件放在上位機界面上,如圖5-312所示。

? ? ? ??注意:這個界面是上位機LabVIEW應(yīng)用程序前面板UI,不是下位機FPGA VI前面板,因為本節(jié)實驗里面我們不需要下位機FPGA VI,只需要調(diào)用編譯好的下位機FPGA lvbitx位文件即可。
?????? ?5.7.2.3:實驗現(xiàn)象(基于我們自研的SDMC以太網(wǎng)下載器實現(xiàn)的)
?????? ?將Digilent BASYS3 FPGA開發(fā)板跟SDMC以太網(wǎng)下載器連接好之后,上電,然后運行剛剛寫好的上位機LabVIEW程序。此時,奇跡發(fā)生了,F(xiàn)PGA開發(fā)板上的16個LED閃爍了,閃爍頻1Hz,亮滅持續(xù)時間各500ms,如圖5-313所示。

? ? ? ? 如果,我們在上位機程序前面板上將“Count(mSec)”控件里面的數(shù)值改成100,F(xiàn)PGA開發(fā)板上的LED燈閃爍頻率明顯變快了許多,按照5Hz進行閃爍;同時前面板上的“Running_FPGA”和“儀表”里面遞增的速度也同樣變快了,如圖5-314所示。說明上位機通過FPGA VI引用的方式成功的控制了下位機FPGA前面板上的控件。

? ? ? ? 如果我們將Digilent BASYS3 FPGA開發(fā)板上的Switch撥碼開關(guān)里面的前8個sw0~sw7撥上去,如圖5-315所示。那么上位機程序前面板上的第一行8個指示燈全部點亮,如圖5-316所示,說明上位機通過FPGA VI引用的方式捕捉到了下位機FPGA前面板上的指示燈控件狀態(tài)。


? ? ? ? ?至此,基于以太網(wǎng)下載器驗證了LabVIEW FPGA工具包里面重要的功能之一,通過FPGA VI引用的方式直接訪問和控制下位機FPGA VI前面板上的控件,完全OK。?
?????? ?需要提醒大家的是:這里我們提供的第二種方法,那就是直接基于我們自研的SDMC FPGA Downloader以太網(wǎng)下載器實現(xiàn)這個功能的,并沒有對市面上的第三方FPGA板子做任何的改造,這個也是我們與其他友商最大的不同!
?????? ?因為,我們始終秉持“提供國產(chǎn)化、通用化、開源化的RIO解決方案”給廣大用戶,讓這幾十年里,市面上已有的海量的任意FPGA板子都能享受到圖形化編程的樂趣,真正擺脫NI及其他友商限制,讓自己的FPGA產(chǎn)品低成本量產(chǎn)成為可能性,并且將FPGA芯片里面的靈魂程序掌握在自己手里!