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