,,,
(1. 榆林學院能源工程學院測控教研室,陜西 榆林 719000; 2. 中國人民解放軍96901部隊,北京 100094)
基于FPGA的多通道串口數據采集與傳輸設計
郭敏1,莊信武2,王向東2,吳金才2
(1.榆林學院能源工程學院測控教研室,陜西榆林719000; 2.中國人民解放軍96901部隊,北京100094)
多通道串口數據傳輸是現代工業控制傳輸一種新要求,而傳統的工業控制器因接口數量的有限,往往難以滿足該項要求;論文針對多通道串口數據的采集與傳輸現實需要,提出了一種基于FPGA的多通道串口數據采集方案;該方案引入了多路串口數據的同時采集、緩沖及打包的數據流處理思想,采用基于FPAG+多串口+USB的硬件框架結構及總線不同速率的傳輸軟件處理算法,實現了多路串口數據的采集與傳輸;為了驗證該設計方案的有效性,論文以某軟件無線電平臺為試驗對象,預期設計了6路串口同時傳輸的試驗方案,最終通過對發送的源數據與接收的數據進行比對發現兩者一致,結果表明該方案的有效性,試驗滿足預期要求,達到多路串口同時采集及傳輸的目的。
FPGA;多通道串口;數據采集;數據傳輸
目前多通道串口數據通訊在醫療、通信、工業控制等諸多領域得到廣泛的應用[1-2],其特點是硬件實現簡單,監控系統與被監控設備的連接采用“點對點”連接方式,不存在相互之間的干擾,出現問題時便于排查,且不受操作系統的限制,硬件成本低。然而在一般情況下,一個微控制器往往只帶有一組或兩組串口通信模塊或通道。為了擴展更多的串口通道數,通常采用多通道串口芯片,如SP2358,SP2338,TL16L554等實現,這種模式亦存在諸多局限性,如:1) 單組芯片最多能容納的通道數不超過4個通道;2) 芯片本身不具備波特率自行配置;3) 單芯片通道數越多,價格越昂貴等諸多問題[3]。
伴隨著可編程邏輯陣列芯片的出現與發展,從某種程度上解決了上述單芯片的局限性問題??删幊踢壿嬓酒顬榈湫偷氖乾F場可編程門陣列(Field- Programmable Gate Array,簡稱FPGA),它是在PAL、GAL、CPLD等可編程器件上發展起來的。由于自身并行處理及可重復編程的特點,在硬件電路設計中克服了傳統定制電路設計思想的不足,這對提高系統可靠性、提高設計效率、減少PCB電路板的面積、節約設計成本等諸多方面具有強大的優勢,也為此得到了廣大電子硬件工程師的青睞。在此過程中也有一些工程師設計了多串口擴展系統[4],采用模塊化設計,滿足了與多路串口外設同時通信的要求,但擴展系統中采用MCU + FPGA結構使得系統有些冗余,不易實現即插即拔和小型化。
論文針對上述傳統微控制器在多通道運用上的局限性,結合FPGA并行處理等優勢特點,著手基于FPGA的多通道串口數據采集與傳輸展開設計研究。目的是通過研究,解決波特率自行配置和串口通道數受限的問題,同時利用該設計思想,可將該成果拓展到其它接口多通道的設計。
根據性能剖分,基于FPGA的多通道串口數據采集與傳輸系統,從硬件層面上可剖分為以下幾大模塊:電源模塊、接口芯片模塊、FPGA信號處理與控制模塊等三大部分組成。其中電源模塊為整個系統提供穩定的電壓、電流源;接口芯片模塊實現主機與外設之間交換信息,主要包括串口模塊及向上位機高速率傳輸的USB接口模塊,在現實使用過程中,USB接口模塊可能還承擔整個電路的電源供電功能,最終達到實現即插即拔,及電路模塊的小型化功能;FPGA信號處理與控制模塊,利用其可重復編程特點,實現整個系統的整體協調與控制,及必要的信號處理工作,從軟件層面上看主要包括:
1) 實時正確接收、發送各個串口的數據;
2) 實現串行轉并行工作,將串口芯片接收到的串行數據進行并行化處理,然后再將這些數據壓入各個串口接收數據緩存中;
3) 協調各個串口接收緩存,將數據封裝打包后壓入高速傳輸的USB接口芯片緩存中;
4) 解析控制高速USB接收的緩存數據,后壓入串口發送數據緩存中,并進行并行轉串行處理;
5) 實現與USB接口芯片通信。
梳理上述功能,系統的整體框架可構建如圖1所示。圖中COMn表示第n個串口電路模塊,主要完成串口邏輯電平與FPGA觸發電平之間的邏輯電平轉換、特性參數分析等;串并轉換模塊主要進行了串行信號的接收、接收數據的串轉并,發送數據的并轉串,以及所需的時序控制;FIFO數據緩存模塊主要實現不同傳輸速率的數據在處理過程中的緩沖作用,以防止在進機和存儲操作時,數據不必要的漏幀或溢出等情況發生,從中提高傳輸效率的作用;USB控制器主要實現轉換電路與高速USB接口之間的握手通信,及數據的接收與發送等工作,其中包括串口傳輸波特率、傳輸位數、奇偶矯正等各個串口參數的控制。

