微機(jī)電(MEMS)陀螺廣泛應(yīng)用于航空、汽車自動(dòng)化和消費(fèi)類電子產(chǎn)品等領(lǐng)域,按照振動(dòng)結(jié)構(gòu)的不同,主要分為線振動(dòng)陀螺和旋轉(zhuǎn)振動(dòng)陀螺。隨著MEMS陀螺成本功耗不斷降低、體積重量逐漸減小,對(duì)其數(shù)字化方案也提出了新的要求如高精度、高采樣頻率等。為使MEMS陀螺能在高頻率下工作,數(shù)字化電路就需要具備高采樣頻率,而目前MEMS陀螺的數(shù)字化主要是通過采用嵌入式現(xiàn)場(chǎng)可編程門陳列(FPGA)、數(shù)字信號(hào)處理器(DSP)芯片或者它們的組合來實(shí)現(xiàn)。
最終使用MEMS陀螺在該平臺(tái)上進(jìn)行測(cè)試驗(yàn)證,使陀螺的信號(hào)解調(diào)和控制能在PC端實(shí)現(xiàn),實(shí)際的使用過程比一般的FPGA或者DSP更加便捷。通過PCIe(PCIexpress)總線,實(shí)現(xiàn)PC和采集卡的高速傳輸,最大控制延時(shí)小于10μs.
1、計(jì)算機(jī)實(shí)時(shí)控制系統(tǒng)穩(wěn)定低延遲優(yōu)化設(shè)計(jì)
實(shí)時(shí)性作為陀螺測(cè)控系統(tǒng)的關(guān)鍵指標(biāo),本節(jié)將著重設(shè)計(jì)和優(yōu)化控制系統(tǒng)的低延時(shí)性和穩(wěn)定性。第一部分低延遲性優(yōu)化主要包括硬件優(yōu)化和軟件優(yōu)化。硬件優(yōu)化需要考慮高速總線的類型和高速總線的傳輸控制方式;而軟件優(yōu)化則主要涉及到操作系統(tǒng)驅(qū)動(dòng)層面的優(yōu)化以及控制算法優(yōu)化。第二部分穩(wěn)定性優(yōu)化是讓計(jì)算機(jī)實(shí)時(shí)控制系統(tǒng)穩(wěn)定地產(chǎn)生輸出信號(hào),在實(shí)際工程中則是避免該系統(tǒng)對(duì)陀螺設(shè)備的控制受到中斷延時(shí)和傳輸延時(shí)波動(dòng)的影響。
1.1、數(shù)據(jù)傳輸?shù)牡脱觾?yōu)化
圖1 ?實(shí)時(shí)測(cè)控平臺(tái)低延遲優(yōu)化方案
圖1a展示了實(shí)時(shí)測(cè)控平臺(tái)的軟硬件框架和數(shù)據(jù)流向。硬件中斷發(fā)出后,AD采集到的數(shù)據(jù)需要經(jīng)過接口轉(zhuǎn)換層、FPGA的PCIeIP核、PCIe總線等才能到達(dá)計(jì)算機(jī)IO內(nèi)存空間。完成內(nèi)存地址映射后,用戶程序就可以從該內(nèi)存讀取數(shù)據(jù),進(jìn)行數(shù)據(jù)處理。在實(shí)際多線程的數(shù)據(jù)傳輸中,還會(huì)產(chǎn)生額外的延時(shí),如圖1b中所示,有中斷延時(shí)、線程延時(shí)和線程上下文切換延時(shí)等。其中中斷延時(shí)定義為計(jì)算機(jī)端硬件中斷產(chǎn)生到中斷服務(wù)程序(ISR)中第一條指令執(zhí)行的時(shí)間差,主要與內(nèi)核架構(gòu)、CPU主頻和負(fù)載有關(guān)。由于線程之間的調(diào)度,內(nèi)核需要準(zhǔn)備時(shí)間,用于保存和恢復(fù)線程上下文環(huán)境、獲取或釋放信號(hào)量等。線程延時(shí)定義為ISR中從產(chǎn)生喚醒正在等待的線程信號(hào),到線程執(zhí)行第一條指令的時(shí)間差。線程上下文切換時(shí)間則為一個(gè)線程運(yùn)行完到第二個(gè)線程第一條指令執(zhí)行的時(shí)間差。
圖1.1 ?實(shí)時(shí)測(cè)控平臺(tái)低延遲優(yōu)化方案
為了實(shí)現(xiàn)數(shù)據(jù)低延遲傳輸,下文將具體針對(duì)系統(tǒng)總線、傳輸控制方式、驅(qū)動(dòng)程序(硬件和軟件)、數(shù)據(jù)處理等逐個(gè)進(jìn)行優(yōu)化。
1)高速總線的類型優(yōu)化。
在測(cè)控系統(tǒng)中,總線是采集卡和計(jì)算機(jī)之間的橋梁,而總線的速度、帶寬等因素對(duì)系統(tǒng)的性能至關(guān)重要。本測(cè)控系統(tǒng)高速可靠的數(shù)據(jù)采集和傳輸依賴于計(jì)算機(jī)和采集卡之間的傳輸效率,因此選擇合適的總線可為后續(xù)板卡的進(jìn)階優(yōu)化提供保證。隨著計(jì)算機(jī)技術(shù)發(fā)展,總線技術(shù)也在不斷革新,應(yīng)用范圍也從低、中速IO設(shè)備逐漸擴(kuò)大到中高速設(shè)備。
為了驗(yàn)證不同總線在不同PC平臺(tái)下實(shí)際的傳輸速率,此處測(cè)試了4種情況(僅對(duì)目前已有的測(cè)試平臺(tái)):DOS系統(tǒng)下的PC104總線、WindowsXP下的PCI總線、Windows7以及Linux(內(nèi)核4.2)下的PCIe總線。其中本測(cè)試平臺(tái)的ISA總線和PCI總線掛在相應(yīng)的橋接芯片上,Windows7下的PCIe驅(qū)動(dòng)是采用Jungo公司的Windriver工具自動(dòng)生成的標(biāo)準(zhǔn)代碼。結(jié)果如表1所示。
表1 ?不同PC總線的IO讀寫延時(shí)測(cè)試
表1中“W+R-8b”代表讀和寫一個(gè)8位的數(shù),“W+R-32b”代表讀和寫一個(gè)32位的數(shù)。通過測(cè)試發(fā)現(xiàn),PCIe總線在傳輸速率上優(yōu)于PC104和PCI總線。對(duì)于不同系統(tǒng)下PCIe總線的延時(shí)結(jié)果顯示,Windows下IO讀寫各1字節(jié)延時(shí),耗時(shí)已達(dá)到15μs,而Linux下IO讀寫各4字節(jié)都只需1.8μs,原因是:Linux系統(tǒng)的實(shí)時(shí)性優(yōu)于Windows系統(tǒng)的;另外,Windows下的驅(qū)動(dòng)是Windriver工具自動(dòng)生成的,并沒有針對(duì)性的進(jìn)行過優(yōu)化。后文中的測(cè)試結(jié)果都是在Linux系統(tǒng)下完成。
2)傳輸控制方式優(yōu)化。
該測(cè)控平臺(tái)要求單次傳輸?shù)臄?shù)據(jù)量雖然比較少,但采樣頻率較高,對(duì)測(cè)控系統(tǒng)的動(dòng)態(tài)響應(yīng)能力提出了較高的要求。為滿足以上要求,需要一種快速的數(shù)據(jù)傳輸方式,常見的PCIe總線數(shù)據(jù)傳輸方式是PIO(programmedinput/output)和DMA(directmemoryaccess).DMA方式因不需要依賴CPU過量的中斷負(fù)載,一般在處理圖像等大數(shù)據(jù)傳輸中廣泛應(yīng)用,但是在對(duì)小數(shù)據(jù)量高速、高動(dòng)態(tài)響應(yīng)的情況下,卻無(wú)法保證數(shù)據(jù)傳輸?shù)募皶r(shí)性。
測(cè)試結(jié)果如表2所示,在Linux下,DMA方式讀16字節(jié)的數(shù)據(jù),傳輸時(shí)間就已經(jīng)超過了10μs.而PIO方式能實(shí)現(xiàn)小數(shù)據(jù)量高速傳輸,更適合本測(cè)控平臺(tái)。但是還需要對(duì)PC端PCIe驅(qū)動(dòng)進(jìn)一步優(yōu)化,保證實(shí)時(shí)性。
表2 ?DMA和PIO傳輸時(shí)間對(duì)比
另外,PC和采集卡通訊有2種常見的方式:一種方式是輪詢狀態(tài)寄存器,另一種方式是使用中斷。當(dāng)輪詢頻率過快的情況下,PC負(fù)載也會(huì)大,此時(shí)無(wú)法保證CPU能及時(shí)響應(yīng),必然會(huì)產(chǎn)生較大的延時(shí);而中斷方式能明顯緩解PC負(fù)載過重的情況。硬件中,外圍芯片F(xiàn)PGA中的PCIeIP核支持兩種不同的中斷方式:MSI中斷和Legacy中斷.MSI中斷是基于消息機(jī)制的,相比Legacy中斷更高效更快速。為此,在FPGA中單獨(dú)編寫了一個(gè)中斷處理模塊,就能實(shí)現(xiàn)將硬件的MSI中斷請(qǐng)求通過PCIe總線發(fā)送到PC端。下文搭建了一個(gè)產(chǎn)生MSI控制信號(hào)的仿真環(huán)境,對(duì)MSI中斷進(jìn)行了仿真驗(yàn)證。模擬仿真了兩個(gè)設(shè)備:RC(RootComplex)和EP(EndPointDevice),分別由PC機(jī)和PCIe板卡模擬,仿真結(jié)果如圖2所示。
圖2中,cfg_interrupt為EndPointDevice產(chǎn)生的中斷信號(hào),中斷發(fā)生后,RootComplex接收到數(shù)據(jù)包m_axis_rx_tdata,其中01a00004為消息頭,數(shù)據(jù)為0x01020304.
3)PC端PCIe驅(qū)動(dòng)優(yōu)化。
通常情況下,內(nèi)核層PCIe驅(qū)動(dòng)編寫好以后,開發(fā)者會(huì)給用戶提供一個(gè)通用的應(yīng)用庫(kù),用戶可以在用戶層完成相關(guān)算法的編寫,方便研究人員更快速地進(jìn)行開發(fā)工作??紤]到用戶層權(quán)限低,用戶和內(nèi)核空間的數(shù)據(jù)傳輸存在延時(shí)會(huì)影響系統(tǒng)穩(wěn)定性,降低數(shù)據(jù)傳輸速率。因此,本平臺(tái)將控制算法的實(shí)現(xiàn)搬移到內(nèi)核層,同時(shí)也給用戶提供了一個(gè)相應(yīng)的庫(kù),方便用戶修改控制算法中的參數(shù)。
4)控制算法的優(yōu)化。
前面提到算法在內(nèi)核層實(shí)現(xiàn),陀螺閉環(huán)控制中,需要產(chǎn)生正弦余弦信號(hào)。為了解決內(nèi)核浮點(diǎn)兼容性和減少指令計(jì)算時(shí)間,本平臺(tái)采用查表的方式,自制了一個(gè)正余弦表,將浮點(diǎn)運(yùn)算轉(zhuǎn)換為定點(diǎn)運(yùn)算。因?yàn)镻C機(jī)CPU主頻高,所以查表的方式也能加速代碼的運(yùn)行。
1.2、穩(wěn)定的實(shí)時(shí)數(shù)據(jù)傳輸設(shè)計(jì)
低延遲優(yōu)化能使數(shù)據(jù)在最短時(shí)間里從硬件傳輸?shù)絇C端。但是由于PC安裝的是多任務(wù)的操作系統(tǒng),無(wú)法保證每次都能在一個(gè)周期的同一個(gè)時(shí)間點(diǎn)響應(yīng)中斷,這一特性決定了這個(gè)最短時(shí)間不是一個(gè)固定值,而是一個(gè)范圍。在實(shí)際中,取值不定的這個(gè)最短時(shí)間會(huì)引發(fā)數(shù)據(jù)傳輸?shù)牟环€(wěn)定,從而導(dǎo)致對(duì)陀螺的控制不連續(xù)。
針對(duì)陀螺控制的不連續(xù)問題,以中斷延時(shí)為例,分析了由該現(xiàn)象產(chǎn)生的負(fù)面影響,并設(shè)計(jì)了一套可靠的控制時(shí)序,如圖3所示。假設(shè)它們都發(fā)生在ISR中,在一個(gè)周期中,進(jìn)中斷函數(shù)后,先讀取下位機(jī)中AD的數(shù)據(jù),進(jìn)行數(shù)據(jù)處理,將解析完的數(shù)據(jù)再經(jīng)過總線返回DA的值。圖3a表示在中斷和傳輸延時(shí)都固定時(shí),正常的數(shù)據(jù)傳輸過程。而實(shí)際應(yīng)用中,中斷和傳輸延時(shí)都會(huì)波動(dòng)。以中斷延時(shí)為例,圖3b中第二個(gè)中斷信號(hào)到達(dá)時(shí),假設(shè)已延時(shí)△t1,后續(xù)的讀寫操作相應(yīng)的也會(huì)延遲△t1.當(dāng)FPGA(下位機(jī))往DA2寄存器寫數(shù)據(jù)的時(shí)刻,寫入的是上一周期中的DA1里的值,因?yàn)镻C端并沒有及時(shí)返回DA2的值(延時(shí)△t1),導(dǎo)致數(shù)據(jù)沒有實(shí)時(shí)更新;另外,還有丟失中斷的可能性,如圖3b中的中斷3.這兩個(gè)問題都將加大陀螺控制的不穩(wěn)定性。
圖3 ?數(shù)據(jù)傳輸控制時(shí)序優(yōu)化
由此可知,為了達(dá)到陀螺數(shù)據(jù)傳輸?shù)姆€(wěn)定性和可靠性要求,除了要優(yōu)化MSI中斷控制方式和PIO方式傳輸方式,還需要上位機(jī)即PC和下位機(jī)即FPGA之間制定一套高效的握手協(xié)議。
2、陀螺控制系統(tǒng)
根據(jù)陀螺的工作原理,陀螺數(shù)字控制系統(tǒng)詳細(xì)的總框圖如圖4所示。陀螺數(shù)字控制系統(tǒng)由4個(gè)部分組成:陀螺表頭(包括前置處理電路)、ADC與DAC調(diào)理電路及FPGA外圍電路、系統(tǒng)總線PCIe的控制和PC端的陀螺控制算法。
圖4 ?完整的系統(tǒng)框圖
第1部分是和陀螺直接連接的前置放大電路,前置電路產(chǎn)生陀螺的驅(qū)動(dòng)電壓并對(duì)陀螺輸出的信號(hào)做初步的放大處理,用于提高信號(hào)的信噪比。
第2部分是AD和DA數(shù)據(jù)采集卡。由于既要采集AD的數(shù)據(jù)和控制DA的數(shù)據(jù)輸出,又要與PC端進(jìn)行高速的通訊,在這里采用能支持PCIe2.0的XilinxArtix7FPGA,F(xiàn)PGA大大簡(jiǎn)化了數(shù)字電路的設(shè)計(jì)難度,便捷地處理AD和DA的時(shí)序還能提升PCB板的集成度。需要注意的是,這里的FPGA主要用于簡(jiǎn)化數(shù)字電路的設(shè)計(jì)以及實(shí)現(xiàn)和計(jì)算機(jī)進(jìn)行高速通信,并不涉及陀螺控制信號(hào)的處理。
第3部分是FPGA和PC進(jìn)行高速通訊的PCIe總線。
第4部分則是PC端的陀螺算法實(shí)現(xiàn),
主要包括陀螺驅(qū)動(dòng)軸頻率閉環(huán)和幅度閉環(huán)控制。經(jīng)過LSMD(leastsquaredmeandifference,最小均方差)解調(diào)以后的驅(qū)動(dòng)軸檢測(cè)信號(hào)分為正交分量和同相分量:其中正交分量與參考信號(hào)有90°的相位差,可以近似反映陀螺本身的幅值信息;而同向分量與參考信號(hào)同相位,可以近似反映陀螺本身的相位信息。低通濾波用于除去二倍頻分量,在實(shí)際的閉環(huán)過程中,首先給陀螺驅(qū)動(dòng)軸頻率設(shè)定一個(gè)預(yù)估值,此時(shí)陀螺的驅(qū)動(dòng)軸檢測(cè)信號(hào)和驅(qū)動(dòng)信號(hào)相位差接近-90°,并通過PI控制器作為反饋量,閉環(huán)控制驅(qū)動(dòng)軸的輸入頻率,最終使其穩(wěn)定在諧振頻率。
3、實(shí)驗(yàn)結(jié)果及分析
圖5a為PCIe的采集板卡:底板上主要是XilGinxArtix7芯片和PCIe的接口,主要功能是用于簡(jiǎn)化外圍電路和PCIe總線的邏輯控制;AD/DA轉(zhuǎn)換板上是AD和DA的調(diào)理電路,用于高精度陀螺信號(hào)的采集和控制信號(hào)的發(fā)生。圖5b是用于測(cè)試的MEMS陀螺。
圖5 ?采集卡和實(shí)際用陀螺
3.1、總延時(shí)時(shí)間消耗分布測(cè)試
為了進(jìn)一步了解程序運(yùn)行時(shí)各部分功能所占用的時(shí)間,對(duì)數(shù)據(jù)讀寫以及代碼量進(jìn)行了延時(shí)測(cè)試。圖6中,“read”代表PC端讀4字節(jié)所占用的時(shí)間,“write”代表PC端寫4字節(jié)到板卡所占用的時(shí)間,“read+write”代表讀和寫各4字節(jié)所占用的時(shí)間,“gyroGcode”代表單軸陀螺代碼(小于1000條指令)運(yùn)行占用的時(shí)間。
圖6 ?傳輸耗時(shí)分布圖
3.2、陀螺控制測(cè)試結(jié)果
為了驗(yàn)證測(cè)控平臺(tái)的可行性,本系統(tǒng)對(duì)陀螺控制程序進(jìn)行簡(jiǎn)化,僅有陀螺驅(qū)動(dòng)軸閉環(huán)控制(包括幅值閉環(huán)和頻率閉環(huán)控制),檢測(cè)軸開環(huán),無(wú)自補(bǔ)償環(huán)路。實(shí)測(cè)的頻率閉環(huán)控制過渡過程如圖7所示,大概在0.3s以后,驅(qū)動(dòng)頻率最終穩(wěn)定在3067Hz,頻率閉環(huán)控制達(dá)到了很好的控制效果。
圖 7 ?頻率閉環(huán)控制曲線
實(shí)測(cè)的幅值閉環(huán)控制過渡過程如圖8所示,幅值最終穩(wěn)定在1V左右,與設(shè)定值相符
圖8 ?幅度閉環(huán)控制曲線
4、結(jié)論
本文提出了一個(gè)用于MEMS陀螺的PCIe實(shí)時(shí)測(cè)控平臺(tái)。通過硬件和軟件優(yōu)化,減少數(shù)據(jù)傳輸延時(shí),并且利用高效的數(shù)據(jù)傳輸時(shí)序,實(shí)現(xiàn)了陀螺驅(qū)動(dòng)頻率閉環(huán)和幅度閉環(huán)控制,使線振動(dòng)陀螺工作在諧振頻率上且幅值穩(wěn)定,最終將測(cè)控系統(tǒng)的數(shù)據(jù)傳輸延時(shí)降低至10μs.下一步將通過優(yōu)化實(shí)時(shí)內(nèi)核,提高該測(cè)控系統(tǒng)的采樣頻率,為更高工作頻率的陀螺提供高速、可靠、穩(wěn)定的數(shù)據(jù)傳輸方案.
評(píng)論