1. 介紹
NI VST FPGA軟件包含多層代碼,提供了從底層控制到高層抽取的一切,擁有RF信號(hào)分析儀和RF信號(hào)發(fā)生器的功能。底層組件實(shí)現(xiàn)了具體硬件的標(biāo)準(zhǔn)功能,包括信號(hào)校準(zhǔn)、前端控制,以及基于記錄的采集和生成,被稱為儀器設(shè)計(jì)庫(kù)。這些庫(kù)提供了互相匹配的主機(jī)和FPGA代碼對(duì),并且可以聚集以構(gòu)建完整的硬件設(shè)計(jì)。LabVIEW項(xiàng)目樣例包含了基于儀器設(shè)計(jì)庫(kù)的相關(guān)主機(jī)和FPGA代碼,提供了開(kāi)發(fā)各種應(yīng)用所需要的模板。另外,NI-RFSA和NI-RFSG儀器驅(qū)動(dòng)還支持VST儀器驅(qū)動(dòng)FPGA擴(kuò)展,使VST FPGA源代碼完美適合具體應(yīng)用。
2. 儀器設(shè)計(jì)庫(kù)
NI提供矢量信號(hào)收發(fā)器所用的多種儀器設(shè)計(jì)庫(kù)。如上文所述,這些儀器設(shè)計(jì)庫(kù)存在于用戶和生產(chǎn)廠商的關(guān)于主機(jī)端和FPGA的代碼中,,實(shí)現(xiàn)了儀器的常見(jiàn)功能。表2列出了一些頂層儀器設(shè)計(jì)庫(kù)及其功能。
?
ni.com/vst/getting-started/zhs/所列軟件安裝了這些儀器設(shè)計(jì)庫(kù),在硬盤(pán)的 c:Program FilesNational InstrumentsLabVIEW [version]instr.lb位置。這些庫(kù)具有顏色和諧的粗邊框,與其他VI明顯有別。
?
圖1:儀器設(shè)計(jì)庫(kù)具有顏色和諧的粗邊框,此獨(dú)特圖標(biāo)使其與其他VI相區(qū)別
另外,這些庫(kù)在默認(rèn)情況下處于鎖定狀態(tài),用戶在修改內(nèi)容之前,需要先通過(guò)會(huì)話框?qū)I解鎖。下文所述是使用這些儀器設(shè)計(jì)庫(kù)的詳細(xì)信息,適用于任何更改。
在給定儀器設(shè)計(jì)庫(kù)的主機(jī)與FPGA之間交換數(shù)據(jù)可采用多種機(jī)制。所有采用LabVIEW RIO架構(gòu)和LabVIEW FPGA的NI產(chǎn)品均使用NI-RIO驅(qū)動(dòng),此驅(qū)動(dòng)提供了單點(diǎn)方式的、存儲(chǔ)器映射、基于寄存器的主機(jī)至FPGA以及FPGA至主機(jī)通信,還有從主機(jī)至FPGA以及FPGA至主機(jī)的多點(diǎn)連續(xù)DMA FIFO。這些都是功能強(qiáng)大的數(shù)據(jù)交換機(jī)制,實(shí)現(xiàn)主機(jī)與FPGA之間的有效通信不需要了解或者只要些許了解底層總線架構(gòu)。
儀器設(shè)計(jì)庫(kù)的一個(gè)常見(jiàn)要求是:主機(jī)代碼需要將大量的設(shè)置下載到設(shè)備中,例如要對(duì)與FPGA相連接的芯片寄存器進(jìn)行編程,或者更新設(shè)置組,例如FPGA上的濾波器抽頭。由于一些儀器設(shè)計(jì)庫(kù)要求采用此策略,并且設(shè)備的DMA通道數(shù)目有限,所以這些庫(kù)可能需要共享一個(gè)FIFO,從而需要在主機(jī)端和FPGA端增加額外的邏輯來(lái)實(shí)現(xiàn)。另外,對(duì)于大數(shù)據(jù)集來(lái)說(shuō),此類通信一般為單向,但是可能也需要提供從FPGA至主機(jī)的某種單點(diǎn)確認(rèn),例如確認(rèn)所有設(shè)置均已成功應(yīng)用等等。所有這些概念組成為一個(gè)單獨(dú)概念,稱為寄存器總線,并為一些儀器設(shè)計(jì)庫(kù)所采用。
寄存器總線使用一個(gè)主機(jī)到FPGA端的 DMA FIFO來(lái)下載設(shè)置,以及一些寄存器/NI-RIO控制器和指示器,用于握手,將單點(diǎn)數(shù)據(jù)返回主機(jī),或者發(fā)出信號(hào),確認(rèn)已下載設(shè)置中的指令已經(jīng)應(yīng)用。
?
圖 2. 寄存器總線是基于NI-RIO DMA、控制器和指示器構(gòu)建的輕質(zhì)協(xié)議,實(shí)現(xiàn)了大量設(shè)置組至FPGA的高效下載,這是給定儀器設(shè)計(jì)庫(kù)的主機(jī)與FPGA側(cè)之間的常見(jiàn)要求。
為了完成仲裁,每個(gè)儀器設(shè)計(jì)庫(kù)均有一個(gè)獨(dú)一無(wú)二的子系統(tǒng)ID,從而使得多個(gè)庫(kù)能夠共享一條寄存器總線。為了更好地總結(jié)VST儀器設(shè)計(jì)庫(kù)的通信策略,表2說(shuō)明了每個(gè)庫(kù)所采用的策略。
?
?
另外,通過(guò)與嵌入式配置儀器設(shè)計(jì)庫(kù)配合使用,寄存器總線還可以在不牽涉主機(jī)的情況下完成FPGA觸發(fā)的重新配置。
由于儀器設(shè)計(jì)庫(kù)代表了賣主與用戶代碼之間的已定義接口,所以位于主機(jī)和FPGA兩者的調(diào)色板上。在LabVIEW VI方塊圖的主機(jī)情境下,儀器設(shè)計(jì)庫(kù)的主機(jī)側(cè)接口見(jiàn)于Functions>>FPGA Interface>>NI PXIe-5644R 或者 Functions>>FPGA Interface>>NI PXIe-5645R。在FPGA側(cè),則位于Functions>>NI PXIe-5644R 或者 Functions>>NI PXIe-5645R下。
?
?
圖 3. NI VST儀器設(shè)計(jì)庫(kù)的主機(jī)和FPGA調(diào)色板。FPGA調(diào)色板包含了實(shí)現(xiàn)常用底層功能的其他儀器設(shè)計(jì)庫(kù)
3. LabVIEW項(xiàng)目樣例
NI VST儀器設(shè)計(jì)庫(kù)的能力強(qiáng)大,但是并不能單槍匹馬地完全滿足軟件設(shè)計(jì)儀器實(shí)現(xiàn)默認(rèn)功能的要求,也不能提供大多數(shù)VSA和VSG儀器編程人員所熟悉的簡(jiǎn)單主機(jī)接口。
LabVIEW 2012提供了一個(gè)新功能,這種方便的機(jī)制不僅能夠分配附加代碼,從而提供默認(rèn)、預(yù)編譯的功能和一個(gè)方便的主機(jī)接口,而且還使用戶能夠輕松地掌握這些代碼。此機(jī)制是LabVIEW項(xiàng)目樣例,將LabVIEW項(xiàng)目、具體VI,以及相關(guān)文件復(fù)制到用戶指定的硬盤(pán)位置。另外還提供文件重命名和更新VI標(biāo)題的能力。
?
圖 4.利用LabVIEW 2012項(xiàng)目樣例,軟件設(shè)計(jì)儀器的用戶可以完全掌握代碼的相關(guān)部分
欲了解創(chuàng)建NI VST項(xiàng)目樣例的詳細(xì)信息,請(qǐng)?jiān)L問(wèn)ni.com/vst/getting-started/zhs/。
NI PXIe-5644R的軟件安裝程序能夠創(chuàng)建具有不同特征的多個(gè)項(xiàng)目樣例。最類似于默認(rèn)VSA和VSG功能的項(xiàng)目是Simple VSA/VSG項(xiàng)目樣例。此項(xiàng)目樣例提供了與其他VSA和VSG API相似的主機(jī)接口。Simple VSA/VSG項(xiàng)目樣例的高層架構(gòu)和數(shù)據(jù)流如圖5所示。
?
圖 5. Simple VSA/VSG項(xiàng)目樣例在主機(jī)和FPGA上聚集儀器設(shè)計(jì)庫(kù),提供了一個(gè)VSA和VSG用戶所熟悉的起點(diǎn)
從Simple VSA/VSG項(xiàng)目樣例的FPGA VI開(kāi)始,有四個(gè)主要回路,一些附加功能位于過(guò)程subVI內(nèi)。為配置NI VST的所有可編程組件,以及FPGA上的一些儀器設(shè)計(jì)庫(kù),配置回路從主機(jī)處接收寄存器和設(shè)置,然后將其分布至各個(gè)FPGA子系統(tǒng)和外部電路。為了提高性能以及使主機(jī)上的多個(gè)過(guò)程均能夠獨(dú)立訪問(wèn),有兩個(gè)寄存器總線。一個(gè)用于采集,另一個(gè)用于生成,并且每一個(gè)都必須能夠配置共享資源,例如計(jì)時(shí)。
?
圖 6. 配置回路負(fù)責(zé)接收主機(jī)的數(shù)據(jù)以及對(duì)儀器進(jìn)行編程
RF輸入回路獲取模數(shù)轉(zhuǎn)換器(ADC)的數(shù)據(jù);進(jìn)行復(fù)矢量校準(zhǔn);并進(jìn)行頻移、相位校準(zhǔn)、減損,以及可變、部分、防混疊抽選。另外,RF輸入回路還實(shí)現(xiàn)了同步以及數(shù)字式功率水平觸發(fā),然后將數(shù)據(jù)寫(xiě)入FIFO,并最終寫(xiě)入DRAM。
?
圖 7. RF輸入回路以可配置I/Q速率生成已校準(zhǔn)數(shù)據(jù),并將其寫(xiě)入DRAM
RF輸出循環(huán)類似于RF輸入循環(huán),但是操作順序相反。來(lái)自DRAM的數(shù)據(jù)進(jìn)行內(nèi)插、定標(biāo)、頻移、相位校準(zhǔn)、內(nèi)插、校準(zhǔn),然后通過(guò)數(shù)模轉(zhuǎn)換器(DAC)生成。另外還有觸發(fā)和同步所用信號(hào)。
?
圖 8. RF輸出循環(huán)檢索來(lái)自DRAM的數(shù)據(jù)然后生成數(shù)據(jù)
過(guò)程子VI包含有循環(huán)和狀態(tài)機(jī),實(shí)現(xiàn)了多數(shù)據(jù)記錄采集和DRAM控制器對(duì)波形的排序。這些子VI包含了大量代碼,滿足了大帶寬和低滯后性能要求,確保這些子VI能夠在全速率ADC數(shù)據(jù)轉(zhuǎn)換下溢出,以及產(chǎn)生全速率DAC數(shù)據(jù)而不發(fā)生下溢,同時(shí)仍然與主機(jī)之間進(jìn)行波形數(shù)據(jù)傳輸。
讀取循環(huán)實(shí)現(xiàn)的功能可以存在于多記錄采集過(guò)程之內(nèi),然而為了方便起見(jiàn)而將其顯示出來(lái)。該循環(huán)可以再數(shù)據(jù)離開(kāi)DRAM時(shí)并在被發(fā)送到主機(jī)前進(jìn)行數(shù)據(jù)處理。此路徑在它自己的回路之內(nèi),從而那些并不符合120 MHz RF輸入和輸出回路的定時(shí)要求的IP仍然可以使用。為了適應(yīng)這種IP,稍微降低此回路速率并不會(huì)影響讀取性能,然而如果降得過(guò)多,則只會(huì)增加數(shù)據(jù)到達(dá)主機(jī)所需時(shí)間。這樣即使采樣內(nèi)存被填滿了,也不會(huì)丟失樣點(diǎn)或破壞數(shù)據(jù)。
?
圖 9.讀取循環(huán)提供了在已采集數(shù)據(jù)返回主機(jī)之前對(duì)其進(jìn)行處理的機(jī)會(huì)。在默認(rèn)情況下,讀取回路返回原始數(shù)據(jù)
雖然頂層FPGA VI集合了13個(gè)儀器設(shè)計(jì)庫(kù)的功能,然而在主機(jī)上對(duì)所有這些庫(kù)進(jìn)行獨(dú)立編程仍然不方便,并且此應(yīng)用層主機(jī)代碼一點(diǎn)也不像傳統(tǒng)的VSA或者VSG API。為了解決此問(wèn)題,Simple VSA/VSG項(xiàng)目樣例包含了一個(gè)附加主機(jī)層,將這些儀器設(shè)計(jì)庫(kù)集合在一個(gè)接口內(nèi),提供了與供應(yīng)商定義的VSA/VSG API相類似的功能。LabVIEW類為此提供了一個(gè)方便的機(jī)制,即提供一個(gè)嚴(yán)格類型的會(huì)話,公有和私有方法,以及一個(gè)方便的子VI圖標(biāo)頭文件保持機(jī)制。請(qǐng)注意,LabVIEW類中面向?qū)ο蟮睦^承,并沒(méi)有用于此主機(jī)接口。
?
圖 10.LabVIEW類提供了一個(gè)方便的功能集合和主機(jī)接口保持機(jī)制
這個(gè)簡(jiǎn)單的 VSA/VSG樣例項(xiàng)目還提供了常見(jiàn)的RF VSA和VSG操作所用的若干個(gè)主機(jī)樣例,這些樣例說(shuō)明了如何正確使用主機(jī)接口。這些樣例涵蓋頻域和I/Q采集;CW和基于序列的波形發(fā)生;以及多輸入多輸出(MIMO)同步。
?
圖 11.一些主機(jī)樣例說(shuō)明了Simple VSA/VSG項(xiàng)目樣例使用基于類的主機(jī)接口的方法
簡(jiǎn)單 VSA/VSG項(xiàng)目樣例包含極多功能,并提供了熟悉的主機(jī)接口。然而該實(shí)用工具的代價(jià)就是代碼的復(fù)雜度。具體地說(shuō),F(xiàn)PGA上的DRAM采用基于波形的抽取,顯著增加代碼量、復(fù)雜度,以及VST FPGA資源占用。然而,并不是所有應(yīng)用均需要基于波形或者儀器數(shù)據(jù)移動(dòng)范式。一些應(yīng)用更加適合實(shí)時(shí)流數(shù)據(jù)移動(dòng)架構(gòu)。對(duì)于這些應(yīng)用,VST Streaming項(xiàng)目范例是一個(gè)更好的起點(diǎn),自定義的自由度更廣。
?
圖 12.VST Streaming項(xiàng)目樣例在主機(jī)和FPGA上集合了儀器設(shè)計(jì)庫(kù),提供了一個(gè)靈活地開(kāi)發(fā)實(shí)時(shí)、低滯后信號(hào)處理和嵌入式應(yīng)用的起
VST Streaming項(xiàng)目樣例的頂層FPGA VI的架構(gòu)與簡(jiǎn)單 VSA/VSG項(xiàng)目樣例相近。然而如果仔細(xì)考察,會(huì)發(fā)現(xiàn)要簡(jiǎn)單得多??梢悦黠@看出,VST Streaming沒(méi)有代碼量極多的配置過(guò)程。配置循環(huán)也簡(jiǎn)單得多,只有一條寄存器總線而非兩條,并且所有子系統(tǒng)均包在一個(gè)子VI中。
?
圖 13.VST Streaming項(xiàng)目樣例中的FPGA VI配置回路,只有一個(gè)寄存器總線接口,比Simple VSA / VSG要簡(jiǎn)單得多
VST Streaming項(xiàng)目樣例沒(méi)有獨(dú)立的采集和發(fā)生循環(huán),而是所有模擬I/O均采用一個(gè)循環(huán)。對(duì)于要求RF輸入輸出之間的相位關(guān)系已知的應(yīng)用,由于ADC和DAC使用相同的采樣時(shí)鐘,此架構(gòu)提供了兩者之間的確定性同步。DSP和VST Streaming項(xiàng)目樣例的校準(zhǔn)類似于VSA / VSG。
兩個(gè)項(xiàng)目樣例FPGA VI之間的主要區(qū)別是:VST Streaming項(xiàng)目樣例使用輕質(zhì)機(jī)制完成與主機(jī)之間的數(shù)據(jù)收發(fā)。它采用簡(jiǎn)單的流控制器,支持基本觸發(fā)、連續(xù)和間斷流,以及溢出和下溢檢測(cè)。這些控制器中斷信號(hào)源與目的地之間的2線握手信號(hào),有效地選通數(shù)據(jù)流??刂破鞑恢С秩?線握手方案,該方案能夠調(diào)整上游節(jié)點(diǎn)或者被下游節(jié)點(diǎn)所調(diào)整;因此,系統(tǒng)特性化以及確保這些流控制器控制的所有FIFO均能夠以要求的速率產(chǎn)生或消耗數(shù)據(jù)就落到了程序員的肩上。在VST Streaming項(xiàng)目樣例中通過(guò)簡(jiǎn)單的更改默認(rèn)情況下完成與主機(jī)之間的數(shù)據(jù)收發(fā)的FIFO,可以支持?jǐn)?shù)據(jù)流傳輸?shù)絍ST FPGA上的其他位置以進(jìn)行進(jìn)一步處理,或者通過(guò)PXI Express背板,利用P2P傳輸至其他模塊。
?
圖 14.FPGA流控制器和FIFO封裝實(shí)現(xiàn)基本流控制,并且能夠輕松改變數(shù)據(jù)流的源及目的地路線
現(xiàn)在來(lái)看VST Streaming項(xiàng)目樣例的主機(jī)端,雖然機(jī)制與Simple VSA/VSG不同,也存在類似于儀器設(shè)計(jì)庫(kù)主機(jī)組件的集成,。VST Streaming項(xiàng)目樣例不使用LabVIEW類,而是將功能簡(jiǎn)單地集成到子VI中,并將會(huì)話傳遞至子VI之間的寄存器總線。此寄存器總線會(huì)話還包含有FPGA VI 引用,因此所有這些子VI不僅能夠訪問(wèn)寄存器總線通信策略,而且還可以訪問(wèn)NI-RIO FIFO和控制器。另外,不存在獨(dú)立的數(shù)據(jù)采集和生成會(huì)話;所有VI均使用同一會(huì)話。
?
圖 15.VST Streaming項(xiàng)目樣例主機(jī)接口具有一個(gè)基于寄存器總線的會(huì)話線,用于采集和生成subVI。在邏輯上,此樣例將采集和生成分組成為獨(dú)立的行,以方便閱讀
VST Streaming項(xiàng)目樣例提供兩個(gè)主機(jī)樣例。較簡(jiǎn)單的一個(gè)樣例把從VST處采集得到的增多的或者連續(xù)的波形數(shù)據(jù)傳輸至VST進(jìn)行生成,。比較高級(jí)的樣例說(shuō)明了多個(gè)VST的MIMO同步。
?
圖 16.這些樣例說(shuō)明了VST Streaming項(xiàng)目樣例的主機(jī)接口
4. 儀器驅(qū)動(dòng)FPGA擴(kuò)展
儀器驅(qū)動(dòng)FPGA擴(kuò)展提供了一種兼容NI-RFSA和NI-RFSG儀器驅(qū)動(dòng)的VST FPGA編程方法。FPGA上的抽取層實(shí)現(xiàn)了所需要的儀器驅(qū)動(dòng)功能,同時(shí)提供接口以改善具體應(yīng)用的FPGA。雖然不像儀器設(shè)計(jì)庫(kù)的直接編程那樣靈活,然而儀器驅(qū)動(dòng)FPGA擴(kuò)展支持的修改類型與標(biāo)準(zhǔn)信號(hào)分析儀和信號(hào)發(fā)生器的基于記錄的采集和生成模式相一致。
?
圖 17. 儀器驅(qū)動(dòng)FPGA擴(kuò)展架構(gòu)包含VST儀器設(shè)計(jì)庫(kù),并且增加了一個(gè)抽取層以保護(hù)組件。用戶IP不在此代碼中,由主機(jī)進(jìn)行控制,并且不受預(yù)編譯封閉源NI-RFSA和NI-RFSG的影響
欲了解儀器驅(qū)動(dòng)FPGA擴(kuò)展的更多信息,請(qǐng)閱讀?儀器驅(qū)動(dòng)的FPGA擴(kuò)展介紹。
5. 大型FPGA開(kāi)發(fā)考慮事項(xiàng)
The Virtex-6 LX195T FPGA on the NI PXIe-5644R and the NI PXIe-5645R is a large FPGA, though the full suite of instrument design libraries consumes a considerable fraction of the available resources. As such, compilation times can take 5 hours or more when using the NI LabVIEW FPGA Compile Cloud Service, depending on the complexity and resource utilization of the FPGA design. Furthermore, FPGA compilation is a non-deterministic process, and as a design consumes more FPGA resources, the repeatable compilation success rate drops below 100%. For such designs, initiating multiple compiles in parallel can help to ensure a successful compilation in approximately the same time as a single compilation. Table 3. provides some estimates for the different FPGA designs discussed in this paper.
評(píng)論
查看更多