圖1 多通道串口采集與傳輸系統框架
FPGA由于設計靈活,可重復編程,是整個轉換電路的核心部分,為了能夠實現FPGA上述5個功能,論文針對這些功能分別進行建模。
受外界擾動環境的影響,數據在串行總線上傳輸可能發送誤比特情況。這種誤比特通常表現為串行總線上串入浪涌或毛刺(下文將此情況稱為“擾動”),其波形示意如圖2,其中Vh為接口觸發的門限電平,T為觸發的擾動寬度。圖中若觸發的擾動寬度T越寬,則在單位時間內累計的觸發樣本數就越多,誤觸發的概率越大。
為了提高串口抗干擾能力,除了在硬件設計上采取串入防浪涌電容及線纜電磁屏蔽等防擾動處理外,還可以在串行傳輸數據的軟件捕獲上采取防擾動處理,以降低誤比特率。關于硬件防擾動處理方式相關文獻已做了論證[5-6],此文不再贅述。論文僅從軟件層面結合FPGA硬件特點進行防擾動研究,以最大程度地忽略擾動對接口比特流采樣的影響。

圖2 擾動波形示意圖
從統計學角度來看,樣本數越多,則越能揭示事物的本質。同理,在采樣系統中,若提高了接口的采樣率,增加單位時間內接口采樣的樣本數,通過樣本數的概率分布情況就可以很有效地揭示數據的真實性,即準確判斷觸發電平實際電平是高電平還是低電平。根據RS232串行總線接口規范定義,串口波特率是特定的,無非就是幾種常用的波特率,如300、600、1 200、2 400、4 800、9 600、19 200、38 400、43 000、56 000、57 600、115 200等,當選擇某種波特率作為數據的傳輸速率時,單個比特的數據位寬Tw也就對應明確。在這固定數據位寬Tw內采集高、低電平的樣本數,通過此樣本的高低電平分布情況,可準確判斷串行總線在數據位寬Tw內為高邏輯電平,還是低邏輯電平,具體分布如表1所示。

表1 軟件抗干擾判斷表
串并轉換模塊是根據串行總線規范協議,按照串行總線數據幀結構,從串行總線上解析出易于存儲和傳輸的并行數據,如8位數據等;或者按照串行總線接口規范協議,并行數據的串行化處理,形成按規范要求的串行流數據幀結構。
串并轉換模型設計是結合上述3.1中的防擾動處理措施進行建模的,模型的RTL模塊如圖3所示。

