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

副標題:重大更新2:利用神電測控研發(fā)的SDMC以太網(wǎng)下載器下載6系列7系列(Spartan6、Artix7、Kintex7、Virtex7、ZYNQ)LabVIEW FPGA程序(支持在線前面板交互式運行和調(diào)試)
我們始終在想一個問題:就是這幾十年市面上已有的海量的FPGA芯片、板子、板卡,起碼也有幾千萬個了,如何在不破壞板子、不飛線的情況下,還能以零成本的方式實現(xiàn)LabVIEW FPGA在線前面板交互式運行和上位機FPGA引用讀寫訪問控件的功能?我們做到了!
1、重大突破:歷時半年,終于突破了Xilinx 7系列(Artix7、Kintex7、Virtex7)、U系列(KU、KU+、VU、VU+)以及ZYNQ等家族FPGA芯片的LabVIEW在線前面板交互式運行和調(diào)試;當然,還有以前就支持的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芯片、板子、板卡或者用戶自己自由設計硬件,而不是被其他友商固定的硬件而綁架了。
4、始終秉持:“為所有想用又不敢用、正在使用和將要使用FPGA的廣大用戶,提供一套通用的國產(chǎn)化、圖形化、開源化RIO解決方案”;讓所有FPGA芯片、板子、板卡都能享受到圖形化編程的樂趣,真正擺脫友商限制,讓用戶的FPGA產(chǎn)品低成本量產(chǎn)成為可能性,并且牢牢抓住FPGA的靈魂程序!
部分摘錄:
???? 5.6.1:為什么要開發(fā)一個新的基于以太網(wǎng)的FPGA下載器?
????? ?市面上有很多FPGA板子沒有預留出JTAG下載口,而是集成了Digilent HS1/2/3系列下載器,比如黑金的ZYNQ開發(fā)板、Digilent官方開發(fā)板等等;如果想對這樣的FPGA板子讓其支持LabVIEW FPGA在線前面板交互式運行調(diào)試的話,要么將JTAG口飛線飛出來,顯然不太可能,因為FPGA板子上的阻容件封裝一般都是0201,太小了,萬一把板子整壞了,就得不償失了。
????????看過寶典前面5.5節(jié)內(nèi)容的都知道,目前支持LabVIEW FPGA在線前面板交互式運行的下載器是Xilinx JTAG下載器,如果FPGA硬件連JTAG口都沒有留的話,那就巧婦難為無米之炊了。那我們還能不能在不破壞FPGA板子的前提下,實現(xiàn)LabVIEW FPGA在線前面板交互式運行呢?答案是肯定的!
????????為了解決上面這個痛點,我們花費半年時間重新研發(fā)了一款支持遠程下載的以太網(wǎng)下載器,名為“SDMC FPGA Downloader”,如圖5-152所示。用戶只需要在FPGA板子上面隨便找6個FPGA IO引腳,就能實現(xiàn)FPGA VI前面板運行和通過上位機FPGA VI引用方式讀寫訪問前面板控件!
? ? ? ? ? ?

????????相比于傳統(tǒng)的USB下載器,這款SDMC FPGA Downloader下載器支持以太網(wǎng)遠程下載,更方便、更靈活!
????????結論就是:我們自研的以太網(wǎng)下載器可以在不改變FPGA板子的情況下,實現(xiàn)LabVIEW FPGA VI程序的遠程下載、在線前面板交互式運行、調(diào)試和bit文件固化。
????????5.6.2:以太網(wǎng)下載器“SDMC FPGA Downloader”工作原理和產(chǎn)品特點
????????關于這款SDMC FPGA Downloader以太網(wǎng)下載器有幾點需要大家記?。?/p>
?????? ?1)以太網(wǎng)下載器默認的IP地址是:192.168.4.1,連接電腦的時候,一定要把網(wǎng)卡IP地址前3位設置為相同的192.168.4.*,最后一位不能是1也不能是255.
?????? ?2)這款以太網(wǎng)下載器上面有一個復位按鍵,如果后續(xù)因為SPI接線錯誤導致上面的ARM芯片死機的話,可以按下這個復位鍵重新啟動程序。
?????? ?3)這款以太網(wǎng)下載可以單獨外部5V供電,如果一時找不到合適的電源,也可以單獨從FPGA板子上取3.3V給下載器供電。
?????? ?4)這款以太網(wǎng)下載器的工作原理,并不是模擬JTAG協(xié)議,而是通過模擬SPI總線協(xié)議跟FPGA進行交互。比如,利用SPI總線從FPGA寄存器里面讀取數(shù)據(jù)再通過以太網(wǎng)返回給FPGA VI前面板,同理,也可以將FPGA VI前面板上的控件數(shù)值先經(jīng)過以太網(wǎng)下發(fā)給ARM處理器,再由ARM模擬SPI協(xié)議對FPGA寄存器進行寫操作。所以只需要FPGA的任意6個引腳就能實現(xiàn)這個SPI總線協(xié)議。關于以太網(wǎng)下載器上的6個SPI引腳定義,如圖5-153所示。后面我們通過杜邦線將這6個引腳跟FPGA開發(fā)板上引出來的IO引腳相連,即可實現(xiàn)LabVIEW FPGA在線前面板交互式運行和調(diào)試。

????????當然,別忘了跟FPGA板子之間共地,算上GND的話,以太網(wǎng)下載器一共需要7根杜邦線才能跟FPGA板子進行互聯(lián)通信。
????????5)除了GND外,以太網(wǎng)下載器板子上的6根SPI通信信號分別是:CS(片選)、CLK(時鐘)、MOSI、DIN(MISO)、INIT_B(RW)、VALID(BUSY)、PROG_B(不算);而FPGA xdc約束文件里面定義的6個SPI引腳可以隨意選擇,比如,圖5-154所示。注意:選擇的FPGA IO電平必須是3.3V的,因為我們的以太網(wǎng)下載器上的端口電壓是3.3V電平。

