朱 浩 張大朋 李欽思
(南瑞集團公司國網(wǎng)電力科學研究院,江蘇 南京 211000)
Microblaze軟核在超聲測流系統(tǒng)中的應用
朱 浩 張大朋 李欽思
(南瑞集團公司國網(wǎng)電力科學研究院,江蘇 南京 211000)
在大流量測量系統(tǒng)中,通常需要由多個不同體系架構(gòu)的CPU來協(xié)同完成測流。針對多CPU系統(tǒng)的復雜性,采用單片高性能FPGA,實現(xiàn)了從超聲傳播時間測量、信號分析、數(shù)據(jù)通信到圖形展示的所有功能。在FPGA內(nèi)部,通過例化MicroBlaze軟核處理器,減少了對外部器件的依賴,降低了系統(tǒng)開發(fā)復雜度,使系統(tǒng)運行更加穩(wěn)定、可靠。應用結(jié)果表明,F(xiàn)PGA不僅可以簡化系統(tǒng)、降低成本,其動態(tài)可配置特性使產(chǎn)品具有更強的適應能力。
超聲波 流量計 看門狗 MicroBlaze FPGA Bootloader 時差法 數(shù)據(jù)交互
超聲波流量計無可動部件,可以實現(xiàn)非接觸高精度測量,具有量程寬、無壓損、成本對口徑變動不敏感等優(yōu)點,在石油化工、污水處理、工業(yè)及生活用水等領域有著廣泛的應用前景[1],同時也是大口徑水流量測量的最佳技術選擇[2]。
由于復雜的外界環(huán)境干擾[3],特別是在大口徑水流量測量中,干擾會使超聲波接收信號發(fā)生波動,輕則產(chǎn)生靜態(tài)漂移問題[4],嚴重的可能出現(xiàn)測量錯誤,甚至無法完成測量工作。
為實現(xiàn)超聲測流功能,系統(tǒng)大都需要采用多CPU協(xié)同完成。如用復雜可編程邏輯器件(complex programmable logic device,CPLD)對高頻超聲信號進行采集,用DSP完成數(shù)字信號分析,用ARM實現(xiàn)測值顯示、數(shù)據(jù)通信等人機接口功能,再加上RAM、FLASH、電源等外圍配套芯片,整個測流系統(tǒng)將顯得相當復雜。
本文采用單片高性能FPGA以及其內(nèi)部MicroBlaze處理器軟核,來實現(xiàn)以上芯片的所有功能。MicroBlaze處理器功能靈活可配,由于都集成在FPGA內(nèi)部,可有效地減少芯片數(shù)量和連線、縮小電路板體積,使整個系統(tǒng)簡潔、穩(wěn)定、可靠。
時差法超聲波流量計的原理是根據(jù)超聲波信號順逆流傳播時間之差來計算流量[5],即首先根據(jù)順流傳播時間和逆流傳播時間之差計算出流速,再根據(jù)測量斷面面積計算出流量[6]。時差法超聲流量計原理圖如圖1所示。
圖1 時差法超聲流量計原理圖
Fig.1 Principle of the ultrasonic flowmeter using time
difference method
超聲波換能器A和B為同一聲路中的一對換能器,當其中一個用作發(fā)射換能器時,另一個則作為接收換能器。Tu為順流傳播時間,Td為逆流傳播時間。所測斷面瞬時流量為:
(1)
式中:α為流速與超聲波傳播路徑的夾角;L為聲路長;S為管道面積。
傳播時間Tu和Td的數(shù)值為微秒級,需要高速計數(shù)器來實現(xiàn)測量,計數(shù)器必須為納秒級才能保證測量精度;同時,為了監(jiān)測超聲波狀態(tài),還需要高速ADC來獲取超聲波波形數(shù)據(jù)并進行分析。常用的超聲波及換能器頻率為1 MHz,為了獲得更多、更可靠的信息,ADC采樣率需要在40 MHz左右,如此高的頻率普通CPU無法勝任。FPGA是滿足以上兩個需求的解決方案。
超聲測流系統(tǒng)結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)結(jié)構(gòu)圖
Fig.2 Structure of the system
①電源:包括系統(tǒng)工作電源和超聲波高壓發(fā)射電源。
②超聲收發(fā)電路:包括高速ADC、信號調(diào)理、聲路板陣列和超聲波換能器。
③人機交互接口:包括以太網(wǎng)、串口和觸摸屏。
④FPGA系統(tǒng):包括控制邏輯、MicroBlaze處理器、雙端口RAM及其外圍配套電路DDR3、FLASH和JTAG調(diào)試口。
FPGA使用Xilinx公司Spartan6 FPGA器件。FPGA邏輯單元控制超聲波信號的發(fā)射、接收、信號采集和波形信號分析。MicroBlaze處理器可實現(xiàn)流量計算、數(shù)據(jù)通信、存儲管理和圖形界面顯示。
MicroBlaze處理器主頻配置為100 MHz,使用DDR3內(nèi)存,支持外部串口FLASH和并口FLASH。其中,串口FLASH用于存放FPGA配置、Bootloader程序和系統(tǒng)程序,并口FLASH用于存放歷史數(shù)據(jù)。
JTAG調(diào)試口在開發(fā)階段可實現(xiàn)對FPGA硬件邏輯和軟件程序的調(diào)試,完成開發(fā)后還可以向FLASH下載配置參數(shù)和程序代碼。
MicroBlaze是Xilinx公司基于 FPGA 的32位RISC 哈佛架構(gòu)軟核嵌入處理器[7]。與傳統(tǒng)的獨立CPU相比,軟核嵌入處理器在可重構(gòu)建、可定制等方面特別具有優(yōu)勢[8],由FPGA實現(xiàn)的可編程單芯片系統(tǒng)(system on a programmable chip,SOPC),在體積、質(zhì)量、功耗、成本等各方面均有較大的優(yōu)勢[9]。
Xilinx為FPGA開發(fā)提供了功能強大的ISE設計平臺,ISE平臺為MicroBlaze提供了專用的處理器硬件設計工具XPS和軟件開發(fā)與調(diào)試工具SDK。由于嵌入處理器最終要與硬件邏輯電路共同存在FPGA內(nèi)部,所以頂層設計要在ISE內(nèi)進行;XPS是針對軟核和硬核處理器的設計工具,對軟件的設計和調(diào)試,主要在SDK中完成。
3.1 系統(tǒng)平臺搭建
在ISE頂層設計中,可借助BSB向?qū)Т罱∕icroBlaze系統(tǒng)平臺,BSB引導用戶設置參考時鐘、系統(tǒng)時鐘、Local Memory大小,并在BSB引導下添加SPI、UART、EMC、Ethernet和DDR3_SDRAM等外圍設備接口。此處還選擇使用浮點單元,并設置Instruction Cache和Data Cache分別為32 KB。完成BSB引導后,以上選擇都可以在XPS中重新配置,還可在“IP Catalog”工具欄中根據(jù)工程需要增加PCI、CAN、USB等其他IP,包括用戶自定義IP。
3.2 MicroBlaze與控制邏輯數(shù)據(jù)交互
MicroBlaze處理器需要把控制命令及流量測量相關參數(shù)傳遞給FPGA控制邏輯單元,同時也要接收從FPGA控制邏輯單元上傳的數(shù)據(jù)。上傳數(shù)據(jù)包括聲路傳播時間、超聲波形采集數(shù)據(jù)和波形信號分析數(shù)據(jù)。
控制邏輯單元每完成一次測量,都向MicroBlaze處理器發(fā)送中斷信號;MicroBlaze則調(diào)用中斷處理函數(shù)讀取數(shù)據(jù),并將下次測量參數(shù)傳送給控制邏輯單元。通過分析這一過程,完全可以將FPGA控制邏輯單元看作MicroBlaze的一個外設存儲器,即一個能同時被MicroBlaze處理器和FPGA控制邏輯單元訪問的雙端口RAM。
在MicroBlaze中,通過外部存儲器控制器(external memory controller,EMC) IP與控制邏輯單元進行數(shù)據(jù)交互,使MicroBlaze可以像訪問RAM一樣訪問控制邏輯單元。本系統(tǒng)中的FPGA控制邏輯單元和并口Flash都使用了EMC。EMC由XPS工具軟件免費提供,需由用戶根據(jù)具體存儲器類型和時序設置EMC中相關參數(shù)。
3.3 Bootloader
與ARM等嵌入式系統(tǒng)的啟動過程不同的是,F(xiàn)PGA 必須先完成內(nèi)部硬件配置,才能運行程序代碼[10]。雖然可以直接將程序代碼例化到FPGA內(nèi)部Block RAM(簡稱BRAM)中運行,但是由于FPGA內(nèi)部的BRAM資源非常有限,當遇到大型系統(tǒng)設計時(如帶TCP/IP協(xié)議棧) ,就必須使用外部RAM 來儲存程序代碼。此時,需要設計規(guī)模較小的Bootloader來完成用戶程序的引導,從Flash中讀取用戶程序并將其轉(zhuǎn)移到外部RAM中運行。
Bootloader和用戶程序在SDK中為兩個獨立工程,RAM的選擇都在“Generate linker script”中設置,本系統(tǒng)中Bootloader工程選擇FPGA內(nèi)部BRAM作為運行區(qū)域,應用工程選擇DDR3作為用戶程序運行區(qū)域。
Bootloader與處理器、外設類型和外設地址分配等系統(tǒng)硬件密切相關,不具有通用性。本系統(tǒng)選擇基于SPI接口的串行FLASH配置方式,SDK工具自帶SREC Bootloader工程模板。使用此模板前,還需要做以下工作。
①調(diào)整串行FLASH中用戶程序映射地址。
由于硬件配置文件和用戶程序都保存在同一個串行FLASH中,因此需根據(jù)download.bit硬件配置文件的大小調(diào)整應用程序在串行FLASH中所存放的映射地址位置。在模板blconfig.h中,其宏定義名為FLASH_IMAGE_BASEADDR,其值應不小于硬件配置文件大小,以防止硬件配置文件和用戶程序存儲地址發(fā)生沖突。
②初始化Bootloader到FPGA內(nèi)部BRAM。
確定在“Generate linker script”中選擇FPGA內(nèi)部BRAM作為Bootloader運行區(qū)域,并在執(zhí)行Program FPGA時選擇Bootloader的elf格式文件,命令完成后生成新的嵌入有Bootloader程序的download.bit文件。
③用戶程序srec格式。
用戶程序編譯前,需要在編譯設置中,對Post-Build Steps增加以下內(nèi)容:
mb-objcopy -O srec *.elf *.srec
其中,“*”應由用戶程序名替代,這樣在生成elf格式文件的同時將生成srec格式文件。
最后使用iMPACT軟件工具,將新生成的download.bit文件和srec格式文件一起生成MCS文件,并直接下載到串行FLASH中運行。需要注意的是,當在MCS中添加srec格式數(shù)據(jù)文件時,該數(shù)據(jù)文件起始地址應與FLASH_IMAGE_BASEADDR宏定義保持一致。
3.4 看門狗復位
看門狗(watchdog timer,WTD) 可以防止程序發(fā)生死循環(huán),或者說程序跑飛。WTD在MicroBlaze中,與傳統(tǒng)CPU不同。MicroBlaze作為CPU是由FPGA中各類資源組合形成的,若這些資源在運行中出現(xiàn)異常,僅依靠復位MicroBlaze可能無法解決,而必須通過PROGRAM_B復位引腳重新配置FPGA才能徹底解決。
WTD可以選擇由專用芯片完成,也可在FPGA內(nèi)部通過Verilog HDL硬件描述語言編程實現(xiàn)。本系統(tǒng)選擇后者,可使WTD溢出時間得到靈活控制。由于從串行FLASH中完成Bootloader的過程較長(需時約25 s),而專用芯片溢出時間都較短,因此除了要在主程序中喂狗外,還必須要在Bootloader中喂狗。通過使用FPGA內(nèi)建WTD,可以任意延長溢出時間,無需在Bootloader中喂狗。但為了系統(tǒng)安全,最好在進入Bootloader時就啟用WTD功能,對系統(tǒng)進行守護。
圖3為由FPGA內(nèi)部實現(xiàn)看門狗功能的流程示意圖。圖3中,CNT為時間計數(shù)器,Timer為設定的溢出時間,WDO為溢出復位信號,DLY控制WDO信號持續(xù)時間,WDI為喂狗輸入信號。每次喂狗時CNT都清零并重新計數(shù),一但程序跑飛不再及時給WDI信號,當CNT計數(shù)時間超過T時,WDO將復位系統(tǒng)。
圖3 看門狗流程圖
Fig.3 Flowchart of watchdog
圖4為采用PGA內(nèi)部看門狗的系統(tǒng)復位電路圖。圖4中,PROGRAM_B為FPGA低電平復位引腳,WDO信號直接控制PROGRAM_B,HSWAPEN決定FPGA在配置過程中所有I/O引腳是處在高電平還是懸空狀態(tài),配合LED燈DONE引腳可用于指示FPGA配置是否完成。為確保配置成功,HSWAPEN必須接低電平,使所有I/O引腳都處在高電平狀態(tài),防止因WDO出現(xiàn)低電平而致使FPGA始終處在復位狀態(tài)。
圖4 系統(tǒng)復位電路圖
Fig.4 Reset circuit of the system
在時差法超聲波流量計中,超聲波傳播時間測量大都采用閾值比較法[11],但在外界出現(xiàn)干擾時,此法將導致測量誤差,嚴重的可能出現(xiàn)測量錯誤。通過對超聲波和噪聲信號進行比較分析,提出了基于零點分析[12]的傳播時間測量方法。
當接收換能器接收到超聲波信號時,會在其電極兩端產(chǎn)生并輸出電信號y(t),用數(shù)學公式表示為:
y(t)=r(t)cos(2πf0t+φ)
(2)
式中:r(t)為關于時間的流體對超聲波調(diào)制函數(shù);f0為換能器固有諧振頻率;φ為初始相位(為了討論方便,設初始相位為零)。
當t=(2k+1)/4f0(k為整數(shù))時,y的值為零,該時刻點稱為零點。當超聲波在流體中傳播時,環(huán)境噪聲主要影響調(diào)制信號r(t)部分,對cos(2πf0t)部分沒有影響。因此,零點不受調(diào)制信號r(t)的影響,即不受信號y(t)的幅值波動影響。
根據(jù)這一特性,把cos(2πf0t)的第一個零點作為判斷接收超聲信號到達的標志,就可以很好地解決閾
值比較法中因環(huán)境噪聲而導致的到達時刻錯判問題。
波形數(shù)字信號分析模塊根據(jù)此原理,使用Verilog HDL硬件描述語言對這一過程進行解析,完成傳播時間測量和波形狀態(tài)分析,可為下次測量優(yōu)化范圍門、信號增益和濾波設置提供參考,使超聲收發(fā)電路始終保持在良好的工作狀態(tài)。
由單片F(xiàn)PGA構(gòu)成的SOPC系統(tǒng),其軟件升級和配置修改都非常靈活,特別是數(shù)據(jù)采集和信號分析能力,極大地提高了時差法超聲波流量計的計量精度。基于MicroBlaze軟核處理器所設計開發(fā)的時差式多聲路超聲波流量計已經(jīng)通國家水大流量計量站檢定,并達到了1級標準,流量誤差小于0.5%。
[1] 蔡武昌.超聲流量計的市場與應用[J] .世界儀表與自動化,2007,10( 11):14- 15.
[2] 霍殿中.大流量測量和多聲路超聲流量計[C]//全國流量測量學術交流會.2006:158-166.
[3] 蘭純純.時差法超聲波流量計的研究[D].重慶:重慶大學,2006.
[4] 段允,王讓定,朱瑩,等.一種抑制時差法超聲流量計靜態(tài)漂移的方法[J].微電子學與計算機,2010,27(8):205-209.
[5] 國家質(zhì)量監(jiān)督檢驗檢疫總局.GB 20043-2005水輪機、蓄能泵和水泵水輪機水力性能現(xiàn)場驗收試驗規(guī)程[S].2005.
[6] 李友平,夏洲,趙學東.UF911A超聲波流量量測系統(tǒng)[J].水電自動化與大壩監(jiān)測,2003,27(2):31-32.
[7] 劉永健.軟核嵌入處理器MicroBlaze[J].計算機與網(wǎng)絡,2012(15):64-66.
[8] 朱浩,徐建松,鄭慧娟.水輪機組模塊化狀態(tài)監(jiān)測裝置[J].水電自動化與大壩監(jiān)測,2011,35(3):37-40.
[9] 田耘,胡彬,徐文波.Xilinx ISE Design Suite 10.x FPGA開發(fā)指南——DSP、嵌入式與高速傳輸篇[M].北京:人民郵電出版社,2008.
[10]戴岳,苗長云,榮鋒.基于MicroBlaze軟核處理器的Bootloader設計[J].工礦自動化,2009(11):20-22.
[11]李廣峰,劉昉,高勇.超聲波流量計的高精度測量技術[J].儀器儀表學報,2001,22(6):644-647.
[12]朱浩,徐方明,閆麗.超聲波傳播時間測量方法研究[J].自動化儀表,2014(S1):110-112.
Application of Microblaze Soft Processor Core in Ultrasonic Flow Measurement System
In large flow measurement system, usually multiple CPUs with different architectures are required for collaboratively operation. In view of the complexity of multiple CPU system, a single chip high performance FPGA is adopted to realize all the functions including the measurement of ultrasonic transit time, signal analysis, data communication, and graphic display, etc. Inside FPGA, by instantiating MicroBlaze soft processor core, the dependence on external components is decreased, the complexity of system development is reduced, and the system can run more stable and reliable. Application results show that using FPGA not only simplifies the system and reduces the costs; the dynamic configurable properties also enhance the adaptability of system.
Ultrasonic Flowmeter Watchdog MicroBlaze FPGA Bootloader Time difference method Data interaction
朱浩(1976—),男,2005年畢業(yè)于國電自動化研究院電力系統(tǒng)及其自動化專業(yè),獲碩士學位,高級工程師;主要從事水電廠自動化、狀態(tài)監(jiān)測和超聲波流量計的研究。
TH814;TP216
A
10.16086/j.cnki.issn 1000-0380.201612015
修改稿收到日期:2016-06-29。