引言
由于火控系統(tǒng)工作環(huán)境特殊,所需采集信號復(fù)雜多樣,傳統(tǒng)的以微控制器或PC為主的采集系統(tǒng)往往難以勝任。針對上述問題,提出了一種基于STM32+FPGA的數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方案,該方案不僅能夠完成對多路多樣信號實(shí)時(shí)、精確地采集,而且具有高速信號處理和數(shù)據(jù)傳輸能力,具有集成化程度高、體積小、資源豐富、價(jià)格便宜等優(yōu)點(diǎn)。
1、系統(tǒng)總體設(shè)計(jì)
在實(shí)際應(yīng)用中,所采集的信號既有模擬信號,也有數(shù)字差分信號,并且有多通道、串并混合、數(shù)據(jù)量大等特點(diǎn)。為了滿足需求,本文設(shè)計(jì)了圖1所示的數(shù)據(jù)采集系統(tǒng),它能根據(jù)需求進(jìn)行6路±10V模擬信號,18路數(shù)字差分信號的采集、處理和實(shí)時(shí)傳輸。系統(tǒng)采用STM32+FPGA的組合方式,F(xiàn)PGA為ALTER公司的EP1K50TC144器件,由STM32417給FPGA發(fā)送控制命令,通過FPGA內(nèi)部的地址譯碼、邏輯控制以及數(shù)據(jù)緩沖實(shí)現(xiàn)信號采集,并通知STM32417對數(shù)據(jù)進(jìn)行讀取,最后,由STM32417對得到的數(shù)據(jù)進(jìn)行處理和傳輸。
圖1 ?總體設(shè)計(jì)
其中,STM32F417是意法半導(dǎo)體公司生產(chǎn)的基于ARM-CoRTEX-M4架構(gòu)的微控制器,內(nèi)核架構(gòu)先進(jìn),性能優(yōu)越,主頻可達(dá)168MHz,執(zhí)行效率高,具有較高的運(yùn)算能力及數(shù)據(jù)處理能力,擁有豐富的外設(shè)接口和擴(kuò)展功能。在圖1中,STM32F417與上位機(jī)之間的以太網(wǎng)通信,就是MII外接DP83848物理層芯片,通過相關(guān)配置后擴(kuò)展實(shí)現(xiàn)的。
2、STM32與FPGA的接口設(shè)計(jì)
STM32F417與FPGA的接口方式有很多種,可以是串行的,也可以是并行的,考慮到FPGA在多路并行數(shù)據(jù)處理方面有明顯優(yōu)勢[5,6],設(shè)計(jì)采用STM32F417的可變靜態(tài)存儲控制器(FLEXIBLESTATICMEMoRyCoNTRoL(fēng)LER,F(xiàn)SMC)并行總線接口實(shí)現(xiàn)與FPGA的連接。
2.1、接口電路設(shè)計(jì)
FSMC是STM32系列采用的一種新型的存儲器擴(kuò)展技術(shù),支持不同的外部存儲器類型,其中就包括多種類型的靜態(tài)存儲器,因此,可將FPGA當(dāng)成STM32F417的外部SRAM來配置,通過擴(kuò)展出的數(shù)據(jù)/地址/控制三總線來實(shí)現(xiàn)操作,這樣既能保證較快的操作速度,又具有很高的靈活性。接口電路硬件連接如圖2所示。
圖2 ?STM32F417與FPGA接口連接電路
將FPGA直接連接在STM32F417的FSMC總線上,F(xiàn)SMC提供了4個(gè)BANK用于連接外部不同的存儲器,每個(gè)BANK有獨(dú)立的片選信號,F(xiàn)SMC_NE3是BANK1第三區(qū)的片選信號,F(xiàn)SMC_NOE和FSMC_NEW分別是接口讀寫信號,根據(jù)應(yīng)用需求,設(shè)計(jì)接口數(shù)據(jù)寬度為16位,地址線為10位,將數(shù)據(jù)線FSMC_D[15~0],地址線FSMC_A[9~0]連接到FPGA的I/O端口,尋址空間為1K字。除此之外,還有一些中斷信號(INT),用于FPGA向STM32F417發(fā)送中斷請求。這樣FPGA就作為STM32F417的外設(shè)連接在了系統(tǒng)中,通過存儲器讀寫指令就可以訪問FPGA。
2.2、關(guān)于接口地址的STM32軟件設(shè)計(jì)
在STM32F417內(nèi)部,F(xiàn)SMC的一端通過內(nèi)部高速總線AHB連接到內(nèi)核CoRTEX-M4,另一端則是面向擴(kuò)展存儲器的外部總線,內(nèi)部AHB總線的地址HADDR與FSMC總線地址存在一定的映射關(guān)系。FPGA連接在FSMC的BANK1第三區(qū),HADDR總共有28根地址線(HADDR[27~0]),其中HADDR[26~27]用來對BANK1的4個(gè)區(qū)進(jìn)行尋址。當(dāng)PFGA使用第三區(qū)時(shí),對應(yīng)的HADDR[27∶26]等于10。當(dāng)BANK1在外接16位寬度存儲器時(shí)候,只有HADDR[25∶1]是有效的,對應(yīng)關(guān)系變?yōu)椋篐ADDR[25∶1](FSMC[24∶0],由此可知,接口地址FSMC_A[9~0]對應(yīng)的HADDR的地址為0X68000000~0X680007FE,在進(jìn)行地址讀寫操作時(shí),HADDR[0]并沒有用到,相當(dāng)于地址右移了1位,使得每次讀寫操作時(shí),函數(shù)中的地址增量都為2。
3、數(shù)據(jù)采集的FPGA實(shí)現(xiàn)
3.1、模擬信號采集
根據(jù)應(yīng)用需求,模擬信號采集選用MAXIN公司的12位AD轉(zhuǎn)換芯片MAX196。該芯片有6個(gè)單端模擬輸入通道,并且其量程范圍、通道選擇、工作方式均編程可控,轉(zhuǎn)換時(shí)間為6μS,采樣速率為100KSPS,具有精度高、功耗低、開發(fā)方便等特點(diǎn)。
由于MAX196芯片是5V電壓供電,為了解決邏輯電壓匹配的問題,設(shè)計(jì)使用電壓轉(zhuǎn)換芯片SN74AHCT245PWLE來實(shí)現(xiàn)FPGA與AD的連接。由FP-GA控制AD進(jìn)行信號采集,使用其內(nèi)部邏輯,完成芯片的配置、中斷的響應(yīng)以及轉(zhuǎn)換結(jié)果的緩存,F(xiàn)PGA內(nèi)部邏輯電路如圖3所示。此邏輯電路主要由AD控制模塊、寫緩存控制模塊和雙口RAM緩存3部分組成。
圖3 ?AD采集內(nèi)部邏輯電路
3.1.1、AD控制模塊
AD控制模塊用來完成MAX196的采集時(shí)序的控制,為了確保時(shí)序控制的準(zhǔn)確性和連續(xù)性,設(shè)計(jì)一個(gè)狀態(tài)機(jī),如圖4所示,從STATE0~STATE3依次變化,整個(gè)過程對應(yīng)一次完整的采集周期,系統(tǒng)中所有的系統(tǒng)時(shí)序由外部40M有源晶振產(chǎn)生。
圖4 ?AD采集控制狀態(tài)機(jī)
狀態(tài)機(jī)的初始狀態(tài)為STATE3,控制端口默認(rèn)置高,在FPGA在收到STM32F417發(fā)出的采集命令EN后,轉(zhuǎn)入STATE0,輸出脈沖(wR+CS)啟動AD轉(zhuǎn)換,并且向AD芯片寫入8位控制字,完成初始化,然后,STATE1等待AD完成數(shù)據(jù)轉(zhuǎn)換,轉(zhuǎn)換結(jié)束時(shí),AD產(chǎn)生中斷信號INT,接著進(jìn)入STATE2,進(jìn)而輸出脈沖信號(RD+CS),讀取轉(zhuǎn)換的結(jié)果。該過程使用VERILoGHDL語言來描述,時(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ù)存儲的需求,設(shè)計(jì)將數(shù)據(jù)緩存在寄存器DATA[11∶0]中,并產(chǎn)生一個(gè)oVER中斷信號用于后期處理。
3.1.2數(shù)據(jù)緩存
緩存的設(shè)置主要是解決AD連續(xù)高速的數(shù)據(jù)采集與STM32F417數(shù)據(jù)處理周期不匹配的問題,當(dāng)AD完成一個(gè)通道的數(shù)據(jù)采集時(shí),需要對數(shù)據(jù)進(jìn)行緩存,考慮到FSMC總線接口的特點(diǎn),在設(shè)計(jì)中,使用FPGA內(nèi)部的雙口RAM完成數(shù)據(jù)緩存[10],由QUARTUSII自帶的IP核生成,其中RAM的讀取端連接FSMC接口,而寫入端連接AD,寫緩存的地址通過寫緩存控制模塊進(jìn)行控制。
信號EN在啟動AD控制模塊的同時(shí),將寫緩存控制模塊的地址清0,在oVER信號的觸發(fā)下,地址加1,并且產(chǎn)生RAM寫信號RAM_wE,寄存器DATA[11∶0]的數(shù)據(jù)寫入RAM里,在連續(xù)6路的采集中,每一路的數(shù)據(jù)對應(yīng)不同的地址,進(jìn)而完成數(shù)據(jù)的緩存。時(shí)序仿真如圖6所示。
圖6 ?緩存讀寫時(shí)序
采集結(jié)束后,STM32F417通過讀取存儲地址分別得到6個(gè)通道的采集數(shù)據(jù),進(jìn)而完成下一步的數(shù)據(jù)處理和傳輸。
3.2、數(shù)字差分信號采集
數(shù)字差分信號的采集首先需要將差分電平轉(zhuǎn)換成數(shù)字電平,選用MAXIN公司的MAX3362作為數(shù)字差分信號收發(fā)器。數(shù)字信號既有并行數(shù)據(jù),也有串行數(shù)據(jù),在同步觸發(fā)脈沖的作用下,可通過FPGA內(nèi)部邏輯電路對數(shù)據(jù)進(jìn)行處理。對于15路并行數(shù)據(jù),通過集成電路74373+74541的邏輯組合模塊進(jìn)行采集,在同步時(shí)鐘SyNC1置高時(shí)將數(shù)據(jù)鎖存至74373,而對于1路串行數(shù)據(jù),則通過74164+74541的邏輯組合,在觸發(fā)脈沖SyNC2的上升沿將數(shù)據(jù)由串行轉(zhuǎn)為并行,STM32F417向?qū)?yīng)的地址發(fā)出讀指令,地址經(jīng)譯碼后,選通緩沖器74541,從而得到相應(yīng)數(shù)據(jù)。
4、系統(tǒng)總體流程和結(jié)果測試
系統(tǒng)上電后,STM32和FPGA首先進(jìn)行硬件初始化,其中FPGA通過PS的方式完成配置。STM32啟動定時(shí)器產(chǎn)生定時(shí)中斷,在中斷響應(yīng)中,發(fā)送開始采集命令,進(jìn)而啟動FPGA內(nèi)部邏輯電路進(jìn)行信號采集控制和數(shù)據(jù)緩存,在采集結(jié)束后,STM32響應(yīng)FPGA發(fā)出的結(jié)束中斷請求、讀取數(shù)據(jù)、處理數(shù)據(jù)并將處理后的結(jié)果打包發(fā)送至上位機(jī),最后,上位機(jī)接收數(shù)據(jù)并顯示結(jié)果。系統(tǒng)工作流程如下圖7所示。
圖7 ?數(shù)據(jù)采集系統(tǒng)流程
STM32F417通過網(wǎng)口將結(jié)果發(fā)送至上位機(jī),其以太網(wǎng)通信是基于LwIP協(xié)議棧,利用改進(jìn)后的UDP協(xié)議,實(shí)現(xiàn)數(shù)據(jù)實(shí)時(shí)可靠的傳輸。PC上位機(jī)則通過C++BULIDER平臺上的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ù)采集。
通過信號發(fā)生器,產(chǎn)生50Hz的正弦波,連續(xù)采集波形如圖8所示。
圖8 ?50Hz正弦信號采集
模擬通道和數(shù)字信號端口分別對給定值連續(xù)測試5000次,統(tǒng)計(jì)結(jié)果的誤差和誤碼率見表1。
表1 ?測試誤差統(tǒng)計(jì)
測試的結(jié)果表明,模擬通道測量誤差在10MV之內(nèi),數(shù)字信號端誤碼率為0,系統(tǒng)采集精度滿足設(shè)計(jì)要求。
5、結(jié)束語
本系統(tǒng)很好地結(jié)合了STM32微控制器和FPGA可編程器件兩者的長處,利用STM32硬件中的FSMC、ETHERNETMAC、定時(shí)器等外設(shè)功能,以及FPGA靈活的邏輯可操控性,解決了系統(tǒng)接口設(shè)計(jì)、時(shí)序控制、組網(wǎng)傳輸?shù)葟?fù)雜問題,實(shí)現(xiàn)了火控系統(tǒng)信息多通道、多類型信號的實(shí)時(shí)采集,保證了精度高、傳輸快,實(shí)時(shí)處理的采集要求,為后續(xù)應(yīng)用打下了良好的基礎(chǔ)。同時(shí),簡化系統(tǒng)硬件設(shè)計(jì),縮小了系統(tǒng)體積和開發(fā)周期,具有極高的性價(jià)比。本系統(tǒng)還保留了很大的靈活性,可輕松進(jìn)行二次開發(fā),組合架構(gòu)可應(yīng)用于不同的信號采集領(lǐng)域,有廣闊的應(yīng)用前景和參考價(jià)值。
評論