????????其中,需要注意的是:
1)以太網(wǎng)下載器上的CS要跟FPGA xdc約束文件里面定義的SPI總線的HS_SS相連;
2)以太網(wǎng)下載器上的CLK要跟FPGA xdc約束文件里面定義的SPI總線的HS_SCLK相連;
3)以太網(wǎng)下載器上的MOSI要跟FPGA xdc約束文件里面定義的SPI總線的HS_MISO相連;
4)以太網(wǎng)下載器上的DIN要跟FPGA xdc約束文件里面定義的SPI總線的HS_MOSI相連;
5)以太網(wǎng)下載器上的INIT_B要跟FPGA xdc約束文件里面定義的SPI總線的HS_RW相連;
6)以太網(wǎng)下載器上的VALID要跟FPGA xdc約束文件里面定義的SPI總線的HS_VD相連;
7)以太網(wǎng)下載器上的PROG_B默認懸空不用接。只有在一種特殊情況下,才需要將其跟FPGA芯片上的PROG_B編程引腳相連,那就是當我們需要借助這個以太網(wǎng)下載器將上位機或者以太網(wǎng)下載器板載Flash里面的FPGA bit文件直接寫入FPGA芯片里面運行。
????????很多廠家的FPGA板子默認會把FPGA芯片的PROG_B引腳上拉后接到一個復位按鍵上,這樣用戶就可以手動借助這個按鍵進行程序復位加載;本質(zhì)上類似,只不過平時手動按壓FPGA PROG按鍵,變成了由我們以太網(wǎng)下載器上的PROG_B信號來自動控制FPGA芯片的PROG引腳,隨時讓FPGA進入編程下載接收bit文件狀態(tài)。
?????? ?6)這個以太網(wǎng)下載器上面集成了一顆Flash芯片,可用于保存上位機通過以太網(wǎng)下發(fā)的FPGA bit文件,相當于將LabVIEW FPGA VI程序固化到以太網(wǎng)下載器里面了,因此,F(xiàn)PGA開發(fā)板上的Flash芯片實際上是不需要的,因為以太網(wǎng)下載器上已經(jīng)有了Flash。
?????? ?7)如果我們只需要利用以太網(wǎng)下載器實現(xiàn)FPGA VI在線前面板交互式運行和調(diào)試,那可以隨便將其接到FPGA的6個IO引腳上即可;如果想通過以太網(wǎng)下載器將上位機的FPGA VI程序直接寫入到FPGA里面運行,就像傳統(tǒng)的Xilinx JTAG或者Digilent HS系列下載器那樣,那么我們需要將以太網(wǎng)下載器的6根SPI總線必須接到FPGA芯片固定的6個引腳上。這6個引腳其實就是FPGA開發(fā)板上的Flash芯片所在的那幾個引腳,同時還需要將6系列FPGA的M0M1引腳拉高也就是M0M1=11;如果是7系列則需要將M0M1M2引腳拉高(M0M1M2=111),讓FPGA處于Slave從設備模式,然后我們的以太網(wǎng)下載器充當主設備,這樣就可以通過以太網(wǎng)下載器將FPGA bit文件寫入到FPGA芯片里面運行了。關于FPGA Slave從設備配置的相關介紹和引腳接線,我們會在后續(xù)5.6.6節(jié)里面做具體的介紹和演示。這里不再贅述!
????????提醒:國外很多FPGA板子考慮的全面一些,會把配置FPGA工作模式的M0M1M2關鍵性引腳引出來,這樣用戶就可以通過跳線帽短接的方式來實現(xiàn)上拉還是下拉,就能很方便的配置FPGA做主設備還是從設備;國內(nèi)的FPGA開發(fā)板廠家一般焊死了,必須要拆電阻飛線才行;因此,建議大家以后自己設計FPGA產(chǎn)品的時候,盡量將M0M1M2和JTAG引出來,方便后續(xù)二次開發(fā)。
?????? ?8)FPGA經(jīng)過這幾十年發(fā)展,市面上已經(jīng)存在的、海量的、可靠的FPGA硬件,最好不要對板子做硬件改動,直接用傳統(tǒng)的Xilinx JTAG下載器或者我們這里面的以太網(wǎng)下載器來實現(xiàn)LabVIEW FPGA在線前面板交互式運行,效果最好,零成本!
????????如果是用戶自己重新設計板子的話,可以考慮將我們的以太網(wǎng)下載器整體集成到FPGA板子上面,這樣就等于實現(xiàn)了支持網(wǎng)口調(diào)試的RIO板卡了。
????????下面的3D PCB圖5-155、5-156和5-157是我們合作伙伴針對醫(yī)療場景開發(fā)的多用途FPGA RIO產(chǎn)品。



????????我們一貫秉持的理念是“不對市面上已有的FPGA硬件做任何改動,堅持以0成本的方式,讓其支持LabVIEW圖形化編程開發(fā),同時支持在線前面板交互式運行和調(diào)試,讓這些已經(jīng)存在的海量的FPGA硬件NI化,圖形化,虛擬儀器化”。
????????5.6.3:LabVIEW FPGA開發(fā)環(huán)境準備工作
????????由于本節(jié)我們采用的是SDMC FPGA Downloader以太網(wǎng)下載器,不需要安裝任何驅(qū)動,因為所有的系統(tǒng)默認都支持TCP/UDP網(wǎng)絡協(xié)議。
????????所以,也就不需要Xilinx的IMPACT工具和NICobs驅(qū)動了,故前面的4號ISE編譯器和6號DEFB驅(qū)動包可以不用安裝。當然,如果用戶想同時具備傳統(tǒng)的Xilinx JTAG下載器和我們這個新型的以太網(wǎng)下載器,來實現(xiàn)LabVIEW FPGA VI程序下載和在線前面板交互式運行的話,那就全部安裝上,一勞永逸!
????????5.6.4:LabVIEW FPGA VI程序驗證平臺
????????由于米聯(lián)客的FPGA開發(fā)板,上面默認預留的IO接口封裝是FEP,如圖5-158所示,不是標準的2.54mm間距的插針,所以我們無法將以太網(wǎng)下載器直接通過杜邦線接到其中任意6個引腳上面,故米聯(lián)客的MA7K325和KU040開發(fā)板的測試工作,就不參與本節(jié)實驗演示了。
????????實際上,我們以及廣大用戶平時積累了大量的測試和開發(fā)經(jīng)驗,得出結論:那就是無論是Xilinx高端的Kintex7/Virtex7還是Kintex/Virtex UltraScale還是Kintex/Virtex UltraScale Plus,都能通過我們這個以太網(wǎng)下載器實現(xiàn)在線前面板交互式運行和調(diào)試。

(故不參與本節(jié)測試)
????????為了驗證基于我們這個新型以太網(wǎng)下載器(SDMC FPGA Downloader)可以實現(xiàn)LabVIEW FPGA在線前面板交互式運行和調(diào)試的效果,我們準備了3個廠家,7款不同的6系列、7系列和ZYNQ家族的FPGA開發(fā)板來驗證。
????????分別是:
?????? ?1)黑金AX516/AX545開發(fā)板(Spartan6-LX16/LX45);
?????? ?2)黑金AX7035開發(fā)板(主芯片Artix7-35T);
?????? ?3)黑金AX7103開發(fā)板(主芯片Artix7-100T);
?????? ?4)黑金AX7A200開發(fā)板(主芯片Artix7-200T);
?????? ?5)黑金AX7020開發(fā)板(主芯片ZYNQ7020);
?????? ?6)正點原子的達芬奇Pro開發(fā)板(主芯片Artix7-100T);
?????? ?7)Digilent公司的BASYS3開發(fā)板(主芯片Artix7-35T);
????????以上7款FPGA開發(fā)板對應的實物圖,分別如圖5-159~5-165所示。另外,我們平時還經(jīng)常用到一款黑金的K7-325T開發(fā)板AX7K325,由于手頭這塊板子用在項目上了,所以本節(jié)也不對其做單獨的講解。對于手頭有這塊板子的用戶,在學完本節(jié)內(nèi)容之后可以自己嘗試驗證一下在線前面板交互式運行和調(diào)試功能。
????????關于這些廠家的FPGA板子,前面第4章里面做過詳細的講解,當然,大家也可以在各個廠家官網(wǎng)或者淘寶上找到更多信息,這些板子也是目前市面上存量最多的板子,性價比高,資料豐富,原理圖和元器件庫都是開源的,方便用戶學會之后自己二次開發(fā),相比于國外的FPGA板子,國內(nèi)的FPGA廠家更加人性化!
? ? ? ? ? ? ? ? ? ? ? ? ?


?





