羅來(lái)金,曾連蓀
(上海海事大學(xué) 信息工程學(xué)院,上海 200135)
近年來(lái)FPGA以其硬件并行處理的高速性和可重配置性,在電子設(shè)計(jì)中得到了大規(guī)模的應(yīng)用。伴隨著制作工藝和不斷進(jìn)步及IP內(nèi)核概念的出現(xiàn),F(xiàn)PGA正在從傳統(tǒng)的系統(tǒng)粘合邏輯應(yīng)用轉(zhuǎn)移到系統(tǒng)核心處理應(yīng)用上來(lái)。
文中分析了傳統(tǒng)頻率信號(hào)處理方法的優(yōu)缺點(diǎn),采用ALTERA的Cyclone II系列FPGA完成某型衛(wèi)星陀螺組合X、Y、Z軸方向的角速和溫度傳感器發(fā)送來(lái)的頻率信號(hào)的測(cè)量與處理,并通過(guò)RS-422串口通信總線(xiàn)實(shí)現(xiàn)了與主控計(jì)算機(jī)的雙向通信。相比于以往采用單片機(jī)、DSP等器件實(shí)現(xiàn)數(shù)字脈沖頻率的測(cè)量及其數(shù)據(jù)處理,采用FPGA以及特定的算法來(lái)實(shí)現(xiàn)數(shù)字脈沖頻率的測(cè)量及其數(shù)據(jù)處理,后者具有高速、高穩(wěn)定度、高精度和高集成度的特點(diǎn),不會(huì)出現(xiàn)程序跑飛的情況,滿(mǎn)足航天系統(tǒng)對(duì)頻率信號(hào)測(cè)量的特定要求。
測(cè)頻法就是在確定的時(shí)間Tw內(nèi),記錄被測(cè)信號(hào)的變化周期數(shù)(或脈沖個(gè)數(shù))Nx,則被測(cè)信號(hào)的頻率為:Fx=Nx/Tw。該種測(cè)量方法會(huì)產(chǎn)生±1的計(jì)數(shù)誤差,測(cè)試精度與計(jì)數(shù)器的記錄值Nx有關(guān),頻率越高精度越大,因此該測(cè)量方法適用于高頻信號(hào)的測(cè)量。
測(cè)周法需要有標(biāo)準(zhǔn)的數(shù)字基準(zhǔn)時(shí)鐘頻率Fs,在待測(cè)信號(hào)的一個(gè)周期Tx內(nèi),記錄標(biāo)準(zhǔn)信號(hào)的周期數(shù)Ns。則被測(cè)信號(hào)的頻率為:Fx=Fs/Ns。該種測(cè)量方法Ns同樣也會(huì)產(chǎn)生±1的計(jì)數(shù)誤差,測(cè)試精度與計(jì)數(shù)器的記錄值Ns及標(biāo)準(zhǔn)頻率穩(wěn)定度有關(guān),適用于低頻信號(hào)的測(cè)量。
相位檢測(cè)法利用兩個(gè)頻率之間的周期性規(guī)律來(lái)產(chǎn)生計(jì)數(shù)閘門(mén),這種周期性規(guī)律就是兩個(gè)頻率的最小公倍數(shù)周期,如圖1所示。
圖1 相位檢測(cè)法頻率測(cè)量原理圖Fig.1 Schematic diagram of phase detection frequency measurement
理論上在這樣一個(gè)計(jì)數(shù)閘門(mén)時(shí)間段內(nèi)對(duì)標(biāo)準(zhǔn)頻率和被測(cè)頻率的計(jì)數(shù)都不會(huì)存在±1的誤差,沒(méi)有時(shí)間誤差,因此理論上精度無(wú)限高[2]。但實(shí)際上“絕對(duì)相位重合點(diǎn)”是不可能的,而且外加實(shí)際電路器件的延時(shí),計(jì)數(shù)閘門(mén)也會(huì)存在相應(yīng)的時(shí)間誤差,導(dǎo)致實(shí)際測(cè)量精度與理論有一定的差距。在此基礎(chǔ)上不少學(xué)者也提出并實(shí)現(xiàn)一些新的相位重合點(diǎn)檢測(cè)技術(shù),精度在一定程度上得到提高,但算法復(fù)雜。
等精度測(cè)量原理如下:在預(yù)置閘門(mén)信號(hào)的上升沿時(shí)不立即進(jìn)行計(jì)數(shù),而是等到被測(cè)信號(hào)脈沖的上升沿到來(lái)時(shí)開(kāi)始計(jì)數(shù),在閘門(mén)的下降沿到來(lái)時(shí)也不立即關(guān)閉計(jì)數(shù),而是等到被測(cè)信號(hào)的上升沿到來(lái)時(shí)停止計(jì)數(shù)。等精度測(cè)頻的原理圖如圖2所示。
圖2 等精度測(cè)量原理Fig.2 Principle of equal precision measuring
誤差分析如下:
假設(shè)待測(cè)信號(hào)頻率是Fx,標(biāo)準(zhǔn)信號(hào)頻率是Fs,在實(shí)際閘門(mén)時(shí)間TWS內(nèi)的計(jì)數(shù)值分別為Nx和Ns,則可得到下式:
所以
由于待測(cè)信號(hào)Fx的計(jì)數(shù)時(shí)間是由它本身的上升沿控制的,所以在閘門(mén)時(shí)間內(nèi)計(jì)數(shù)得到的Nx不存在誤差,而誤差產(chǎn)生只能是Ns帶來(lái)的,在TWS內(nèi)對(duì)標(biāo)準(zhǔn)信號(hào)Fs計(jì)數(shù)得到的Ns可能相差 1,即|△Ns|≤1,假設(shè)待測(cè)信號(hào)的準(zhǔn)確值為 Fx0,則可得到下式:
所以
采用等精度法進(jìn)行頻率測(cè)量可以使得測(cè)量相對(duì)誤差在6.25×10-5以?xún)?nèi)。
采用FPGA實(shí)現(xiàn)數(shù)字頻率信號(hào)的測(cè)量及處理的系統(tǒng)結(jié)構(gòu)如圖3所示。
圖3 系統(tǒng)框圖Fig.3 Block diagram of system
該系統(tǒng)下位機(jī)主要包括:頻率信號(hào)的測(cè)量、頻率信號(hào)的計(jì)算、數(shù)據(jù)通信、同步信號(hào)的產(chǎn)生4部分,全部在一片F(xiàn)PGA芯片上實(shí)現(xiàn)。RS-422串口通信總線(xiàn)采用SN75174和SN75175分別作為傳輸線(xiàn)驅(qū)動(dòng)器和傳輸線(xiàn)接收器。上位機(jī)采用MOXA公司的CP-132UL型RS-422卡,用VC++6.0提供的MScomm控件編寫(xiě)測(cè)試程序,實(shí)現(xiàn)了工控機(jī)和下位機(jī)的高速率雙向通信。
該部分主要包括預(yù)置閘門(mén)時(shí)間產(chǎn)生、閘門(mén)時(shí)間同步、計(jì)數(shù)器、數(shù)據(jù)鎖存器、清零信號(hào)產(chǎn)生模塊。其中關(guān)鍵是解決時(shí)序問(wèn)題,為保證計(jì)數(shù)的穩(wěn)定輸出,需要在完成計(jì)數(shù)后進(jìn)行鎖存并輸出,同時(shí)計(jì)數(shù)器清零,重新開(kāi)始計(jì)數(shù)。如圖4所示,在設(shè)計(jì)中利用預(yù)置閘門(mén)時(shí)間和實(shí)際閘門(mén)時(shí)間的“相位時(shí)差”完成清零信號(hào)的產(chǎn)生,產(chǎn)生必要的清零信號(hào)。
圖4 清零信號(hào)的產(chǎn)生Fig.4 Clear signals generated
數(shù)據(jù)處理是本系統(tǒng)實(shí)現(xiàn)的關(guān)鍵之一,本系統(tǒng)需要進(jìn)行計(jì)算的過(guò)程比較多,主要包括多位的乘法、除法以及數(shù)值比較、定點(diǎn)數(shù)與32位浮點(diǎn)數(shù)之間的轉(zhuǎn)換、32位浮點(diǎn)乘法,需要實(shí)現(xiàn)的數(shù)據(jù)處理過(guò)程順序如下:
第一步:待測(cè)信號(hào)的頻率計(jì)算。
其中Fs為標(biāo)準(zhǔn)信號(hào)頻率16 MHz,Nx與Ns為計(jì)數(shù)器所得值。
第二步:頻率歸一化。
第三步:電壓值計(jì)算。
第四步:角速度值計(jì)算。
Wx要求為32位單精度浮點(diǎn)數(shù),由于FGGA很難實(shí)現(xiàn)小數(shù)的乘法,所以需要轉(zhuǎn)換成定點(diǎn)數(shù)或者浮點(diǎn)數(shù)乘法來(lái)實(shí)現(xiàn)[3]。在第二步和第三步之間進(jìn)行定點(diǎn)數(shù)到32位浮點(diǎn)數(shù)轉(zhuǎn)換,采用32位單精度浮點(diǎn)數(shù)實(shí)現(xiàn)電壓值和角速度值的轉(zhuǎn)換,實(shí)現(xiàn)框圖如圖5所示。
圖5 FPGA數(shù)據(jù)處理方框圖Fig.5 Block diagram of FPGA data processing
伴隨著FPGA的發(fā)展,如今用它來(lái)實(shí)現(xiàn)定點(diǎn)數(shù)的乘除法是很方便,直接調(diào)用基本宏模塊提供的定點(diǎn)數(shù)乘除法IP核,進(jìn)行相應(yīng)參數(shù)的設(shè)置即可實(shí)現(xiàn)[4]。并且有的FPGA芯片還可以提供32位甚至64位的浮點(diǎn)數(shù)乘法器。方案使用的FPGA芯片是Altera公司提供的CycloneⅡ系列,該系列芯片提供了32位單精度的浮點(diǎn)數(shù)乘法器的基本宏模塊,利用其IP核及硬件乘法器可以加快產(chǎn)品的研發(fā)和提高系統(tǒng)的性能,因此在本模塊中采用了定點(diǎn)乘法器、定點(diǎn)除法器、定點(diǎn)數(shù)到單精度浮點(diǎn)數(shù)轉(zhuǎn)換等實(shí)用的IP核來(lái)解決系統(tǒng)中關(guān)鍵的運(yùn)算模塊,大大提高了系統(tǒng)數(shù)據(jù)處理的性能[5]。
頻率信號(hào)采集系統(tǒng)需要與主控計(jì)算機(jī)進(jìn)行通信,該系統(tǒng)中采用了RS-422串口通信總線(xiàn)。RS-422總線(xiàn)是一種單機(jī)發(fā)送、多機(jī)接收的單向、平衡傳輸規(guī)范,將傳輸速率提高到10 Mbit/s,克服了RS-232通信距離短、速率低的缺點(diǎn),滿(mǎn)足航天系統(tǒng)的特定要求[6]。下位機(jī)FPGA實(shí)現(xiàn)串口通信框圖如圖6所示。
圖6 串口通信模塊Fig.6 Serial communication module
該部分主要由波特率產(chǎn)生模塊、發(fā)送與接收模塊、數(shù)據(jù)處理模塊組成。數(shù)據(jù)處理模塊完成數(shù)據(jù)發(fā)送和接收緩沖、CRC-16校驗(yàn)及奇偶校驗(yàn)。波特率發(fā)生模塊用于產(chǎn)生特定的時(shí)鐘信號(hào)。接收和發(fā)送模塊則完成數(shù)據(jù)的串行接收和串行發(fā)送。為了提高數(shù)據(jù)判決的準(zhǔn)確性,采用16倍于波特率的時(shí)鐘信號(hào)對(duì)接收和發(fā)送波形進(jìn)行采樣。
頻率輸入信號(hào)采用標(biāo)準(zhǔn)的信號(hào)發(fā)生器產(chǎn)生,同步信號(hào)輸出用LED燈指示。如圖7所示,將FPGA燒結(jié)文件下載到實(shí)驗(yàn)系統(tǒng)上。每當(dāng)上位機(jī)用串口調(diào)試軟件發(fā)送88請(qǐng)求命令(附帶CRC-16校驗(yàn)碼),F(xiàn)PGA系統(tǒng)就會(huì)以0X55作為幀頭和幀尾,發(fā)送實(shí)時(shí)采集到的4組48位數(shù)據(jù)到上位機(jī)。
圖7 串口通信調(diào)試Fig.7 Debugging of serial communication
該系統(tǒng)經(jīng)過(guò)地面衛(wèi)星測(cè)試實(shí)驗(yàn)環(huán)境中的長(zhǎng)時(shí)間實(shí)驗(yàn),表明基于FPGA的衛(wèi)星數(shù)字頻率處理系統(tǒng)工作穩(wěn)定,成功實(shí)現(xiàn)了衛(wèi)星數(shù)字頻率信號(hào)的測(cè)量、處理、通信過(guò)程。
采用ALTERA公司的Cyclone II系列FPGA,使用VHDL語(yǔ)言編寫(xiě)FPGA代碼實(shí)現(xiàn)了對(duì)某型衛(wèi)星4路頻率信號(hào)測(cè)量、數(shù)據(jù)處理、通信過(guò)程,頻率測(cè)量精度達(dá)到1.562 5×10-5。相對(duì)于MCU、DSP,采用單片F(xiàn)PGA完成衛(wèi)星頻率信號(hào)的測(cè)量、處理和發(fā)送,具有低成本、低功耗、高速、高集成度、抗干擾的特點(diǎn),具有無(wú)可比擬的優(yōu)勢(shì)。
隨著FPGA技術(shù)和IP核技術(shù)的發(fā)展,今后可以采用速率更高,精度更高效的算法來(lái)實(shí)現(xiàn)頻率信號(hào)的測(cè)量及處理,將SOC技術(shù)應(yīng)用到現(xiàn)代電子系統(tǒng)中。
[1]National Instruments.Frequency measurements:How-to guide[EB/OL]. (2011-03-18).[2011-04-10].http://zone.ni.com/devzone/cda/tut/p/id/7111.
[2]王海,周渭,宣宗強(qiáng).高精度頻率測(cè)量技術(shù)及其實(shí)現(xiàn)[J].系統(tǒng)工程與電子技術(shù),2008,30(5):981-983.
WANG Hai, ZHOU Wei, XUAN Zong-qiang.High accuracy frequency measurement scheme and its implementation[J].Systems Engineering and Electronics,2008,30(5):981-983.
[3]Lee B,Burgess N.Parameterisable floating-point operations on FPGA[J].Conference Record of The Thirty-sixth Asilomar Conference on Signals, Systems, and Computers,2002(2):1064-1068.
[4]Altera.CycloneⅡ Device Handbook,Section 1.CycloneⅡdevice family data sheet[EB/OL].(2008-02)[2011-04-23].http://www.altera.com.cn/literature/hb/cyc2/cyc2_cii5v1_01.pdf
[5]Altera.Floating-point megafunction user guide[EB/OL].(2011-05)[2011-05-23].http://www.altera.com.cn/literature/ug/ug_altfp_mfug.pdf.
[6]丁云霞,曾連蓀.基于VC++6.0的RS-422串口通信設(shè)計(jì)[J].信息技術(shù),2010(9):73-75.
DING Yun-xia,ZENG Lian-sun.RS-422 serial communication based on VC++6.0[J].Information Technology,2010(9):73-75.