圖3 串< - > 并互轉電路RTL模塊
其中clk為系統同步時鐘,reset為系統復位信號;左圖為串轉并模型,iRXD為經接口電平轉換后,FPGA能夠采樣的串口接收信號;oDOUT[7:0]為并行處理后的8位輸出數據,若設定為7位,則取最低7位有效位;oslDone為串口接收完滿幀后,給出的脈沖同步信號,以供后級模塊提供同步觸發源。右圖為并轉串模型,按照串行協議插入起始位、數據位、停止位以及必要奇偶校驗位等,其中iDin[7:0]為8位寬度的并行數據,ilsSta為同步脈沖數據信號,oTXD為串行數據信號,oslFull為并串轉換模塊的32 Bytes的緩沖滿標志。
并轉串仿真結果如圖4所示,此次仿真中,數據位為8位有效數據0x55,無奇偶校驗位,2位停止位,波特率位115200,其中oTXD輸出的數據流包括,起始位、數據位、停止位及奇偶校驗位,按照串行總線接口規范,oTXD輸出數據流為0_1010_1010_11,仿真結果與其一致,由此可說明該模型的正確性。

圖4 并行轉串行總線數據仿真結果
針對串口轉并口模型驗證,可利用上述“并轉串模型”的oTXD輸出數據作為“串轉并模型”的信號源,仿真條件與上述一致,同時為了驗證串行數據接收的抗干擾性,在串行總線上加入1/5位寬的干擾噪聲,仿真結果如圖5所示,在每個高電平處有大約1/5脈寬的低電平擾動,經過抗干擾軟件處理后,得到的8位16進制數據0x55,通過比較發現,接收到數據與源16進制數據0x55是一致。這結果進一步驗證了模型抗干擾的有效性。

圖5 加入噪聲后串行轉并行總線數據仿真結果
多級緩存設計的目的是實現多個串口數據接收過程中實現數據的緩沖,以避免數據同時處理出現數據的溢出或漏診問題發生。在實際操作過程中,將接收的數據一級壓入一級,避免不同速率傳輸數據因未匹配而造成的數據丟幀情況發生。本設計中,每個串口的多級緩存擬采用多個3數據級聯FIFO結構,如圖6所示。

圖6 多FIFO數據緩存結構
單個FIFO緩沖器進行輪換讀寫,其中有一個FIFO始終處于空閑狀態,目的是為了避免讀寫沖突,另外兩個:一個FIFO進行寫操作、一個FIFO進行讀操作;當寫操作FIFO滿時,啟動兩個方面工作:一方面是啟動打包程序,將FIFO中的數據快速轉入數據幀結構中,待傳輸到高速的USB接口緩存中;另一個方面是啟動緩存寫FIFO的切換。當3個FIFO經過一段時間后,仍沒有數據寫入時,系統啟動讀取FIFO中剩余的數據操作,及時讀取FIFO中剩余的數據,以避免數據丟幀。系統狀態機可設計如下

圖7 多FIFO數據緩存狀態機
USB控制器主要實現FPGA與高速USB接口之間的握手通信,及數據的接收與發送等工作。目前常用的USB接口主控制器芯片有幾十種,其中比較典型的是Cypress公司的CY7C670xx序列的芯片,論文僅以CY7C67013型號芯片展開FPGA的讀寫建模設計。該芯片[7]內部集改進的8051內核和USB通信控制引擎于一體,不僅提高芯片集成度,同時在無需外加芯片的條件下即可完成高速USB傳輸,內部采用了“量子FIFO”獨特的處理框架結構,如圖8所示,較好地解決了USB高速速率傳輸的帶寬問題。

圖8 芯片內部FIFO的Slave-FIFO模式
圖中, PKTEND表示包結束,FPGA可通過PKTEND管腳向USB發送一個IN 數據包而不用考慮包的長度;SLRD為從模式的讀信號;SLWR為從模式的寫信號;SLOE為輸出使能信號;FIFOADR[1:0]用于選擇與FD連接的端點緩沖區,當其值為00、01、10、11分別對應選擇端點EP2、端點EP4、端點EP6、端點EP8。FLAGA、FLAGB、FLAGC為FIFO狀態標志位,用于指示FIFO的當前狀態。
在數據傳輸過程中,FPGA從串口緩沖中讀取相應的打包數據,按照Slave FIFO的傳輸時序,定時地從各個接口的緩存中讀取打包后的數據幀,并按照約定的幀排列方法(如圖9所示),組成數據傳輸結構,即可完成與主機之間高速通訊[8],這種模式的優點是USB芯片不需要內部核芯片參與工作,有效地提高了傳輸的速度。