????????其中,黑金的ZYNQ開發(fā)板和Digilent公司的BASYS3開發(fā)板上集成了Digilent HS1/2/3系列下載器,并且沒有將JTAG口單獨預留出來,所以也就無法直接接入傳統(tǒng)的Xilinx JTAG下載器。
????????但是不用擔心,本節(jié)我們就給大家展示一下,如何借助我們神電測控研發(fā)的SDMC FPGA Downloader以太網(wǎng)下載器來完成FPGA在線前面板交互式運行、仿真、調(diào)試。
????????同理,如果用戶自己做的或者其他廠家的ZYNQ板子上預留了JTAG下載口,那么可以參考前面5.5節(jié)的方法,也就是借助傳統(tǒng)的Xilinx JTAG下載器實現(xiàn)在線前面板交互式運行和調(diào)試。
????????5.6.5:LabVIEW FPGA VI程序編寫與編譯
????????為了驗證我們的SDMC FPGA Downloader以太網(wǎng)下載可以支持Xilinx 6系列、7系列(Artix7、Kintex7、Virtex7)和ZYNQ系列FPGA VI的LabVIEW前面板在線運行和調(diào)試功能,我們可以重新編寫一個FPGA VI程序,通過控制第三方FPGA開發(fā)板上的LED燈閃爍頻率以及實時捕捉開發(fā)板上的按鍵或者開關狀態(tài),來展示LabVIEW FPGA在線前面板交互式運行的強大之處。
?????? ?我們可以通過修改前面板的寫入控件數(shù)值來實時動態(tài)的改變FPGA芯片里面的程序運行周期,并且將按鍵狀態(tài)實時呈現(xiàn)在FPGA VI前面板上,而不需要單獨去編寫上位機VI來跟下位機FPGA通信,極大的減少了開發(fā)工作量。
???? ?更不需要因為要改動一個參數(shù)而去反復編譯下位機FPGA VI程序,節(jié)約大量寶貴的時間,降低了時間成本,這就是LabVIEW FPGA在線前面板交互式運行調(diào)試的強大之處。
????????5.6.5.1:新建LabVIEW項目瀏覽器
????????點擊LabVIEW左上角的“文件”-->“新建(N)”-->“項目”,新建一個空白的LabVIEW項目瀏覽器,保存一下,命名為“LabVIEW 6 and 7 and ZYNQ Serials FPGA Project-SDMC FPGA Downloader.lvproj”,如圖5-166所示。

????????5.6.5.2:新建FPGA終端設備
????????在剛剛新建出來的項目瀏覽器里面“我的電腦”上右擊,選擇“新建”à“終端和設備”,如圖5-167所示;然后在彈出來的終端設備列表里面,找到上面3個廠家7款開發(fā)板對應的FPGA終端名稱,如圖5-168(abcd)所示。








? ? ? ? 選中之后雙擊或者點擊“確定”按鈕,即可將這7個FPGA開發(fā)板對應的FPGA終端添加到LabVIEW項目里面來,如圖5-169所示。

????????展開之后,可以看到每個廠家的系統(tǒng)板載晶振不盡相同:黑金喜歡在帶PCIe接口的高端7系列FPGA板子上,將板載晶振弄成200MHz差分時鐘,低端的ZYNQ和7系列FPGA開發(fā)板上使用的是50MHz晶振;正點原子喜歡用更低的50MHz單端板載晶振;米聯(lián)客和Digilent公司則在二者之間取了一個中間值,比如100MHz單端時鐘。
????????實際上,F(xiàn)PGA默認的系統(tǒng)Onboard時鐘晶振頻率太高和太低都不太好。太高會導致LabVIEW里面的普通while循環(huán)編譯容易出現(xiàn)定時錯誤(不滿足時鐘約束);太低的話,很多線程需要通過PLL或者MMCM進行倍頻才能通過提高定時循環(huán)速度(時鐘域)來減少FPGA硬件資源的消耗。?
????????注意:在傳統(tǒng)的VHDL或者Verilog語言里面是沒有普通while循環(huán)這個概念的,都是通過posedge或者negedge時鐘來驅(qū)動線程的,相當于LabVIEW FPGA里面的定時循環(huán),而NI為了方便廣大用戶的使用習慣,將上位機最常用到的普通while循環(huán)也做到下位機FPGA里面來了!
????????因此,我們建議:用戶在設計自己的FPGA板卡時,盡量選取中間檔位的時鐘頻率,比如50MHz或者100MHz,如果對NI比較熟悉的用戶應該知道,NI更喜歡用板載40MHz晶振作為系統(tǒng)時鐘。
????????為了更加形象生動的展示FPGA VI前面板的在線交互式運行和調(diào)試,我們可以右擊FPGA終端設備名稱,選擇添加“FPGA I/O”,然后將LED指示燈和KEY按鍵對應的FPGA引腳資源(EIO節(jié)點)添加到FPGA里面來,如圖5-170所示。

????????5.6.5.3:編寫FPGA VI程序
?????? ?接下來,可以通過編寫一個LabVIEW FPGA VI程序來驗證我們這款SDMC FPGA Downloader以太網(wǎng)下載器是如何完美的支持Xilinx 6系列、7系列、ZYNQ系列FPGA在線前面板交互式運行和調(diào)試功能的。
?????? ?這個FPGA VI程序的具體編寫過程,這里就不再詳細展開了。因為程序框圖比較簡單,我們直接給出7個FPGA開發(fā)板終端對應的FPGA VI前面板和程序框圖,分別如圖5-171~5-177所示。














? ? ? ? 這7個FPGA VI實現(xiàn)的功能都是相同的,那就是通過while循環(huán)實時捕捉FPGA開發(fā)板上的按鍵狀態(tài),并在前面板上通過布爾指示燈顯示出來;另外一個功能是通過周期性取反來控制FPGA板子上的LED指示燈進行閃爍,閃爍頻率則由前面板上的輸入控件“控制循環(huán)周期(mSec)”里面的數(shù)值來決定;最后整個while循環(huán)的運行次數(shù),也就是i值通過顯示控件“Running”和“儀表”顯示在前面板上。
?????? ?傳統(tǒng)的VHDL和Verilog是沒有辦法實現(xiàn)UI界面的,所以每次修改一個參數(shù)都需要重新花費大量的時間編譯,而我們的LabVIEW FPGA天生就有一個前面板充當UI調(diào)試界面,這個與生俱來的功能就是本書重點強調(diào)的LabVIEW FPGA在線前面板交互式運行仿真調(diào)試。
?????? ?5.6.5.4:編譯FPGA VI程序
?????? ?FPGA VI程序編寫完成后,接下來就是編譯了,用戶只需要點擊一下FPGA VI前面板左上角的運行箭頭,即可彈出編譯提示對話框。首次彈出會自動創(chuàng)建一個程序生成規(guī)范,用戶需要在程序生成規(guī)范里面勾選“加載至FPGA時運行”,不然后續(xù)即使將FPGA bit可執(zhí)行文件固化到Flash芯片里面,F(xiàn)PGA加載后也是不會執(zhí)行的。因此,我們提前將這一步做掉,即在程序生成規(guī)范里面勾選“加載至FPGA時運行”,如圖5-178所示。

? ? ? ? 當我們點擊FPGA VI運行箭頭,會彈出編譯器選擇對話框,如圖5-179所示,選擇默認的第一項“使用本地編譯服務器”,因為我們在前面第3章的時候已經(jīng)將NI裁剪過的Vivado編譯器安裝到本地計算機上了。當然也可以選擇網(wǎng)絡服務器或者NI云編譯,關于這兩個選項的講解,請參考前面5.3節(jié)相關內(nèi)容,這里不再贅述!

? ? ? ? 點擊“確定”按鈕后,LabVIEW會自動將FPGA VI程序框圖轉(zhuǎn)換成VHDL代碼,如圖5-180所示。

? ? ? ? 然后經(jīng)過綜合、布局布線、時間約束等步驟后,如果一切順利,大概兩三分鐘后,LabVIEW FPGA編譯狀態(tài)窗口會提示編譯完成,如圖5-181,通過這個編譯狀態(tài)窗口,可以看到當前消耗的FPGA芯片內(nèi)部資源情況。
?????? ?提醒:本節(jié)編譯很順利,不會報錯,跟前面5.3節(jié)里面不一樣,因為我們已經(jīng)突破了6系列、7系列和ZYNQ系列的FPGA編譯、下載和在線前面板交互式運行和調(diào)試功能。

