雖然頂層FPGA VI集合了13個儀器設(shè)計庫的功能,然而在主機上對所有這些庫進行獨立編程仍然不方便,并且此應(yīng)用層主機代碼一點也不像傳統(tǒng)的VSA或者VSG API。為了解決此問題,Simple VSA/VSG項目樣例包含了一個附加主機層,將這些儀器設(shè)計庫集合在一個接口內(nèi),提供了與供應(yīng)商定義的VSA/VSG API相類似的功能。LabVIEW類為此提供了一個方便的機制,即提供一個嚴格類型的會話,公有和私有方法,以及一個方便的子VI圖標頭文件保持機制。請注意,LabVIEW類中面向?qū)ο蟮睦^承,并沒有用于此主機接口。
?
圖 10.LabVIEW類提供了一個方便的功能集合和主機接口保持機制
這個簡單的 VSA/VSG樣例項目還提供了常見的RF VSA和VSG操作所用的若干個主機樣例,這些樣例說明了如何正確使用主機接口。這些樣例涵蓋頻域和I/Q采集;CW和基于序列的波形發(fā)生;以及多輸入多輸出(MIMO)同步。
?
圖 11.一些主機樣例說明了Simple VSA/VSG項目樣例使用基于類的主機接口的方法
簡單 VSA/VSG項目樣例包含極多功能,并提供了熟悉的主機接口。然而該實用工具的代價就是代碼的復雜度。具體地說,F(xiàn)PGA上的DRAM采用基于波形的抽取,顯著增加代碼量、復雜度,以及VST FPGA資源占用。然而,并不是所有應(yīng)用均需要基于波形或者儀器數(shù)據(jù)移動范式。一些應(yīng)用更加適合實時流數(shù)據(jù)移動架構(gòu)。對于這些應(yīng)用,VST Streaming項目范例是一個更好的起點,自定義的自由度更廣。
?
圖 12.VST Streaming項目樣例在主機和FPGA上集合了儀器設(shè)計庫,提供了一個靈活地開發(fā)實時、低滯后信號處理和嵌入式應(yīng)用的起
VST Streaming項目樣例的頂層FPGA VI的架構(gòu)與簡單 VSA/VSG項目樣例相近。然而如果仔細考察,會發(fā)現(xiàn)要簡單得多??梢悦黠@看出,VST Streaming沒有代碼量極多的配置過程。配置循環(huán)也簡單得多,只有一條寄存器總線而非兩條,并且所有子系統(tǒng)均包在一個子VI中。
?
圖 13.VST Streaming項目樣例中的FPGA VI配置回路,只有一個寄存器總線接口,比Simple VSA / VSG要簡單得多
VST Streaming項目樣例沒有獨立的采集和發(fā)生循環(huán),而是所有模擬I/O均采用一個循環(huán)。對于要求RF輸入輸出之間的相位關(guān)系已知的應(yīng)用,由于ADC和DAC使用相同的采樣時鐘,此架構(gòu)提供了兩者之間的確定性同步。DSP和VST Streaming項目樣例的校準類似于VSA / VSG。
兩個項目樣例FPGA VI之間的主要區(qū)別是:VST Streaming項目樣例使用輕質(zhì)機制完成與主機之間的數(shù)據(jù)收發(fā)。它采用簡單的流控制器,支持基本觸發(fā)、連續(xù)和間斷流,以及溢出和下溢檢測。這些控制器中斷信號源與目的地之間的2線握手信號,有效地選通數(shù)據(jù)流。控制器不支持全4線握手方案,該方案能夠調(diào)整上游節(jié)點或者被下游節(jié)點所調(diào)整;因此,系統(tǒng)特性化以及確保這些流控制器控制的所有FIFO均能夠以要求的速率產(chǎn)生或消耗數(shù)據(jù)就落到了程序員的肩上。在VST Streaming項目樣例中通過簡單的更改默認情況下完成與主機之間的數(shù)據(jù)收發(fā)的FIFO,可以支持數(shù)據(jù)流傳輸?shù)絍ST FPGA上的其他位置以進行進一步處理,或者通過PXI Express背板,利用P2P傳輸至其他模塊。
?
圖 14.FPGA流控制器和FIFO封裝實現(xiàn)基本流控制,并且能夠輕松改變數(shù)據(jù)流的源及目的地路線
現(xiàn)在來看VST Streaming項目樣例的主機端,雖然機制與Simple VSA/VSG不同,也存在類似于儀器設(shè)計庫主機組件的集成,。VST Streaming項目樣例不使用LabVIEW類,而是將功能簡單地集成到子VI中,并將會話傳遞至子VI之間的寄存器總線。此寄存器總線會話還包含有FPGA VI 引用,因此所有這些子VI不僅能夠訪問寄存器總線通信策略,而且還可以訪問NI-RIO FIFO和控制器。另外,不存在獨立的數(shù)據(jù)采集和生成會話;所有VI均使用同一會話。
?
圖 15.VST Streaming項目樣例主機接口具有一個基于寄存器總線的會話線,用于采集和生成subVI。在邏輯上,此樣例將采集和生成分組成為獨立的行,以方便閱讀
VST Streaming項目樣例提供兩個主機樣例。較簡單的一個樣例把從VST處采集得到的增多的或者連續(xù)的波形數(shù)據(jù)傳輸至VST進行生成,。比較高級的樣例說明了多個VST的MIMO同步。
?
圖 16.這些樣例說明了VST Streaming項目樣例的主機接口
4. 儀器驅(qū)動FPGA擴展
儀器驅(qū)動FPGA擴展提供了一種兼容NI-RFSA和NI-RFSG儀器驅(qū)動的VST FPGA編程方法。FPGA上的抽取層實現(xiàn)了所需要的儀器驅(qū)動功能,同時提供接口以改善具體應(yīng)用的FPGA。雖然不像儀器設(shè)計庫的直接編程那樣靈活,然而儀器驅(qū)動FPGA擴展支持的修改類型與標準信號分析儀和信號發(fā)生器的基于記錄的采集和生成模式相一致。
?
圖 17. 儀器驅(qū)動FPGA擴展架構(gòu)包含VST儀器設(shè)計庫,并且增加了一個抽取層以保護組件。用戶IP不在此代碼中,由主機進行控制,并且不受預編譯封閉源NI-RFSA和NI-RFSG的影響
欲了解儀器驅(qū)動FPGA擴展的更多信息,請閱讀?儀器驅(qū)動的FPGA擴展介紹。
5. 大型FPGA開發(fā)考慮事項
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.
評論