曹彬乾,程遠(yuǎn)增,楊 青
(軍械工程學(xué)院電子與光學(xué)工程系,河北石家莊050003)
由于火控系統(tǒng)工作環(huán)境特殊,所需采集信號(hào)復(fù)雜多樣,傳統(tǒng)的以微控制器或PC為主的采集系統(tǒng)往往難以勝任[1,2]。針對(duì)上述問(wèn)題,提出了一種基于STM32+FPGA的數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方案,該方案不僅能夠完成對(duì)多路多樣信號(hào)實(shí)時(shí)、精確地采集,而且具有高速信號(hào)處理和數(shù)據(jù)傳輸能力,具有集成化程度高、體積小、資源豐富、價(jià)格便宜等優(yōu)點(diǎn)。
在實(shí)際應(yīng)用中,所采集的信號(hào)既有模擬信號(hào),也有數(shù)字差分信號(hào),并且有多通道、串并混合、數(shù)據(jù)量大等特點(diǎn)。為了滿足需求,本文設(shè)計(jì)了圖1所示的數(shù)據(jù)采集系統(tǒng),它能根據(jù)需求進(jìn)行6路±10V模擬信號(hào),18路數(shù)字差分信號(hào)的采集、處理和實(shí)時(shí)傳輸。系統(tǒng)采用STM32+FPGA的組合方式,F(xiàn)PGA為Alter公司的EP1K50TC144器件,由STM32417給FPGA發(fā)送控制命令,通過(guò)FPGA內(nèi)部的地址譯碼、邏輯控制以及數(shù)據(jù)緩沖實(shí)現(xiàn)信號(hào)采集[3],并通知STM32417對(duì)數(shù)據(jù)進(jìn)行讀取,最后,由STM32417對(duì)得到的數(shù)據(jù)進(jìn)行處理和傳輸。
其中,STM32F417是意法半導(dǎo)體公司生產(chǎn)的基于ARMCortex-M4架構(gòu)的微控制器,內(nèi)核架構(gòu)先進(jìn),性能優(yōu)越,主頻可達(dá)168MHz,執(zhí)行效率高,具有較高的運(yùn)算能力及數(shù)據(jù)處理能力,擁有豐富的外設(shè)接口和擴(kuò)展功能[4]。在圖1中,STM32F417與上位機(jī)之間的以太網(wǎng)通信,就是MII(medium independent interface)外接DP83848物理層芯片,通過(guò)相關(guān)配置后擴(kuò)展實(shí)現(xiàn)的。
STM32F417與FPGA的接口方式有很多種,可以是串行的,也可以是并行的,考慮到FPGA在多路并行數(shù)據(jù)處理方面有明顯優(yōu)勢(shì)[5,6],設(shè)計(jì)采用STM32F417的可變靜態(tài)存儲(chǔ)控制器(flexible static memory controller,F(xiàn)SMC)并行總線接口實(shí)現(xiàn)與FPGA的連接。
FSMC是STM32系列采用的一種新型的存儲(chǔ)器擴(kuò)展技術(shù),支持不同的外部存儲(chǔ)器類型,其中就包括多種類型的靜態(tài)存儲(chǔ)器[7],因此,可將FPGA當(dāng)成STM32F417的外部SRAM來(lái)配置,通過(guò)擴(kuò)展出的數(shù)據(jù)/地址/控制三總線來(lái)實(shí)現(xiàn)操作,這樣既能保證較快的操作速度,又具有很高的靈活性。接口電路硬件連接如圖2所示。
圖2 STM32F417與FPGA接口連接電路
將FPGA直接連接在STM32F417的FSMC總線上,F(xiàn)SMC提供了4個(gè)Bank用于連接外部不同的存儲(chǔ)器,每個(gè)Bank有獨(dú)立的片選信號(hào),F(xiàn)SMC_NE3是Bank1第三區(qū)的片選信號(hào),F(xiàn)SMC_NOE和FSMC_NEW分別是接口讀寫信號(hào),根據(jù)應(yīng)用需求,設(shè)計(jì)接口數(shù)據(jù)寬度為16位,地址線為10位,將數(shù)據(jù)線FSMC_D[15~0],地址線FSMC_A[9~0]連接到FPGA的I/O端口,尋址空間為1K字。除此之外,還有一些中斷信號(hào)(INT),用于FPGA向STM32F417發(fā)送中斷請(qǐng)求。這樣FPGA就作為STM32F417的外設(shè)連接在了系統(tǒng)中,通過(guò)存儲(chǔ)器讀寫指令就可以訪問(wèn)FPGA。
在STM32F417內(nèi)部,F(xiàn)SMC的一端通過(guò)內(nèi)部高速總線AHB連接到內(nèi)核Cortex-M4,另一端則是面向擴(kuò)展存儲(chǔ)器的外部總線,內(nèi)部AHB總線的地址HADDR與FSMC總線地址存在一定的映射關(guān)系。
FPGA連接在FSMC的Bank1第三區(qū),HADDR總共有28根地址線(HADDR[27~0]),其中HADDR[26~27]用來(lái)對(duì)Bank1的4個(gè)區(qū)進(jìn)行尋址。當(dāng)PFGA使用第三區(qū)時(shí),對(duì)應(yīng)的HADDR[27∶26]等于10。當(dāng)Bank1在外接16位寬度存儲(chǔ)器時(shí)候,只有HADDR[25∶1]是有效的,對(duì)應(yīng)關(guān)系變?yōu)?HADDR[25∶1](FSMC[24∶0],由此可知,接口地址FSMC_A[9~0]對(duì)應(yīng)的HADDR的地址為0x68000000~0x680007FE,在進(jìn)行地址讀寫操作時(shí),HADDR[0]并沒(méi)有用到,相當(dāng)于地址右移了1位,使得每次讀寫操作時(shí),函數(shù)中的地址增量都為2。
根據(jù)應(yīng)用需求,模擬信號(hào)采集選用MAXIN公司的12位AD轉(zhuǎn)換芯片MAX196。該芯片有6個(gè)單端模擬輸入通道,并且其量程范圍、通道選擇、工作方式均編程可控,轉(zhuǎn)換時(shí)間為6μs,采樣速率為100ksps,具有精度高、功耗低、開(kāi)發(fā)方便等特點(diǎn)[8]。
由于MAX196芯片是5V電壓供電,為了解決邏輯電壓匹配的問(wèn)題,設(shè)計(jì)使用電壓轉(zhuǎn)換芯片SN74AHCT245PWLE來(lái)實(shí)現(xiàn)FPGA與AD的連接。由FPGA控制AD進(jìn)行信號(hào)采集,使用其內(nèi)部邏輯,完成芯片的配置、中斷的響應(yīng)以及轉(zhuǎn)換結(jié)果的緩存,F(xiàn)PGA內(nèi)部邏輯電路如圖3所示。此邏輯電路主要由AD控制模塊、寫緩存控制模塊和雙口RAM緩存3部分組成。
3.1.1 AD控制模塊
AD控制模塊用來(lái)完成MAX196的采集時(shí)序的控制,為了確保時(shí)序控制的準(zhǔn)確性和連續(xù)性,設(shè)計(jì)一個(gè)狀態(tài)機(jī),如圖4所示,從STATE0~STATE3依次變化,整個(gè)過(guò)程對(duì)應(yīng)一次完整的采集周期,系統(tǒng)中所有的系統(tǒng)時(shí)序由外部40 M有源晶振產(chǎn)生。
圖3 AD采集內(nèi)部邏輯電路
圖4 AD采集控制狀態(tài)機(jī)
狀態(tài)機(jī)的初始狀態(tài)為STATE3,控制端口默認(rèn)置高,在FPGA在收到STM32F417發(fā)出的采集命令en后,轉(zhuǎn)入STATE0,輸出脈沖(wr+cs)啟動(dòng)AD轉(zhuǎn)換,并且向AD芯片寫入8位控制字,完成初始化,然后,STATE1等待AD完成數(shù)據(jù)轉(zhuǎn)換,轉(zhuǎn)換結(jié)束時(shí),AD產(chǎn)生中斷信號(hào)int,接著進(jìn)入STATE2,進(jìn)而輸出脈沖信號(hào)(rd+cs),讀取轉(zhuǎn)換的結(jié)果。該過(guò)程使用Verilog HDL語(yǔ)言來(lái)描述[9],時(shí)序仿真如圖5所示。
圖5 AD控制時(shí)序仿真
在實(shí)際應(yīng)用中,AD的轉(zhuǎn)換量程選擇為±10V,雙極性,使用內(nèi)部轉(zhuǎn)換模式,控制字后3位選擇輸入通道。由MAX196用戶文檔可知,通道0采集的控制字為0x58,假設(shè)得到的轉(zhuǎn)換結(jié)果為0x3EF,為了下一步數(shù)據(jù)存儲(chǔ)的需求,設(shè)計(jì)將數(shù)據(jù)緩存在寄存器data[11∶0]中,并產(chǎn)生一個(gè)over中斷信號(hào)用于后期處理。
3.1.2 數(shù)據(jù)緩存
緩存的設(shè)置主要是解決AD連續(xù)高速的數(shù)據(jù)采集與STM32F417數(shù)據(jù)處理周期不匹配的問(wèn)題,當(dāng)AD完成一個(gè)通道的數(shù)據(jù)采集時(shí),需要對(duì)數(shù)據(jù)進(jìn)行緩存,考慮到FSMC總線接口的特點(diǎn),在設(shè)計(jì)中,使用FPGA內(nèi)部的雙口RAM完成數(shù)據(jù)緩存[10],由Quartus II自帶的IP核生成,其中RAM的讀取端連接FSMC接口,而寫入端連接AD,寫緩存的地址通過(guò)寫緩存控制模塊進(jìn)行控制。
信號(hào)en在啟動(dòng)AD控制模塊的同時(shí),將寫緩存控制模塊的地址清0,在over信號(hào)的觸發(fā)下,地址加1,并且產(chǎn)生RAM寫信號(hào)ram_we,寄存器data[11∶0]的數(shù)據(jù)寫入RAM里,在連續(xù)6路的采集中,每一路的數(shù)據(jù)對(duì)應(yīng)不同的地址,進(jìn)而完成數(shù)據(jù)的緩存。時(shí)序仿真如圖6所示。
圖6 緩存讀寫時(shí)序
采集結(jié)束后,STM32F417通過(guò)讀取存儲(chǔ)地址分別得到6個(gè)通道的采集數(shù)據(jù),進(jìn)而完成下一步的數(shù)據(jù)處理和傳輸。
數(shù)字差分信號(hào)的采集首先需要將差分電平轉(zhuǎn)換成數(shù)字電平,選用MAXIN公司的MAX3362作為數(shù)字差分信號(hào)收發(fā)器。數(shù)字信號(hào)既有并行數(shù)據(jù),也有串行數(shù)據(jù),在同步觸發(fā)脈沖的作用下,可通過(guò)FPGA內(nèi)部邏輯電路對(duì)數(shù)據(jù)進(jìn)行處理。對(duì)于15路并行數(shù)據(jù),通過(guò)集成電路74373+74541的邏輯組合模塊進(jìn)行采集,在同步時(shí)鐘sync1置高時(shí)將數(shù)據(jù)鎖存至74373,而對(duì)于1路串行數(shù)據(jù),則通過(guò)74164+74541的邏輯組合,在觸發(fā)脈沖sync2的上升沿將數(shù)據(jù)由串行轉(zhuǎn)為并行,STM32F417向?qū)?yīng)的地址發(fā)出讀指令,地址經(jīng)譯碼后,選通緩沖器74541,從而得到相應(yīng)數(shù)據(jù)。
系統(tǒng)上電后,STM32和FPGA首先進(jìn)行硬件初始化,其中FPGA通過(guò)PS的方式完成配置。STM32啟動(dòng)定時(shí)器產(chǎn)生定時(shí)中斷,在中斷響應(yīng)中,發(fā)送開(kāi)始采集命令,進(jìn)而啟動(dòng)FPGA內(nèi)部邏輯電路進(jìn)行信號(hào)采集控制和數(shù)據(jù)緩存,在采集結(jié)束后,STM32響應(yīng)FPGA發(fā)出的結(jié)束中斷請(qǐng)求、讀取數(shù)據(jù)、處理數(shù)據(jù)并將處理后的結(jié)果打包發(fā)送至上位機(jī),最后,上位機(jī)接收數(shù)據(jù)并顯示結(jié)果。
系統(tǒng)工作流程如下圖7所示。
圖7 數(shù)據(jù)采集系統(tǒng)流程
STM32F417通過(guò)網(wǎng)口將結(jié)果發(fā)送至上位機(jī),其以太網(wǎng)通信是基于LwIP協(xié)議棧,利用改進(jìn)后的UDP協(xié)議,實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)可靠的傳輸。PC上位機(jī)則通過(guò)C++Bulider平臺(tái)上的TNMUDP控件完成數(shù)據(jù)的接收。采集系統(tǒng)在實(shí)際實(shí)驗(yàn)中,控制MAX196完成6個(gè)通道采集的時(shí)間為約40μs,加上讀取、處理、傳輸和顯示的時(shí)間,系統(tǒng)可在50μs內(nèi)完成全部采集和處理,設(shè)置定時(shí)器TIM1,使其50μs中斷一次,并在中斷響應(yīng)中再次發(fā)送采集命令,實(shí)現(xiàn)精確時(shí)間間隔的連續(xù)采集。
通過(guò)信號(hào)發(fā)生器,產(chǎn)生50Hz的正弦波,連續(xù)采集波形如圖8所示。
模擬通道和數(shù)字信號(hào)端口分別對(duì)給定值連續(xù)測(cè)試5000次,統(tǒng)計(jì)結(jié)果的誤差和誤碼率見(jiàn)表1。
圖8 50Hz正弦信號(hào)采集
表1 測(cè)試誤差統(tǒng)計(jì)
測(cè)試的結(jié)果表明,模擬通道測(cè)量誤差在10m V之內(nèi),數(shù)字信號(hào)端誤碼率為0,系統(tǒng)采集精度滿足設(shè)計(jì)要求。
本系統(tǒng)很好地結(jié)合了STM32微控制器和FPGA可編程器件兩者的長(zhǎng)處,利用STM32硬件中的FSMC、Ethernet MAC、定時(shí)器等外設(shè)功能,以及FPGA靈活的邏輯可操控性,解決了系統(tǒng)接口設(shè)計(jì)、時(shí)序控制、組網(wǎng)傳輸?shù)葟?fù)雜問(wèn)題,實(shí)現(xiàn)了火控系統(tǒng)信息多通道、多類型信號(hào)的實(shí)時(shí)采集,保證了精度高、傳輸快,實(shí)時(shí)處理的采集要求,為后續(xù)應(yīng)用打下了良好的基礎(chǔ)。同時(shí),簡(jiǎn)化系統(tǒng)硬件設(shè)計(jì),縮小了系統(tǒng)體積和開(kāi)發(fā)周期,具有極高的性價(jià)比。本系統(tǒng)還保留了很大的靈活性,可輕松進(jìn)行二次開(kāi)發(fā),組合架構(gòu)可應(yīng)用于不同的信號(hào)采集領(lǐng)域,有廣闊的應(yīng)用前景和參考價(jià)值。
[1]ZHU Xiaopeng,XIAO Tiejun,ZHAO Hui.System design of real-time data acquisition based on ARM and FPGA[J].Computer Engineering and Design,2009,30(13):3088-3089(in Chinese).[朱曉鵬,肖鐵軍,趙蕙.ARM+FPGA的實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(13):3088-3089.]
[2]XIAO Zusheng,CHENG Ming.Design of data acquisition and analysis system based on FPGA[J].Application of Electronic Technique,2009,35(3):49-50(in Chinese).[肖祖勝,程明.基于FPGA的數(shù)據(jù)采集分析系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2009,35(3):49-50.]
[3]ZHANG Yigang,SU Jungao,LIU Zhaoqing.Design of seeker da-ta acquisition system based on DSP and FPGA[J].Electronic Measurement Technology,2008,31(5):109-112(in Chinese).[張毅剛,蘇俊高,劉兆慶.基于DSP和FPGA的導(dǎo)引頭數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].電子測(cè)量技術(shù),2008,31(5):109-112.]
[4]STMicroelectronics.STM32F415xx/417xx datasheet[OL].http://www.st.com/,2011:1-156(in Chinese).[意法半導(dǎo)體.STM32F415xx/417xx參考手冊(cè)[OL].http://www.st.com/,2011:1-156.]
[5]XIN Junjun,HUANG Songling,LIU Lili,et al.Design of super multi-channel and high-speed data acquisition system based on FPGA[J].Electrical Measurement &Instrumentation,2008,45(10):34-36(in Chinese).[辛君君,黃松嶺,劉立力,等.基于FPGA的超多通道高速數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].電測(cè)與儀表,2008,45(10):34-36.]
[6]YANG Guangyou,PAN Wu.Reconfigurable high-speed ethernet data acquisition platform design[J].Machine Tool &Hydraulics,2009,37(8):282-283(in Chinese).[楊光友,潘武.可重構(gòu)的高速以太網(wǎng)數(shù)據(jù)采集平臺(tái)設(shè)計(jì)[J].機(jī)床與液壓,2009,37(8):282-283.]
[7]PAN Hui.NOR Flash memory extension based on STM32-FSMC[J].Microcontrollers &Embedded Systems,2009(10):31-33(in Chinese).[潘輝.STM32-FSMC機(jī)制的NOR Flash存儲(chǔ)器擴(kuò)展技術(shù)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2009(10):31-33.]
[8]Maxim Inc.MAX196/MAX198 datasheet[OL].http://www.maxim-ic.com/,2011:1-16(in Chinese).[美信公司.MAX196/MAX198參考手冊(cè)[OL].http://www.maxim-ic.com/,2011:1-16.]
[9]DU Huimin,LI Youmou.FPGA design based on Verilog[M].Xi'an:Xidian University Press,2006:60-290(in Chinese).[杜慧敏,李宥謀.基于Verilog的FPGA設(shè)計(jì)基礎(chǔ)[M].西安:西安電子科技大學(xué)出版社,2006:60-290.]
[10]LI Yanjun,GUO Zhenggang,ZHANG Zhixin,et al.Design of multi-channel synchronal data acquisition system based on FPGA[J].Microcomputer Information,2007,24(26):21-22(in Chinese).[李艷軍,郭正剛,張志新,等.基于FPGA多通道同步數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)信息,2007,24(26):21-22.]