? ? ? ? 當上面編譯完成后,會彈出一個“正在準備交互式執(zhí)行”,如圖5-182所示。想必用過NI或者看過我們Pro1寶典的用戶都很熟悉,這個正是LabVIEW FPGA啟動在線前面板交互式運行調(diào)試功能的提示框;如果大家還沒有將我們開發(fā)的SDMC FPGA Downloader以太網(wǎng)下載器和FPGA開發(fā)板接到這臺電腦,等一會會彈出一個超時錯誤對話框,提醒用戶網(wǎng)絡連接錯誤,也就是說主機找不到SDMC FPGADownloader以太網(wǎng)下載器,如圖5-183所示。如果以太網(wǎng)下載器確實接到了電腦上,并且供電也正常的話,那就檢查一下計算機網(wǎng)卡的IP地址是不是設置在相同網(wǎng)段內(nèi),最簡單的方式就是ping一下以太網(wǎng)下載器的IP地址,看看是否有回應。注意:以太網(wǎng)下載器的IP地址默認是192.168.4.1


? ? ? ??注意:很多用戶關心的是Vivado編譯器編譯出來的原始bit文件,而不是NI的lvbitx文件,因為原始的bit文件更靈活更方便,將這個原始的bit文件發(fā)給任何人都可以通過任何手段下載到FPGA里面運行;為了方便廣大用戶隨時隨地得到原始的FPGA bit文件,我們特地在FPGA終端里面增加了幾個自定義菜單項,用戶只需要在FPGA終端下的VI名稱上右擊就能看到,如圖5-184所示。
?????? ?這幾個功能非常強大,是我們在后臺幫大家實現(xiàn)的,也就是說,用戶再也不需要像前面5.3節(jié)那樣一直開著獲取bit文件的程序才能得到原始bit文件。很明顯經(jīng)過我們重大更新后的寶典和My FPGA工具包更方便、更易用,體驗效果跟NI完全一樣!

? ? ? ? 下面,我們依次介紹一下每個菜單項的功能和用法:
?????? ?1)“Generate Raw FPGA Bit File”:將NI的FPGA lvbitx轉(zhuǎn)換成我們需要的原始FPGA bit文件,這個原始的bit文件可以直接通過IMPACT或者Vivado或者Adept下載到FPGA芯片里面運行。比如,我們現(xiàn)在點擊一下這個菜單項,可以看到FPGA Bitfiles文件夾里面多出來一個跟lvbitx同名的bit文件,如圖5-185所示。

? ? ? ? 2)“Download VI To Flash Memory”:可以將上位機編譯好的FPGA VI程序(本質(zhì)上是bit文件)先通過網(wǎng)絡發(fā)送給“以太網(wǎng)下載器”模塊上的ARM芯片,再由ARM芯片寫入“以太網(wǎng)下載器”自身的Flash里面存儲起來;變相實現(xiàn)了FPGA bit文件的固化效果,這樣一來,F(xiàn)PGA開發(fā)板上的Flash芯片本質(zhì)上也可以去掉的!節(jié)約一點硬件成本。
?????? ?3)“Set FPGA Download As Startup”:將下載到“以太網(wǎng)下載器”自身Flash里面的FPGA bit設置一個開機自啟動標記,每次以太網(wǎng)下載器上電都會檢測這個標記,如果有效,就會把Flash里面的bit文件讀取出來再寫入到FPGA芯片里面運行。
?????? ?4)“Unset FPGA Download As Startup”:跟上面的功能反過來,就是取消FPGA VI上電自啟動功能;當執(zhí)行這個選項的時候,上位機會通過以太網(wǎng)發(fā)送一個指令給“以太網(wǎng)下載器”,取消Flash內(nèi)部自啟動標記位,這樣以太網(wǎng)下載器重新上電的時候就不會從Flash里面讀取bit文件寫入FPGA了。
?????? ?5)“Reboot FPGA bit Run”:相當于軟件重啟FPGA VI運行,本質(zhì)上是上位機通過以太網(wǎng)給下載器發(fā)送一個reboot重啟指令,然后由以太網(wǎng)下載器上面的ARM芯片從Flash里面讀取bit程序加載給FPGA運行。
????5.6.6:FPGA開發(fā)板+SDMC以太網(wǎng)下載器連接實物圖
?????? ?前面5.5.4節(jié)里面介紹的Xilinx JTAG下載器接法很簡單,因為JTAG口是標準的,直接懟進去即可。而SDMC FPGA Downloader以太網(wǎng)下載器跟FPGA之間走的是SPI總線協(xié)議,如果我們借助以太網(wǎng)下載器只想實現(xiàn)FPGA VI在線前面板交互式運行的話,那隨便找6個FPGA IO口跟以太網(wǎng)下載器通過杜邦線互聯(lián)即可;如果還想通過以太網(wǎng)下載器對FPGA直接進行bit燒寫的話,這6個引腳就必須是FPGA固定BANK上的引腳了,其實也就是FPGA與Flash相連的那幾個IO。
?????? ?5.6.6.1:以太網(wǎng)下載器+黑金AX545開發(fā)板(Spartan6-LX45)
?????? ?為了向大家演示通過以太網(wǎng)下載器在線給FPGA下載bit文件的功能,我們實在不忍心對黑金的Spartan6開發(fā)板進行了飛線處理,好在Spartan6開發(fā)板上的電阻封裝是0603的,好處理一些;當然了,如果大家只想用我們的以太網(wǎng)下載器對FPGA板子進行在線調(diào)試的話,那就不需要對板子做任何改動。所以,余下的6塊FPGA開發(fā)板我們不做處理。
?????? ?之所以要對FPGA開發(fā)板進行飛線,是因為市面很多開發(fā)板都沒有將M0M1M2引出來,而是焊死了。
?????? ?前面介紹過,要想由單片機或者ARM或者DSP對FPGA進行bit灌輸?shù)脑?,必須要把FPGA設置成Slave Serial Mode,也就是從設備模式。查看FPGA芯片手冊可以發(fā)現(xiàn),如果是6系列FPGA芯片,需要把M0M1都拉高;如果是7系列FPGA,則把M0M1M2全部拉高。打開黑金AX516或者AX545原理圖找到M0M1的位置,如圖5-186所示。
?

????????很明顯,黑金默認的處理方式是M0M1=10,我們可以將R78拿掉,再用細線將M0M1短接起來,如圖5-186所示。這樣就實現(xiàn)了M0M1=11,F(xiàn)PGA的工作模式也就配置成了Slave從設備模式。
?????? ?另外,還需要將以太網(wǎng)下載器上的PROG_B焊接到Spartan6開發(fā)板的R123電阻上,相當于跟FPGA芯片的編程燒寫引腳Prog連接起來了,如圖5-187所示。這樣,以太網(wǎng)下載器才能作為主設備才能對FPGA芯片進行控制和燒寫bit程序。然后是INIT_B(RW)初始化引腳也需要通過飛線的方式接到Spartan6開發(fā)板的R70上面,最好將R69拿掉,因為以太網(wǎng)下載器模塊上默認加過了1K上拉電阻,如圖5-188所示。


? ? ? ? 實際的Spartan6開發(fā)板跟以太網(wǎng)下載器之間的PROG_B接線,如圖5-189所示。注意:圖中的白線就是PROG_B信號;另外焊接的時候,電烙鐵不要燙太久,否則容易把焊盤拽掉,這樣損失就大了,F(xiàn)PGA板子很貴的!