圖9 多接口緩存數據結構
為了驗證上述方案的正確性,以某軟件無線電平臺為試驗對象,該平臺具有USB接口、Xilinx公司的可編程邏輯芯Spartan6-XC6SLX150、40針可編程IO接口,符合多串口數據采集最小系統要求。其中,以6pins/6pins作為目標串口的輸入/輸出接口,6pins/6pins作為源串口的輸入/輸出接口,通過FPGA內部設定的狀態機實現數據的傳輸;而上位機以Slave-FIFO傳輸模式,經USB2.0接口讀取FPGA傳來數據,經數據包的識別、解包,最終還原出各個串口的數據,最終對發送的源數據和接收的目標數據進行比對。
通過100次模擬實驗,每次實驗傳輸65535個字符數據,通過比較發現源數據與接收數據一致,無出現誤比特的現象,這結果表明該方案是有效的,試驗滿足預期要求,達到多路串口同時采集及傳輸的目的,由此驗證了模型的正確性。
論文基于FPGA的多通道串口數據采集與傳輸設計,通過對多路串口數據的同時采集、緩沖及打包的數據流處理思想,采用FPAG+多串口+USB的硬件框架及多種總線不同速率的傳輸算法,實現了多路串口數據的采集與傳輸。論文僅從原理上進行有效的驗證,在產品的后期設計中,可從小型化、節能化方向出發,選擇高集成度、節能型芯片,實現采集與傳輸模塊的即插即拔。
[1]鄧竑杰.多路串口到以太網的數據網關的設計與實現[D].昆明:云南大學,2014.
[2]賈佩衡.串口-以太網關轉換器設計及其在通信供電監控系統中的應用[D].長春:吉林大學,2011.
[3]李志偉,姚江敏.基于串口通信的控制系統設計[J].科技與創新,2016(16):102-103.
[4]陳標龍,王保成等.基于FPGA和FIFO技術的多串口系統設計與實現[J].計算機測試與控制,2013.21(10):2835-2837.
[5]康春雨.幾種常用開關防抖電路簡介[J].電子世界,2009(11):43-44.
[6]戴錢坤.一種新型機載防浪涌電壓保護電路設計[J].電子技術應用.2011(11):58-60.
[7]王兵兵.基于EZ-USBFX2和FPGA的數據傳輸系統研究[D].西安:西安電子科技大學,2010.
[8]張 靜,葉小芹.基于FPGA的高速USB協議分析儀的設計[J].綏化學院學報,2016(9):152-154.
DesignofDataCollectionandTransmissionSystemofMulti-SerialportsBasedonFPGA
Guo Min1, Zhuang Xinwu2, Wang Xiangdong2, Wu Jincai2
(1.Office of Measurement and Control, Energy Engineering Institute, Yulin University, Yulin 719000,China; 2.PLA 96901 Unit, Beijing 100094,China)
Multi-channels serial data transmission is a new requirement for modern industrial control transmission, and the traditional industrial controller due to the limited number of interfaces, often difficult to meet the requirements. For multi-channel serial ports data collection and transmission of real needs, a data acquisition program based on FPGA for multi-channel serial ports was presented in this paper. The idea of simultaneous acquisition, buffering and packet data processing for multi-channels serial data, and the structure of hardware frame based on FPAG + multi-serials port + USB and bus different rate transmission software processing algorithm was introduced to achieve a multi-channel serial data collection and transmission, In order to verify the effectiveness of the design, a software radio platform as the experimental object was taken to design a 6-way serial transmission system in this paper. And finally through the transmission of the source data and the
data comparison found that the two consistent. The results show that the scheme was effective and the test meets the expected requirements, and achieved the purpose of multi-channel serial acquisition and transmission.
FPGA; multi-channel serial ports; data collection; data transmission
2017-04-30;
2017-05-23。
榆林學院高層次人才科研啟動基金(11JK60)。
:郭 敏(1984-),女,講師,主要從事智能控制方向的研究。
1671-4598(2017)11-0186-04
10.16526/j.cnki.11-4762/tp.2017.11.047
TB47
A