NI VeriStand是一款用于配置實(shí)時(shí)測(cè)試系統(tǒng)應(yīng)用的軟件環(huán)境,如硬件在環(huán)(HIL)測(cè)試系統(tǒng)等。當(dāng)向NI VeriStand添加實(shí)時(shí)I/O接口時(shí),用戶能夠快速配置多種標(biāo)準(zhǔn)模擬、數(shù)字和通信總線接口。另外,用戶還可以使用NI VeriStand,通過(guò)基于FPGA 的I/O接口創(chuàng)建用戶自定義的I/O硬件。本文說(shuō)明了使用基于FPGA I/O接口的益處,以及如何同NI VeriStand一起使用它們。
1. 什么是基于FPGA的I/O接口?
現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)是一種可重復(fù)編程硅片,具有專(zhuān)用集成電路(ASIC)等硬件邏輯實(shí)現(xiàn)的卓越執(zhí)行性能和可靠性,以及基于軟件或固件實(shí)現(xiàn)的靈活性。利用可配置邏輯塊和可編程連線資源,用戶無(wú)需在物理層上更改設(shè)備,即可對(duì)FPGA進(jìn)行配置,以實(shí)現(xiàn)自定義硬件功能。相反的,用戶在軟件中開(kāi)發(fā)數(shù)字計(jì)算任務(wù),并將其編譯成比特流文件,其中包含F(xiàn)PGA邏輯和連線組件如何進(jìn)行配置和連接等信息的。
2. 為什么在實(shí)時(shí)測(cè)試應(yīng)用中使用FPGA?
利用用戶自定義的基于FPGA的I/O接口,可以創(chuàng)建自定義I/O設(shè)備,實(shí)現(xiàn)信號(hào)處理、仿真、觸發(fā)和控制等任務(wù),為用戶提供I/O接口,很好地滿足應(yīng)用需要。此外,由于I/O接口基于FPGA,用戶還可以輕松地重新配置接口特性,以滿足新的要求,或者在不更改硬件設(shè)置的情況下創(chuàng)建能夠用于多項(xiàng)應(yīng)用的測(cè)試系統(tǒng)。
自定義I/O是在實(shí)時(shí)測(cè)試應(yīng)用中使用FPGA的最主要原因之一。超過(guò)100款的C系列信號(hào)調(diào)理模塊為用戶應(yīng)用提供專(zhuān)用接口。將信號(hào)調(diào)理模塊的多樣性與基于FPGA的I/O設(shè)備的靈活性相結(jié)合,用戶可以快速創(chuàng)建具有自定義定時(shí)和觸發(fā)功能的I/O接口,從而完全滿足用戶的實(shí)時(shí)測(cè)試要求。
另外,用戶還可以使用FPGA完成數(shù)據(jù)預(yù)處理和后處理,從而減少執(zhí)行實(shí)時(shí)測(cè)試應(yīng)用程序的微處理器的負(fù)擔(dān)。例如,F(xiàn)PGA可以采集來(lái)自編碼器的數(shù)字信號(hào),并根據(jù)此信號(hào)計(jì)算出速度和加速度,然后將這些信息傳輸給實(shí)時(shí)測(cè)試應(yīng)用程序。
另外,在實(shí)時(shí)測(cè)試應(yīng)用中使用FPGA還可以幫助你增加高速閉環(huán)控制功能。例如,用戶可以在FPGA上運(yùn)行一個(gè)運(yùn)動(dòng)控制器,同時(shí)由實(shí)時(shí)應(yīng)用程序?yàn)榭刂破魈峁┰O(shè)定值。這樣,閉環(huán)控制的響應(yīng)速度能夠大大提高,實(shí)現(xiàn)更加精確的系統(tǒng)控制。無(wú)刷直流電機(jī)的控制是此方法的一個(gè)應(yīng)用實(shí)例。
此外,用戶還可以用FPGA來(lái)仿真HIL測(cè)試中的各種傳感器。FPGA是傳感器仿真的理想選擇,主要因?yàn)镕PGA能夠適應(yīng)多種類(lèi)型傳感器的精確定時(shí)要求。用戶能夠?qū)崿F(xiàn)納秒級(jí)分辨率的傳感器仿真,更加真實(shí)地模擬傳感器對(duì)于信號(hào)的響應(yīng)。在許多情況下,傳感器的功能不受響應(yīng)速度的影響。FPGA的物理并行性使其成為實(shí)現(xiàn)真實(shí)器件行為仿真的理想選擇。NI VeriStand外接式附件社區(qū)提供FPGA傳感器仿真外接式附件供下載。
關(guān)于FPGA在實(shí)時(shí)測(cè)試應(yīng)用中使用優(yōu)勢(shì)的更多信息,請(qǐng)參考FPGA技術(shù)介紹:五大優(yōu)勢(shì)和FPGA – 深層分析。
3. 自定義FPGA特性與NI VeriStand的協(xié)作方式
在典型應(yīng)用中,開(kāi)發(fā)人員負(fù)責(zé)完成自定義FPGA邏輯的編程、FPGA邏輯與實(shí)時(shí)處理器上執(zhí)行的應(yīng)用程序之間的通信機(jī)制,以及實(shí)時(shí)應(yīng)用程序中的數(shù)據(jù)預(yù)處理和后處理。NI VeriStand提供的框架實(shí)現(xiàn)了后面兩個(gè)部分,即通信機(jī)制和數(shù)據(jù)處理,從而減少了實(shí)時(shí)測(cè)試應(yīng)用程序使用FPGA所需的開(kāi)發(fā)工作量。要在NI VeriStand上應(yīng)用FPGA特性,用戶只需開(kāi)發(fā)FPGA特性,然后使用XML文件描述用戶的FPGA特性與NI VeriStand實(shí)時(shí)測(cè)試應(yīng)用程序之間的接口,從而減少了開(kāi)發(fā)工作量。
用戶從NI LabVIEW軟件中的模板項(xiàng)目開(kāi)始著手創(chuàng)建NI VeriStand FPGA特性,此模板包含了與用戶NI VeriStand應(yīng)用程序接口所需要的代碼。用戶可以使用LabVIEW來(lái)定義此框架中的自定義FPGA功能,編譯FPGA特性,為FPGA特性編輯XML文件。完成以上步驟以后,用戶只需要選擇XML文件即可將此特性添加到NI VeriStand系統(tǒng)定義中。XML文件告訴NI VeriStand如何與用戶特性接口,以及自動(dòng)提供它的輸入、輸出和在NI VeriStand系統(tǒng)瀏覽器中的參數(shù),從而用戶可以設(shè)置數(shù)值以及與其它實(shí)時(shí)任務(wù)的連接,就像對(duì)其他任何硬件接口進(jìn)行操作一樣。例如,如果用戶定義了一個(gè)帶PWM輸出的FPGA特性,那么可以使用NI VeriStand系統(tǒng)瀏覽器來(lái)設(shè)置通道參數(shù),例如周期和初始值等,并將占空比輸入映射到用戶實(shí)時(shí)測(cè)試應(yīng)用程序中的另一個(gè)通道中,如圖1所示。
圖1. 在系統(tǒng)瀏覽器中配置NI VeriStand FPGA特性
用戶在部署NI VeriStand實(shí)時(shí)應(yīng)用程序時(shí),NI VeriStand將用戶編譯的FPGA特性自動(dòng)下載至硬件接口。
圖2. NI VeriStand FPGA 特性模板
定時(shí)引擎
定時(shí)引擎通過(guò)NI VeriStand系統(tǒng)瀏覽器進(jìn)行配置,使FPGA與NI VeriStand實(shí)時(shí)應(yīng)用程序以及系統(tǒng)中的其它硬件I/O設(shè)備實(shí)現(xiàn)同步。在用戶的NI VeriStand實(shí)時(shí)應(yīng)用程序部署完成之后,加載用戶的FPGA特性,同時(shí)定時(shí)引擎等待來(lái)自NI VeriStand的啟動(dòng)條件。
圖3. 初始化定時(shí)引擎
在用戶的實(shí)時(shí)應(yīng)用程序確認(rèn)啟動(dòng)觸發(fā)之前,NI VeriStand設(shè)置循環(huán)速率(μs)、寫(xiě)入RTSI和使用外部定時(shí)參數(shù)。這三個(gè)參數(shù)完成定時(shí)引擎的同步模式(主、從或不同步)配置,并設(shè)置用戶特性與NI VeriStand實(shí)時(shí)應(yīng)用程序之間的通訊速率。
NI VeriStand – 生成PXI FPGA時(shí)鐘子VI以生成時(shí)鐘,此時(shí)鐘用來(lái)為下文討論的通信循環(huán)以及同步處理定時(shí)。在主模式下,F(xiàn)PGA利用在其上運(yùn)行的循環(huán)計(jì)時(shí)器對(duì)通信循環(huán)進(jìn)行計(jì)時(shí),并將時(shí)鐘導(dǎo)入到實(shí)時(shí)系統(tǒng)集成(RTSI)總線上,以便同步其它硬件設(shè)備。在從模式下,F(xiàn)PGA監(jiān)控RTSI總線,并用RTSI0上獲取的時(shí)鐘對(duì)通信循環(huán)進(jìn)行定時(shí)。在非同步模式下,F(xiàn)PGA用自帶的循環(huán)計(jì)時(shí)器對(duì)通信循環(huán)進(jìn)行計(jì)時(shí),并且不向RTSI總線導(dǎo)出任何信號(hào)。
除了實(shí)現(xiàn)硬件同步,定時(shí)引擎還能實(shí)現(xiàn)與NI VeriStand實(shí)時(shí)應(yīng)用程序的同步。圖4所示為通信循環(huán)的一部分。
圖4. NI VeriStand與FPGA同步
NI VeriStand – 等待FPGA時(shí)鐘子VI用作通信循環(huán)的循環(huán)計(jì)時(shí)器,等待來(lái)自NI VeriStand – 生成PXI FPGA時(shí)鐘子VI的時(shí)鐘信號(hào)。另外,在主機(jī)模式下,NI VeriStand在確認(rèn)啟動(dòng)控制之前,先確認(rèn)產(chǎn)生IRQ。在確認(rèn)產(chǎn)生IRQ之后,NI VeriStand – 與主機(jī)同步子VI在通信循環(huán)的每個(gè)迭代中確認(rèn)一個(gè)中斷。如果FPGA被設(shè)置為主機(jī),NI VeriStand實(shí)時(shí)應(yīng)用程序的執(zhí)行將通過(guò)此IRQ信號(hào)由FPGA進(jìn)行定時(shí)。
通信循環(huán)
通信循環(huán)負(fù)責(zé)發(fā)送和接收NI VeriStand實(shí)時(shí)應(yīng)用程序的數(shù)據(jù)。由于NI VeriStand按照硬件計(jì)時(shí)單點(diǎn)方式更新通道,F(xiàn)PGA必須按照NI VeriStand引擎中的主控制循環(huán)所規(guī)定的速率運(yùn)行通信循環(huán)。欲了解NI VeriStand引擎的更多信息,請(qǐng)參考NI VeriStand幫助。
通信循環(huán)的定時(shí)由NI VeriStand – 等待FPGA時(shí)鐘子VI來(lái)實(shí)現(xiàn),此子VI作為循環(huán)計(jì)時(shí)器,等待前述的NI VeriStand – 生成PXI FPGA時(shí)鐘子VI來(lái)生成時(shí)鐘。
圖5. 數(shù)據(jù)通信循環(huán)
如圖5所示,采取64位數(shù)據(jù)包格式的數(shù)據(jù),通過(guò)DMA先入先出內(nèi)存緩沖(FIFO),發(fā)送至NI VeriStand實(shí)時(shí)應(yīng)用程序,另外,通過(guò)DMA FIFO來(lái)接收來(lái)自NI VeriStand實(shí)時(shí)應(yīng)用程序的、采取64位數(shù)據(jù)包格式的數(shù)據(jù)。
發(fā)送至NI VeriStand的第一個(gè)數(shù)據(jù)包包含了來(lái)自NI VeriStand – 與主機(jī)同步子VI的信息,該信息解釋了FPGA循環(huán)是否在此之后運(yùn)行。發(fā)送至主機(jī)的其他數(shù)據(jù)包中包含了由FPGA執(zhí)行的測(cè)量或計(jì)算數(shù)據(jù)。數(shù)據(jù)包通過(guò)寫(xiě)入到For循環(huán)中的NI VeriStand – 發(fā)送數(shù)據(jù)包至主機(jī)子VI進(jìn)行發(fā)送,此VI負(fù)責(zé)寫(xiě)入到DMA_READ FIFO。DMA_READ FIFO在項(xiàng)目瀏覽器中進(jìn)行定義,并且必須指定其深度,使其中的元素?cái)?shù)目至少等于每次迭代傳輸?shù)臄?shù)據(jù)包大小。
數(shù)據(jù)通過(guò)DMA_WRITE FIFO發(fā)送至FPGA,DMA_WRITE FIFO也在項(xiàng)目瀏覽器中進(jìn)行定義。另外,必須規(guī)定其深度,使其中的元素?cái)?shù)目至少等于每次迭代傳輸?shù)臄?shù)據(jù)包大小。通過(guò)For循環(huán)中的NI VeriStand – 接收主機(jī)數(shù)據(jù)包子VI讀取FPGA上的DMA_WRITE FIFO。配置For循環(huán)時(shí),必須使其迭代次數(shù)與While循環(huán)的每次迭代所需讀取的數(shù)據(jù)包數(shù)目相同。然后,分割數(shù)據(jù)包,并發(fā)送至用戶FPGA的適當(dāng)部分。在圖5中,黃色標(biāo)題的子VI代表I/O資源。此循環(huán)中采集或生成的所有I/O均與NI VeriStand以及系統(tǒng)中的其它硬件設(shè)備同步。
并行處理循環(huán)
并行處理循環(huán)是NI VeriStand構(gòu)架中的自定義FPGA特性的最后一部分。這些循環(huán)之所以稱(chēng)為并行,是因?yàn)樗鼈兯捎玫臅r(shí)鐘不是NI VeriStand通信循環(huán)以及系統(tǒng)中其它硬件的定時(shí)時(shí)鐘。這些循環(huán)可以簡(jiǎn)單地從自定義定時(shí)I/O上采集或生成數(shù)據(jù),或者負(fù)責(zé)完成自定義測(cè)量和生成,例如PWM I/O。另外,它們也可以用來(lái)協(xié)助處理從NI VeriStand發(fā)送至FPGA的數(shù)據(jù)。圖6所示的模板實(shí)例包含了PWM輸入和輸出。
圖6. 并行PWM循環(huán)
如圖5和6所示,并行處理循環(huán)通過(guò)局部變量完成通信循環(huán)的數(shù)據(jù)發(fā)送/接收。通信循環(huán)只按照自己的運(yùn)行速率更新這些本地變量,并且只將本地變量的當(dāng)前值(無(wú)緩沖)發(fā)送至NI VeriStand主機(jī)。并行循環(huán)的數(shù)據(jù)被通信循環(huán)抽選,但是并行循環(huán)的定時(shí)并不受通信循環(huán)的影響。
5. 后續(xù)步驟
對(duì)于實(shí)時(shí)測(cè)試應(yīng)用,基于FPGA的I/O接口具有許多優(yōu)勢(shì)。利用這些接口,用戶能夠創(chuàng)建自定義I/O設(shè)備,實(shí)現(xiàn)信號(hào)處理、仿真、觸發(fā)和控制等任務(wù)的合并,另外這些I/O設(shè)備可以方便地重新進(jìn)行配置,以滿足新的要求,或者創(chuàng)建能夠用于多種應(yīng)用程序的測(cè)試系統(tǒng),而無(wú)需更改硬件設(shè)置。NI VeriStand提供了一個(gè)實(shí)現(xiàn)通信機(jī)制和數(shù)據(jù)處理的框架,從而降低了在實(shí)時(shí)測(cè)試應(yīng)用中使用FPGA所需要的開(kāi)發(fā)工作量,使用戶能夠集中于FPGA功能的開(kāi)發(fā)。然后,用戶可以像處理其它硬件I/O接口一樣,將FPGA特性無(wú)縫地插入到NI VeriStand中,并使用基于配置的環(huán)境完成其余的實(shí)時(shí)測(cè)試應(yīng)用。
評(píng)論