? ? ? ? 接下來,我們需要找到FPGA作為Slave從設備模式下的SPI引腳,實際上可以通過開發(fā)板上自帶的Flash芯片快速定位,如圖5-190所示。也就是Flash芯片的7(CS)、8(MISO1)、15(MISO0)、16(CLK)這4個引腳,分別對應Spartan6 FPGA芯片BANK2里面的V3、R13、T13、R15,如圖5-191所示。


? ? ? ? 需要注意的是:
?????? ?圖5-190中的Flash芯片上的IO1_DOUT對應FPGA的MISO1也就是R13這個引腳,實際上關聯(lián)的是FPGA xdc約束文件里面的HS_MOSI這個信號。
?????? ?而Flash芯片上的IO0_DIN對應FPGA的MISO0也就是T13這個引腳,實際上關聯(lián)的是FPGA ucf約束文件里面的HS_MISO這個信號。
?????? ?所以,通過Flash芯片的數(shù)據(jù)進出方向引腳名稱定義,要比FPGA自身的引腳名稱好理解一些。這兩個引腳定義千萬不能弄反了,不然以太網(wǎng)下載器是無法控制FPGA芯片的。
?????? ?CS片選和CLK時鐘信號好理解,對應互聯(lián)即可。
?????? ?關于以太網(wǎng)下載器6根信號線對應FPGA ucf約束文件里面的定義,如圖5-192所示。

? ? ? ? 最后,把以太網(wǎng)下載器剩下的INIT_B和VALID兩個信號線接到對應的FPGA引腳上即可。其中,INIT_B位于上面圖5-190中的U3引腳,對應到ucf約束文件里面的信號名稱是HS_RW;而以太網(wǎng)下載器上的VALID關聯(lián)的是FPGA芯片的BUSY信號,如圖5-193所示,對應ucf文件里面的信號名稱是HS_VD,也就是P16這個引腳。

? ? ? ? 最后一點,既然FPGA已經(jīng)配置成了Slave從設備模式,那么FPGA板子上的Flash芯片就沒有用了,為了防止有干擾,我們將這個Flash芯片(比如W25Q128)拿掉,然后從Flash的7、8、15、16這4個焊盤處焊接4根杜邦線,然后接到以太網(wǎng)下載器上即可。如圖5-194所示。

? ? ? ??結論:經(jīng)過上面這些步驟,可以看出,要想對市面上已經(jīng)焊接好的FPGA板子進行改造還是非常麻煩的,最好不要隨便亂動;如果是用戶自己重新設計FPGA板子,想把以太網(wǎng)下載器集成上去,為了方便后續(xù)的二次開發(fā),可以把BOOT啟動引腳M0M1M2和QSPI這些IO預留出來,通過跳線帽設置上拉或者下拉會更方便。如果采用傳統(tǒng)的Xilinx JTAG下載器來下載bit文件,實際上M0M1M2無論怎么設置都不會影響FPGA bit程序下載。
????????最后,根據(jù)前面的分析,將以太網(wǎng)下載器跟Spartan6開發(fā)板通過8根杜邦線互聯(lián)起來,如圖5-195所示。

? ? ? ? 以太網(wǎng)下載器模塊上的這8根杜邦線分別是:CS、CLK、MOSI、DIN、INIT_B、VALID、PROG_B、GND;其中,需要注意的是:以太網(wǎng)下載器模塊上的MOSI信號要接到FPGA ucf約束文件里面的HS_MISO上;以太網(wǎng)下載器上的DIN要接到FPGA ucf里面定義的HS_MOSI,切記不能弄混了!否則以太網(wǎng)下載器無法識別FPGA主芯片。
?????? ?5.6.6.2:以太網(wǎng)下載器+黑金AX7035開發(fā)板(Artix7-35T)
?????? ?前面Spartan6 FPGA開發(fā)板為了驗證我們這款以太網(wǎng)下載器的bit文件燒寫功能,所以對板子做了一些改動,讓其配置成Slave從設備模式。而實際應用中,我們一般不會去改造FPGA硬件,而是借助這個以太網(wǎng)下載器實現(xiàn)在線前面板交互式運行和調(diào)試。
?????? ?所以,余下的6個FPGA開發(fā)板,我們就不要改造了,直接在FPGA板子上隨便找6個IO口作為以太網(wǎng)下載器的SPI通信引腳就可以了。
?????? ?對于黑金AX7035這款開發(fā)板來說,上面有兩個40pin擴展槽,預留的IO口很多。本節(jié)實驗我們選取了J9擴展槽里面的前6個FPGA IO作為以太網(wǎng)下載器的SPI通信線,如圖5-196所示。注意:J9擴展槽里面的1號引腳是GND,2號是5V,39和40號是3.3V,所以前6個FPGA IO引腳的序號就是3~8,如圖5-197所示。另外,如果用戶實在找不到合適的5V電源適配器給以太網(wǎng)下載器供電的話,也可以將40pin擴展槽里面的39號或者40號接到以太網(wǎng)下載器的3.3V排針上,這樣也能讓以太網(wǎng)下載器工作起來。


? ? ? ? 最后,利用8根杜邦線,將以太網(wǎng)下載器的SPI信號接到黑金AX7035開發(fā)板的J9擴展槽里面,如圖5-198所示。具體的接線方式我們這里也列出來,防止有些用戶有強迫癥。
以太網(wǎng)下載器???????????????????????????黑金AX7035開發(fā)板? ? ? ? ? ? ? ? ? ? ? ? ? ? ??FPGA xdc約束文件
3.3V? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J9:pin39:3.3V? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? N/A
GND? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? J9:pin1:GND???????????????? ????????????? ????????????? ?N/A
CS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J9:pin3:D16??????????????????????????????? ????????????? ? HS_SS???????????
CLK? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J9:pin4:E16??????????????????????????????? ????????????? ? HS_SCLK??????
MOSI? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J9:pin6:F13??????????????????????????????? ????????????? ? HS_MISO?????
DIN? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? J9:pin5:F14??????????????????????????????? ????????????? ? HS_MOSI?????
INIT_B? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???J9:pin7:E14??????????????????????????????? ????????????? ? HS_RW?????????
VALID? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????J9:pin8:E13??????????????????????????????? ????????????? ? HS_VD??????????

? ? ? ??注意1:以太網(wǎng)下載器上的MOSI、DIN跟FPGA開發(fā)板上的HS_MISO和HS_MOSI交叉相連的,切記別接錯了。
?????? ?注意2:如果只需要借助這個以太網(wǎng)下載器,實現(xiàn)FPGA VI在線前面板交互式運行的話,PROG_B信號不用接到FPGA上。
?????? ?注意3:如果想要使用以太網(wǎng)下載器將FPGA bit文件直接燒寫到FPGA芯片里面運行,需要對M0M1M2進行BOOT設置,這就要對板子進行改造,得不償失!
?????? ?5.6.6.3:以太網(wǎng)下載器+黑金AX7103開發(fā)板(Artix7-100T)
?????? ?跟前面AX7035開發(fā)板類似,帶PCIe接口的黑金AX7103開發(fā)板功能更強大,支持PCIe高速通信。上面也有兩個40pin擴展槽,每個擴展槽里面有34個FPGA IO引腳,所以,最多有68個FPGA IO可供用戶使用。
?????? ?本節(jié)實驗我們選取了J13擴展槽里面的前6個FPGA IO作為以太網(wǎng)下載器的SPI通信線,如圖5-199所示。注意:J13擴展槽里面的1號引腳是GND,2號是5V,39和40號是3.3V,所以前6個FPGA IO引腳的序號就是3~8,如圖5-200所示。另外,如果用戶實在找不到合適的5V電源適配器給以太網(wǎng)下載器供電的話,也可以將40pin擴展槽里面的39號或者40號接到以太網(wǎng)下載器的3.3V排針上,這樣也能讓以太網(wǎng)下載器工作起來。


