,,,
(1. 榆林學院能源工程學院測控教研室,陜西 榆林 719000; 2. 中國人民解放軍96901部隊,北京 100094)
基于FPGA的多通道串口數(shù)據(jù)采集與傳輸設計
郭敏1,莊信武2,王向東2,吳金才2
(1.榆林學院能源工程學院測控教研室,陜西榆林719000; 2.中國人民解放軍96901部隊,北京100094)
多通道串口數(shù)據(jù)傳輸是現(xiàn)代工業(yè)控制傳輸一種新要求,而傳統(tǒng)的工業(yè)控制器因接口數(shù)量的有限,往往難以滿足該項要求;論文針對多通道串口數(shù)據(jù)的采集與傳輸現(xiàn)實需要,提出了一種基于FPGA的多通道串口數(shù)據(jù)采集方案;該方案引入了多路串口數(shù)據(jù)的同時采集、緩沖及打包的數(shù)據(jù)流處理思想,采用基于FPAG+多串口+USB的硬件框架結(jié)構(gòu)及總線不同速率的傳輸軟件處理算法,實現(xiàn)了多路串口數(shù)據(jù)的采集與傳輸;為了驗證該設計方案的有效性,論文以某軟件無線電平臺為試驗對象,預期設計了6路串口同時傳輸?shù)脑囼灧桨?,最終通過對發(fā)送的源數(shù)據(jù)與接收的數(shù)據(jù)進行比對發(fā)現(xiàn)兩者一致,結(jié)果表明該方案的有效性,試驗滿足預期要求,達到多路串口同時采集及傳輸?shù)哪康摹?/p>
FPGA;多通道串口;數(shù)據(jù)采集;數(shù)據(jù)傳輸
目前多通道串口數(shù)據(jù)通訊在醫(yī)療、通信、工業(yè)控制等諸多領域得到廣泛的應用[1-2],其特點是硬件實現(xiàn)簡單,監(jiān)控系統(tǒng)與被監(jiān)控設備的連接采用“點對點”連接方式,不存在相互之間的干擾,出現(xiàn)問題時便于排查,且不受操作系統(tǒng)的限制,硬件成本低。然而在一般情況下,一個微控制器往往只帶有一組或兩組串口通信模塊或通道。為了擴展更多的串口通道數(shù),通常采用多通道串口芯片,如SP2358,SP2338,TL16L554等實現(xiàn),這種模式亦存在諸多局限性,如:1) 單組芯片最多能容納的通道數(shù)不超過4個通道;2) 芯片本身不具備波特率自行配置;3) 單芯片通道數(shù)越多,價格越昂貴等諸多問題[3]。
伴隨著可編程邏輯陣列芯片的出現(xiàn)與發(fā)展,從某種程度上解決了上述單芯片的局限性問題??删幊踢壿嬓酒顬榈湫偷氖乾F(xiàn)場可編程門陣列(Field- Programmable Gate Array,簡稱FPGA),它是在PAL、GAL、CPLD等可編程器件上發(fā)展起來的。由于自身并行處理及可重復編程的特點,在硬件電路設計中克服了傳統(tǒng)定制電路設計思想的不足,這對提高系統(tǒng)可靠性、提高設計效率、減少PCB電路板的面積、節(jié)約設計成本等諸多方面具有強大的優(yōu)勢,也為此得到了廣大電子硬件工程師的青睞。在此過程中也有一些工程師設計了多串口擴展系統(tǒng)[4],采用模塊化設計,滿足了與多路串口外設同時通信的要求,但擴展系統(tǒng)中采用MCU + FPGA結(jié)構(gòu)使得系統(tǒng)有些冗余,不易實現(xiàn)即插即拔和小型化。
論文針對上述傳統(tǒng)微控制器在多通道運用上的局限性,結(jié)合FPGA并行處理等優(yōu)勢特點,著手基于FPGA的多通道串口數(shù)據(jù)采集與傳輸展開設計研究。目的是通過研究,解決波特率自行配置和串口通道數(shù)受限的問題,同時利用該設計思想,可將該成果拓展到其它接口多通道的設計。
根據(jù)性能剖分,基于FPGA的多通道串口數(shù)據(jù)采集與傳輸系統(tǒng),從硬件層面上可剖分為以下幾大模塊:電源模塊、接口芯片模塊、FPGA信號處理與控制模塊等三大部分組成。其中電源模塊為整個系統(tǒng)提供穩(wěn)定的電壓、電流源;接口芯片模塊實現(xiàn)主機與外設之間交換信息,主要包括串口模塊及向上位機高速率傳輸?shù)腢SB接口模塊,在現(xiàn)實使用過程中,USB接口模塊可能還承擔整個電路的電源供電功能,最終達到實現(xiàn)即插即拔,及電路模塊的小型化功能;FPGA信號處理與控制模塊,利用其可重復編程特點,實現(xiàn)整個系統(tǒng)的整體協(xié)調(diào)與控制,及必要的信號處理工作,從軟件層面上看主要包括:
1) 實時正確接收、發(fā)送各個串口的數(shù)據(jù);
2) 實現(xiàn)串行轉(zhuǎn)并行工作,將串口芯片接收到的串行數(shù)據(jù)進行并行化處理,然后再將這些數(shù)據(jù)壓入各個串口接收數(shù)據(jù)緩存中;
3) 協(xié)調(diào)各個串口接收緩存,將數(shù)據(jù)封裝打包后壓入高速傳輸?shù)腢SB接口芯片緩存中;
4) 解析控制高速USB接收的緩存數(shù)據(jù),后壓入串口發(fā)送數(shù)據(jù)緩存中,并進行并行轉(zhuǎn)串行處理;
5) 實現(xiàn)與USB接口芯片通信。
梳理上述功能,系統(tǒng)的整體框架可構(gòu)建如圖1所示。圖中COMn表示第n個串口電路模塊,主要完成串口邏輯電平與FPGA觸發(fā)電平之間的邏輯電平轉(zhuǎn)換、特性參數(shù)分析等;串并轉(zhuǎn)換模塊主要進行了串行信號的接收、接收數(shù)據(jù)的串轉(zhuǎn)并,發(fā)送數(shù)據(jù)的并轉(zhuǎn)串,以及所需的時序控制;FIFO數(shù)據(jù)緩存模塊主要實現(xiàn)不同傳輸速率的數(shù)據(jù)在處理過程中的緩沖作用,以防止在進機和存儲操作時,數(shù)據(jù)不必要的漏幀或溢出等情況發(fā)生,從中提高傳輸效率的作用;USB控制器主要實現(xiàn)轉(zhuǎn)換電路與高速USB接口之間的握手通信,及數(shù)據(jù)的接收與發(fā)送等工作,其中包括串口傳輸波特率、傳輸位數(shù)、奇偶矯正等各個串口參數(shù)的控制。
圖1 多通道串口采集與傳輸系統(tǒng)框架
FPGA由于設計靈活,可重復編程,是整個轉(zhuǎn)換電路的核心部分,為了能夠?qū)崿F(xiàn)FPGA上述5個功能,論文針對這些功能分別進行建模。
受外界擾動環(huán)境的影響,數(shù)據(jù)在串行總線上傳輸可能發(fā)送誤比特情況。這種誤比特通常表現(xiàn)為串行總線上串入浪涌或毛刺(下文將此情況稱為“擾動”),其波形示意如圖2,其中Vh為接口觸發(fā)的門限電平,T為觸發(fā)的擾動寬度。圖中若觸發(fā)的擾動寬度T越寬,則在單位時間內(nèi)累計的觸發(fā)樣本數(shù)就越多,誤觸發(fā)的概率越大。
為了提高串口抗干擾能力,除了在硬件設計上采取串入防浪涌電容及線纜電磁屏蔽等防擾動處理外,還可以在串行傳輸數(shù)據(jù)的軟件捕獲上采取防擾動處理,以降低誤比特率。關(guān)于硬件防擾動處理方式相關(guān)文獻已做了論證[5-6],此文不再贅述。論文僅從軟件層面結(jié)合FPGA硬件特點進行防擾動研究,以最大程度地忽略擾動對接口比特流采樣的影響。
圖2 擾動波形示意圖
從統(tǒng)計學角度來看,樣本數(shù)越多,則越能揭示事物的本質(zhì)。同理,在采樣系統(tǒng)中,若提高了接口的采樣率,增加單位時間內(nèi)接口采樣的樣本數(shù),通過樣本數(shù)的概率分布情況就可以很有效地揭示數(shù)據(jù)的真實性,即準確判斷觸發(fā)電平實際電平是高電平還是低電平。根據(jù)RS232串行總線接口規(guī)范定義,串口波特率是特定的,無非就是幾種常用的波特率,如300、600、1 200、2 400、4 800、9 600、19 200、38 400、43 000、56 000、57 600、115 200等,當選擇某種波特率作為數(shù)據(jù)的傳輸速率時,單個比特的數(shù)據(jù)位寬Tw也就對應明確。在這固定數(shù)據(jù)位寬Tw內(nèi)采集高、低電平的樣本數(shù),通過此樣本的高低電平分布情況,可準確判斷串行總線在數(shù)據(jù)位寬Tw內(nèi)為高邏輯電平,還是低邏輯電平,具體分布如表1所示。
表1 軟件抗干擾判斷表
串并轉(zhuǎn)換模塊是根據(jù)串行總線規(guī)范協(xié)議,按照串行總線數(shù)據(jù)幀結(jié)構(gòu),從串行總線上解析出易于存儲和傳輸?shù)牟⑿袛?shù)據(jù),如8位數(shù)據(jù)等;或者按照串行總線接口規(guī)范協(xié)議,并行數(shù)據(jù)的串行化處理,形成按規(guī)范要求的串行流數(shù)據(jù)幀結(jié)構(gòu)。
串并轉(zhuǎn)換模型設計是結(jié)合上述3.1中的防擾動處理措施進行建模的,模型的RTL模塊如圖3所示。
圖3 串< - > 并互轉(zhuǎn)電路RTL模塊
其中clk為系統(tǒng)同步時鐘,reset為系統(tǒng)復位信號;左圖為串轉(zhuǎn)并模型,iRXD為經(jīng)接口電平轉(zhuǎn)換后,F(xiàn)PGA能夠采樣的串口接收信號;oDOUT[7:0]為并行處理后的8位輸出數(shù)據(jù),若設定為7位,則取最低7位有效位;oslDone為串口接收完滿幀后,給出的脈沖同步信號,以供后級模塊提供同步觸發(fā)源。右圖為并轉(zhuǎn)串模型,按照串行協(xié)議插入起始位、數(shù)據(jù)位、停止位以及必要奇偶校驗位等,其中iDin[7:0]為8位寬度的并行數(shù)據(jù),ilsSta為同步脈沖數(shù)據(jù)信號,oTXD為串行數(shù)據(jù)信號,oslFull為并串轉(zhuǎn)換模塊的32 Bytes的緩沖滿標志。
并轉(zhuǎn)串仿真結(jié)果如圖4所示,此次仿真中,數(shù)據(jù)位為8位有效數(shù)據(jù)0x55,無奇偶校驗位,2位停止位,波特率位115200,其中oTXD輸出的數(shù)據(jù)流包括,起始位、數(shù)據(jù)位、停止位及奇偶校驗位,按照串行總線接口規(guī)范,oTXD輸出數(shù)據(jù)流為0_1010_1010_11,仿真結(jié)果與其一致,由此可說明該模型的正確性。
圖4 并行轉(zhuǎn)串行總線數(shù)據(jù)仿真結(jié)果
針對串口轉(zhuǎn)并口模型驗證,可利用上述“并轉(zhuǎn)串模型”的oTXD輸出數(shù)據(jù)作為“串轉(zhuǎn)并模型”的信號源,仿真條件與上述一致,同時為了驗證串行數(shù)據(jù)接收的抗干擾性,在串行總線上加入1/5位寬的干擾噪聲,仿真結(jié)果如圖5所示,在每個高電平處有大約1/5脈寬的低電平擾動,經(jīng)過抗干擾軟件處理后,得到的8位16進制數(shù)據(jù)0x55,通過比較發(fā)現(xiàn),接收到數(shù)據(jù)與源16進制數(shù)據(jù)0x55是一致。這結(jié)果進一步驗證了模型抗干擾的有效性。
圖5 加入噪聲后串行轉(zhuǎn)并行總線數(shù)據(jù)仿真結(jié)果
多級緩存設計的目的是實現(xiàn)多個串口數(shù)據(jù)接收過程中實現(xiàn)數(shù)據(jù)的緩沖,以避免數(shù)據(jù)同時處理出現(xiàn)數(shù)據(jù)的溢出或漏診問題發(fā)生。在實際操作過程中,將接收的數(shù)據(jù)一級壓入一級,避免不同速率傳輸數(shù)據(jù)因未匹配而造成的數(shù)據(jù)丟幀情況發(fā)生。本設計中,每個串口的多級緩存擬采用多個3數(shù)據(jù)級聯(lián)FIFO結(jié)構(gòu),如圖6所示。
圖6 多FIFO數(shù)據(jù)緩存結(jié)構(gòu)
單個FIFO緩沖器進行輪換讀寫,其中有一個FIFO始終處于空閑狀態(tài),目的是為了避免讀寫沖突,另外兩個:一個FIFO進行寫操作、一個FIFO進行讀操作;當寫操作FIFO滿時,啟動兩個方面工作:一方面是啟動打包程序,將FIFO中的數(shù)據(jù)快速轉(zhuǎn)入數(shù)據(jù)幀結(jié)構(gòu)中,待傳輸?shù)礁咚俚腢SB接口緩存中;另一個方面是啟動緩存寫FIFO的切換。當3個FIFO經(jīng)過一段時間后,仍沒有數(shù)據(jù)寫入時,系統(tǒng)啟動讀取FIFO中剩余的數(shù)據(jù)操作,及時讀取FIFO中剩余的數(shù)據(jù),以避免數(shù)據(jù)丟幀。系統(tǒng)狀態(tài)機可設計如下
圖7 多FIFO數(shù)據(jù)緩存狀態(tài)機
USB控制器主要實現(xiàn)FPGA與高速USB接口之間的握手通信,及數(shù)據(jù)的接收與發(fā)送等工作。目前常用的USB接口主控制器芯片有幾十種,其中比較典型的是Cypress公司的CY7C670xx序列的芯片,論文僅以CY7C67013型號芯片展開FPGA的讀寫建模設計。該芯片[7]內(nèi)部集改進的8051內(nèi)核和USB通信控制引擎于一體,不僅提高芯片集成度,同時在無需外加芯片的條件下即可完成高速USB傳輸,內(nèi)部采用了“量子FIFO”獨特的處理框架結(jié)構(gòu),如圖8所示,較好地解決了USB高速速率傳輸?shù)膸拞栴}。
圖8 芯片內(nèi)部FIFO的Slave-FIFO模式
圖中, PKTEND表示包結(jié)束,F(xiàn)PGA可通過PKTEND管腳向USB發(fā)送一個IN 數(shù)據(jù)包而不用考慮包的長度;SLRD為從模式的讀信號;SLWR為從模式的寫信號;SLOE為輸出使能信號;FIFOADR[1:0]用于選擇與FD連接的端點緩沖區(qū),當其值為00、01、10、11分別對應選擇端點EP2、端點EP4、端點EP6、端點EP8。FLAGA、FLAGB、FLAGC為FIFO狀態(tài)標志位,用于指示FIFO的當前狀態(tài)。
在數(shù)據(jù)傳輸過程中,F(xiàn)PGA從串口緩沖中讀取相應的打包數(shù)據(jù),按照Slave FIFO的傳輸時序,定時地從各個接口的緩存中讀取打包后的數(shù)據(jù)幀,并按照約定的幀排列方法(如圖9所示),組成數(shù)據(jù)傳輸結(jié)構(gòu),即可完成與主機之間高速通訊[8],這種模式的優(yōu)點是USB芯片不需要內(nèi)部核芯片參與工作,有效地提高了傳輸?shù)乃俣取?/p>
圖9 多接口緩存數(shù)據(jù)結(jié)構(gòu)
為了驗證上述方案的正確性,以某軟件無線電平臺為試驗對象,該平臺具有USB接口、Xilinx公司的可編程邏輯芯Spartan6-XC6SLX150、40針可編程IO接口,符合多串口數(shù)據(jù)采集最小系統(tǒng)要求。其中,以6pins/6pins作為目標串口的輸入/輸出接口,6pins/6pins作為源串口的輸入/輸出接口,通過FPGA內(nèi)部設定的狀態(tài)機實現(xiàn)數(shù)據(jù)的傳輸;而上位機以Slave-FIFO傳輸模式,經(jīng)USB2.0接口讀取FPGA傳來數(shù)據(jù),經(jīng)數(shù)據(jù)包的識別、解包,最終還原出各個串口的數(shù)據(jù),最終對發(fā)送的源數(shù)據(jù)和接收的目標數(shù)據(jù)進行比對。
通過100次模擬實驗,每次實驗傳輸65535個字符數(shù)據(jù),通過比較發(fā)現(xiàn)源數(shù)據(jù)與接收數(shù)據(jù)一致,無出現(xiàn)誤比特的現(xiàn)象,這結(jié)果表明該方案是有效的,試驗滿足預期要求,達到多路串口同時采集及傳輸?shù)哪康?,由此驗證了模型的正確性。
論文基于FPGA的多通道串口數(shù)據(jù)采集與傳輸設計,通過對多路串口數(shù)據(jù)的同時采集、緩沖及打包的數(shù)據(jù)流處理思想,采用FPAG+多串口+USB的硬件框架及多種總線不同速率的傳輸算法,實現(xiàn)了多路串口數(shù)據(jù)的采集與傳輸。論文僅從原理上進行有效的驗證,在產(chǎn)品的后期設計中,可從小型化、節(jié)能化方向出發(fā),選擇高集成度、節(jié)能型芯片,實現(xiàn)采集與傳輸模塊的即插即拔。
[1]鄧竑杰.多路串口到以太網(wǎng)的數(shù)據(jù)網(wǎng)關(guān)的設計與實現(xiàn)[D].昆明:云南大學,2014.
[2]賈佩衡.串口-以太網(wǎng)關(guān)轉(zhuǎn)換器設計及其在通信供電監(jiān)控系統(tǒng)中的應用[D].長春:吉林大學,2011.
[3]李志偉,姚江敏.基于串口通信的控制系統(tǒng)設計[J].科技與創(chuàng)新,2016(16):102-103.
[4]陳標龍,王保成等.基于FPGA和FIFO技術(shù)的多串口系統(tǒng)設計與實現(xiàn)[J].計算機測試與控制,2013.21(10):2835-2837.
[5]康春雨.幾種常用開關(guān)防抖電路簡介[J].電子世界,2009(11):43-44.
[6]戴錢坤.一種新型機載防浪涌電壓保護電路設計[J].電子技術(shù)應用.2011(11):58-60.
[7]王兵兵.基于EZ-USBFX2和FPGA的數(shù)據(jù)傳輸系統(tǒng)研究[D].西安:西安電子科技大學,2010.
[8]張 靜,葉小芹.基于FPGA的高速USB協(xié)議分析儀的設計[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