????????最后,利用8根杜邦線,將以太網(wǎng)下載器的SPI信號接到黑金AX7103開發(fā)板的J13擴展槽里面,如圖5-201所示。具體接線方式我們這里也列出來,防止有些用戶有強迫癥。
以太網(wǎng)下載器???????????????????????????????黑金AX7103開發(fā)板? ? ? ? ? ? ? ? ? ? ? ? ? ? ???FPGA xdc約束文件
3.3V??????????????????????????????????????????????J13:pin39:3.3V? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?N/A
GND? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J13:pin1:GND??????????????????????????? ????????????? ?N/A
CS????????????????????????????????????????????????J13:pin3:W16??????????????????????????? ????????????? ? HS_SS???????????
CLK? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? J13:pin4:W15??????????????????????????? ????????????? ? HS_SCLK??????
MOSI? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? J13:pin6:W17??????????????????????????? ????????????? ? HS_MISO?????
DIN? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J13:pin5:V17?????????????????????? ?????? ????????????? ?HS_MOSI?????
INIT_B? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? J13:pin7:U15???????????????????????????? ????????????? ? HS_RW?????????
VALID???????????????????????????????????????????J13:pin8:V15? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?HS_VD??????????

? ? ? ??注意1:以太網(wǎng)下載器上的MOSI、DIN跟FPGA開發(fā)板上的HS_MISO和HS_MOSI交叉相連,切記別接錯了。
?????? ?注意2:如果只需要借助這個以太網(wǎng)下載器,實現(xiàn)FPGA VI在線前面板交互式運行的話,PROG_B信號不用接到FPGA上。
?????? ?注意3:如果想要使用以太網(wǎng)下載器將FPGA bit文件直接燒寫到FPGA芯片里面運行,需要對M0M1M2進行BOOT設置,這就要對板子進行改造,得不償失!
?????? ?5.6.6.4:以太網(wǎng)下載器+黑金AX7A200開發(fā)板(Artix7-200T)
?????? ?跟前面AX7035和AX7103開發(fā)板類似,帶PCIe接口的黑金AX7A200開發(fā)板FPGA芯片資源更多,也支持PCIe高速通信。上面也有兩個40pin擴展槽,每個擴展槽里面有34個FPGA IO引腳,共有68個FPGA IO可供用戶使用。
?????? ?本節(jié)實驗我們選取了J11擴展槽里面的前6個FPGA IO作為以太網(wǎng)下載器的SPI通信線,如圖5-202所示。注意:J11擴展槽里面的1號引腳是GND,2號是5V,39和40號是3.3V,所以前6個FPGA IO引腳的序號就是3~8,如圖5-203所示。另外,如果用戶實在找不到合適的5V電源適配器給以太網(wǎng)下載器供電的話,也可以將40pin擴展槽里面的39號或者40號接到以太網(wǎng)下載器的3.3V排針上,這樣也能讓以太網(wǎng)下載器工作起來。


? ? ? ? 最后,利用8根杜邦線,將以太網(wǎng)下載器的SPI信號接到黑金AX7A200開發(fā)板的J11擴展槽里面,如圖5-204所示。具體接線方式我們這里也列出來,防止有些用戶有強迫癥。
以太網(wǎng)下載器???????????????????????????黑金AX7A200開發(fā)板? ? ? ? ? ? ? ????????????????FPGA xdc約束文件
3.3V????????????????????????????????????????????J11:pin39:3.3V? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?N/A
GND? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? J11:pin1:GND??????????????????????????? ????????????? ??N/A
CS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J11:pin3:G21???????????????????????????? ????????????? ? HS_SS???????????
CLK? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J11:pin4:G22???????????????????????????? ????????????? ? HS_SCLK??????
MOSI? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J11:pin6:B22????????????????????????????? ????????????? ? HS_MISO?????
DIN? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? J11:pin5:C22????????????????????????????? ????????????? ? HS_MOSI?????
INIT_B? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J11:pin7:F19????????????????????????????? ????????????? ? HS_RW?????????
VALID? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? J11:pin8:F20????????????????????????????? ????????????? ? HS_VD??????????

? ? ? ??注意1:以太網(wǎng)下載器上的MOSI、DIN跟FPGA開發(fā)板上的HS_MISO和HS_MOSI交叉相連的,切記別接錯了。
?????? ?注意2:如果只需要借助這個以太網(wǎng)下載器,實現(xiàn)FPGA VI在線前面板交互式運行的話,PROG_B信號不用接到FPGA上。
?????? ?注意3:如果想要使用以太網(wǎng)下載器將FPGA bit文件直接燒寫到FPGA芯片里面運行,需要對M0M1M2進行BOOT設置,這就要對板子進行改造,得不償失!
?????? ?5.6.6.5:以太網(wǎng)下載器+黑金AX7020開發(fā)板(ZYNQ7020)
?????? ?跟前面AX7035、AX7103和AX7A200開發(fā)板不一樣,AX7020開發(fā)板上的ZYNQ7020芯片不是純FPGA,而是ZYNQ家族的,一顆芯片里面分為PS+PL兩部分,其中PS就是ARM,PL就是FPGA。
?????? ?黑金的這款AX7020開發(fā)板上面也有兩個40pin擴展槽,每個擴展槽里面有34個FPGA IO引腳。另外,這款ZYNQ7020開發(fā)板上還集成了Digilent HS1下載器,沒有預留JTAG下載口,用戶可以通過一根miniUSB線纜接到FPGA板載的Digilent HS1下載器上即可往FPGA芯片里面灌輸bit文件。
?????? ?本節(jié)實驗我們選取了J11擴展槽里面的前6個FPGA IO作為以太網(wǎng)下載器的SPI通信線,如圖5-205所示。注意:J11擴展槽里面的1號引腳是GND,2號是5V,39和40號是3.3V,所以前6個FPGA IO引腳的序號就是3~8,如圖5-206所示。另外,如果用戶實在找不到合適的5V電源適配器給以太網(wǎng)下載器供電的話,也可以將40pin擴展槽里面的39號或者40號接到以太網(wǎng)下載器的3.3V排針上,這樣也能讓以太網(wǎng)下載器工作起來。


? ? ? ? 最后,利用8根杜邦線,將以太網(wǎng)下載器的SPI信號接到黑金AX7020開發(fā)板的J11擴展槽里面,如圖5-207所示。具體接線方式我們這里也列出來,防止有些用戶有強迫癥。
以太網(wǎng)下載器?????????????????????????????黑金AX7020開發(fā)板 ??????????????????????????????FPGA xdc約束文件
3.3V?????????????????????????????????????????????J11:pin39:3.3V????????????????????????? ?????? ???? ????N/A
GND? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? J11:pin1:GND??????????????????????????? ????????????? ? N/A
CS???????????????????????????????????????????????J11:pin3:F17????????????????????????????? ????????????? ? HS_SS???????????
CLK? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J11:pin4:F16????????????????????????????? ????????????? ? HS_SCLK??????
MOSI? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J11:pin6:F19????????????????????????????? ????????????? ? HS_MISO?????
DIN? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? J11:pin5:F20????????????????????????????? ????????????? ? HS_MOSI?????
INIT_B?????????????????????????????????????????J11:pin7:G20? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? HS_RW?????????
VALID? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? J11:pin8:G19? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? HS_VD??????????

? ? ? ??注意1:以太網(wǎng)下載器上的MOSI、DIN跟FPGA開發(fā)板上的HS_MISO和HS_MOSI交叉相連的,切記別接錯了。
?????? ?注意2:如果只需要借助這個以太網(wǎng)下載器,實現(xiàn)FPGA VI在線前面板交互式運行的話,PROG_B信號不用接到FPGA上。
?????? ?注意3:如果想要使用以太網(wǎng)下載器將FPGA bit文件直接燒寫到FPGA芯片里面運行,需要對M0M1M2進行BOOT設置,這就要對板子進行改造,得不償失!
?????? ?5.6.6.6:以太網(wǎng)下載器+正點原子達芬奇Pro開發(fā)板(Artix7-100T)
?????? ?正點原子的達芬奇Pro開發(fā)板跟前面黑金的AX7103開發(fā)板類似,都是帶PCIe接口的Artix7-100T高性能FPGA板卡,外設資源和接口都非常豐富。
?????? ?達芬奇Pro開發(fā)板上面也有兩個40pin擴展槽,但是每個擴展槽里面都有36個FPGA IO引腳,比黑金FPGA開發(fā)板擴展槽多2個IO口,也就是最多有72個FPGA IO可供用戶使用;同時正點原子所有FPGA開發(fā)板上預留的IO引腳都標識了名稱,極大的方便了用戶接線,我們只要看著FPGA xdc約束文件或者原理圖里面定義的引腳,然后直接在FPGA板子上的擴展口里面找到對應的引腳絲印名稱即可。這方面的用戶體驗正點原子要比黑金和米聯(lián)客做的好一些。
?????? ?本節(jié)實驗我們選取了J4擴展口里面的6個FPGA IO作為以太網(wǎng)下載器的SPI通信線,如圖5-208所示。注意:J4擴展槽里面的37、39號引腳是GND,40號是5V,38號是3.3V,這6個FPGA IO引腳是我們隨意找的,分別是:Y17、Y16、AB17、AB16、AB15、AA15,如圖5-209所示。另外,如果用戶實在找不到合適的5V電源適配器給以太網(wǎng)下載器供電的話,也可以將40pin擴展槽里面的38號接到以太網(wǎng)下載器的3.3V排針上,這樣也能讓以太網(wǎng)下載器工作起來。


? ? ? ? 最后,利用8根杜邦線,將以太網(wǎng)下載器的SPI信號接到正點原子達芬奇Pro(Artix7-100T)開發(fā)板的J4擴展槽里面,如圖5-210所示。具體接線方式我們這里也列出來,防止有些用戶有強迫癥。
以太網(wǎng)下載器?????????????????????????正點原子達芬奇Pro開發(fā)板 ????????????????? ? ?FPGA xdc約束文件
3.3V? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J4:pin38:3.3V??????????????????????????? ?????? ????????N/A
GND? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? J4:pin37:GND??????????????????????????? ????????????? ?N/A
CS???????????????????????????????????????????????J4:pin2:Y17??????????????????????????????? ????????????? ?HS_SS???????????
CLK?????????????????????????????????????????????J4:pin35:Y16????????????????????????????? ????????????? ?HS_SCLK??????
MOSI? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J4:pin33:AB16?????????????????????????? ????????????? ? HS_MISO?????
DIN? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??J4:pin34:AB17?????????????????????????? ????????????? ? HS_MOSI?????
INIT_B? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?J4:pin32:AB15?????????????????????????? ????????????? ? HS_RW?????????
VALID? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? J4:pin31:AA15????? ???????????????????? ????????????? ? HS_VD??????????

? ? ? ??注意1:以太網(wǎng)下載器上的MOSI、DIN跟FPGA開發(fā)板上的HS_MISO和HS_MOSI交叉相連的,切記別接錯了。
?????? ?注意2:如果只需要借助這個以太網(wǎng)下載器,實現(xiàn)FPGA VI在線前面板交互式運行的話,PROG_B信號不用接到FPGA上。
?????? ?注意3:如果想要使用以太網(wǎng)下載器將FPGA bit文件直接燒寫到FPGA芯片里面運行,需要對M0M1M2進行BOOT設置,這就要對板子進行改造,得不償失!
?????? ?5.6.6.7:以太網(wǎng)下載器+Digilent BASYS3開發(fā)板(Artix7-35T)
?????? ?Digilent公司的BASYS3 FPGA開發(fā)板跟前面黑金的AX7035開發(fā)板類似,都是Artix7-35T高性能FPGA開發(fā)板,但是BASYS3開發(fā)板上的外設資源和接口遠沒有黑金的AX7035豐富。?????? ?Digilent BASYS3唯一的特色是板子上面集成了HS系列下載器,通過一根microUSB線纜即可實現(xiàn)FPGA bit文件下載,同時也解決了板子供電問題。
?????? ?提醒:BASYS3這款開發(fā)板上的Artix7 FPGA芯片體積非常小,封裝是CPG236,比一般的單片機還要小,尺寸跟48腳的STM32F103C8T6差不多。很多用戶印象中的FPGA芯片體積都很大,實際上FPGA的封裝種類非常多,對于那些對FPGA產(chǎn)品體積有嚴格限制的用戶來說,CPG236這種封裝最合適了。另外,Digilent公司還有一款采用了CPG236封裝的A7 FPGA核心板,名為“Cmod A7”,如圖5-211所示,感興趣的用戶可以在Digilent公司官網(wǎng)上搜索一下。

? ? ? ? 注意,Digilent BASYS3 FPGA開發(fā)板上面沒有像黑金那樣的40pin擴展槽,取而代之的是標準的PMOD接口,每個PMOD里面有8個FPGA IO引腳,上面一共有JA、JB、JC、JD 4個PMOD,所以一共有32個FPGA IO引腳可供用戶使用。
?????? ?標準PMOD接口里面的IO引腳分布和VCC、GND序號,如圖5-212所示。其中,前4行8個IO連到了FPGA引腳上;第5行2個IO是GND;第6行2個IO是3.3V電源。

????????本節(jié)實驗我們選取了BASYS3開發(fā)板上JA PMOD擴展口里面的前6個FPGA IO作為以太網(wǎng)下載器的SPI通信線,如圖5-213所示。注意:JA擴展口里面的5、11號引腳是GND,6、12號引腳是3.3V;與以太網(wǎng)下載器相連的6個FPGA IO引腳是我們隨意找的,分別是:J1、L2、J2、G2、H1、K2,如圖5-214所示。另外,如果用戶實在找不到合適的5V電源適配器給以太網(wǎng)下載器供電的話,也可以將JA PMOD擴展口里面的6號或者12號接到以太網(wǎng)下載器的3.3V排針上,這樣也能讓以太網(wǎng)下載器工作起來。


? ? ? ? 最后,利用8根杜邦線,將以太網(wǎng)下載器的SPI信號接到Digilent BASYS3 (Artix7-35T)開發(fā)板的JA PMOD擴展口里面,如圖5-215所示。具體接線方式我們這里也列出來,防止有些用戶有強迫癥。
以太網(wǎng)下載器? ? ? ? ? ? ? ? ? ? Digilent BASYS3 FPGA開發(fā)板 ????????????????????FPGA xdc約束文件
3.3V? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?JA:pin38:3.3V??????????????????????????? ????????????? ? N/A
GND??????????????????????????????????????????JA:pin37:GND??????????????????????????? ????????????? ? N/A
CS? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?JA:pin2:J1 ?????????????????????????????????? ?????? ?????? HS_SS???????????
CLK???????????????????????????????????????????JA:pin35:L2??????????????????????????????? ????????????? ? HS_SCLK??????
MOSI? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?JA:pin33:G2?????????????????????????????? ?????? ?????????HS_MISO
DIN????????????????????????????????????????????JA:pin34:J2???????????????????????????????? ?????? ?????? ?HS_MOSI?????
INIT_B? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?JA:pin32:H1? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? HS_RW?????????
VALID? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??JA:pin31:K2??????????????????????????????? ?????? ?????? ? HS_VD??????????

? ? ? ??注意1:以太網(wǎng)下載器上的MOSI、DIN跟FPGA開發(fā)板上的HS_MISO和HS_MOSI交叉相連的,切記別接錯了。
?????? ?注意2:如果只需要借助這個以太網(wǎng)下載器,實現(xiàn)FPGA VI在線前面板交互式運行的話,PROG_B信號不用接到FPGA上。
?????? ?注意3:如果想要使用以太網(wǎng)下載器將FPGA bit文件直接燒寫到FPGA芯片里面運行,需要對M0M1M2進行BOOT設置,這就要對板子進行改造,得不償失!
?? ?5.6.7:LabVIEW FPGA VI在線前面板交互式運行(基于我們神電測控研發(fā)的SDMC FPGA Downloader以太網(wǎng)下載器)
?????? ?注意:如果因為以太網(wǎng)下載器跟FPGA之間的MOSI(HS_MISO)和DIN(HS_MOSI)接線錯誤導致以太網(wǎng)下載器通信超時或者讀寫錯誤,可以先把以太網(wǎng)下載器斷電,再將MOSI和DIN杜邦線互換一下,然后再給下載器上電;如果排查發(fā)現(xiàn)SPI通信線確實接對了,但還是報超時錯誤,此時可以按一下以太網(wǎng)下載器上的復位按鍵即可恢復通信!
?????? ?接下來,就是見證奇跡的時刻了,大家屏住呼吸哈
?????? ?5.6.7.1:測試以太網(wǎng)下載器跟黑金Spartan6開發(fā)板之間的FPGA bit文件燒寫和在線前面板交互式運行和調(diào)試
?????? ?硬件接好之后,給FPGA開發(fā)板和以太網(wǎng)下載器上電,然后點擊一下編譯好的FPGA VI前面板左上角的運行箭頭,此時會彈出“正在準備交互式執(zhí)行”提示框,同時可以看到一個FPGA bit文件燒錄進度條,如圖5-216所示。幾秒之后,奇跡發(fā)生了,下位機FPGA VI前面板竟然活了,就像我們開發(fā)的LabVIEW STM32工具包那樣,LabVIEW成功地進入了FPGA在線前面板交互式運行模式,并且前面板上的“Running”和“儀表”這兩個顯示控件里面的數(shù)值會按照500ms的速度進行+1遞增,如圖5-217所示。


? ? ? ? 同時可以看到,Spartan6 FPGA開發(fā)板上的4個LED指示燈按照1Hz的頻率同步閃爍,亮滅持續(xù)時間各500ms,如圖5-218所示。

? ? ? ? 如果我們在FPGA VI在線交互式前面板上修改一下“控制循環(huán)周期(mSec)”控件里面的數(shù)值,比如改成100,如圖5-219所示,此時Spartan6 FPGA開發(fā)板上的LED閃爍頻率明顯加快了,并且儀表盤的指針也開始加速移動了。

? ? ? ? 接著,我們可以按壓FPGA開發(fā)板上的KEY2和KEY4按鍵,如圖5-220;發(fā)現(xiàn)FPGA VI前面板上相對應的布爾指示燈也跟著發(fā)生變化,如圖5-221所示。這就是進入交互式運行前面板之后LabVIEW FPGA的強大之處,通過SPI讀寫FPGA內(nèi)部的寄存器將FPGA前面板上的所有控件信息自動投射關聯(lián)并實時顯示到當前FPGA VI前面板上。


? ? ? ? 說明下位機FPGA實時捕捉到的狀態(tài)信息通過交互式運行模式自動呈現(xiàn)在了FPGA VI前面板上了,非常直觀!媽媽再也不用擔心反復編譯、再也無須借助串口打印來對FPGA進行離線調(diào)試了!
?????? ?5.6.7.2:測試以太網(wǎng)下載器跟黑金Artix7-35T開發(fā)板(AX7035)之間的FPGA在線前面板交互式運行和調(diào)試功能
?????? ?由于以太網(wǎng)下載器跟黑金AX7035之間的SPI通信是隨便找的6個IO引腳,F(xiàn)PGA BOOT啟動方式無法配置成Slave Serial Mode,所以不支持在線燒寫FPGA bit文件。因此,需要借助傳統(tǒng)的Xilinx JTAG或者Digilent HS系列下載器提前將編譯好的FPGA bit文件燒進去。
?????? ?1)為了獲取原始的FPGA bit文件,我們需要先編譯一下寫好的FPGA VI程序,圖5-222顯示的是AX7035終端下的FPGA VI編譯完成后的FPGA資源消耗情況。

? ? ? ? 2)接下來,右擊AX7035終端下的FPGA VI名稱,點擊菜單里面的“Generate Raw FPGA Bit File”,如圖5-223所示;然后可以看到一個一閃而過的原始bit文件生成進度條,如圖5-224所示;此時,F(xiàn)PGA Bitfiles文件夾里面就多出來一個與lvbitx同名的原始bit文件了,如圖5-225所示。



? ? ? ? 3)將Xilinx JTAG下載器或者Digilent HS系列下載器接到黑金AX7035開發(fā)板上,給FPGA開發(fā)板和以太網(wǎng)下載器上電,然后打開Vivado或者Adept軟件將剛剛生成的原始bit文件下載到FPGA里面運行。比如,我們習慣用Digilent的Adept軟件來下載原始的FPGA bit文件,如圖5-226所示。下載完成后,可以將傳統(tǒng)Xilinx JTAG或者Digilent HS系列下載器拔掉,以驗證后續(xù)的FPGA VI在線前面板交互式運行和調(diào)試功能,確實是由我們的以太網(wǎng)下載器單獨實現(xiàn)的。

? ? ? ? 4)傳統(tǒng)的下載器拔掉之后,點擊一下前面編譯過的FPGA VI前面板左上角的運行箭頭,此時會彈出“正在準備交互式執(zhí)行”提示框,如圖5-227所示。2秒左右,非???,奇跡發(fā)生了,下位機FPGA VI前面板竟然活了,就像我們開發(fā)的LabVIEW STM32工具包那樣,LabVIEW成功地進入了FPGA在線交互式運行模式,并且前面板上的“Running”和“儀表”這兩個顯示控件里面的數(shù)值會按照500ms的速度進行+1遞增,如圖5-228所示。


? ? ? ? 同時可以看到,AX7035 FPGA開發(fā)板(Artix7-35T)上的4個LED指示燈按照1Hz的頻率同步閃爍,亮滅持續(xù)時間各500ms,如圖5-229所示。

? ? ? ? 如果我們在FPGA VI交互式前面板上修改一下“控制循環(huán)周期(mSec)”控件里面的數(shù)值,比如改成50,如圖5-230所示,此時黑金AX7035 FPGA開發(fā)板上的LED閃爍頻率明顯加快了,并且儀表盤的指針也開始加速移動了。

? ? ? ? 接著,我們按壓FPGA開發(fā)板上的KEY1和KEY3按鍵,如圖5-231所示;發(fā)現(xiàn)FPGA VI前面板上相對應的布爾指示燈也跟著發(fā)生變化,如圖5-232所示。這就是進入交互式運行前面板之后LabVIEW FPGA的強大之處,通過SPI讀寫FPGA內(nèi)部的寄存器將FPGA前面板上的所有控件信息自動投射關聯(lián)并實時顯示到當前FPGA VI前面板上。


? ? ? ? 說明下位機FPGA實時捕捉到的狀態(tài)信息通過交互式運行模式自動呈現(xiàn)在了FPGA VI前面板上了,非常直觀!徹底擺脫低效的串口打印這種古老的離線調(diào)試方式!