?

一種基于FPGA+DSP的高速串口通信設計

2018-08-06 05:54王蕾李淑婧
現代電子技術 2018年15期
關鍵詞:串口通信高速率誤碼率

王蕾 李淑婧

摘 要: 介紹一種基于FPGA和DSP、高速串口驅動芯片、電源芯片、時鐘芯片等硬件結構耦合設計的高速串口通信方法,使用芯片內核,通過軟件編程實現高速串口通信平臺。系統通過DSP進行通信數據組包、解析、糾錯;FPGA實現高速率設計、串口時序轉換、數據交互;結合高速串口驅動芯片和串口調試終端實現高速數據傳輸。裝置通信速率可達到10 Mb/s,數據傳輸可靠性高,在機載和地面設備中可廣泛應用。

關鍵詞: 高速率; 串口通信; DSP; FPGA; 誤碼率; 可靠性

中圖分類號: TN919.6?34 文獻標識碼: A 文章編號: 1004?373X(2018)15?0022?04

Design of high?speed serial communication based on FPGA and DSP

WANG Lei, LI Shujing

(Laboratory of Ariation Cluster Technology and Operational Application, College of Air Traffic Control and Navigation,

Air Force Engineering University, Xian 710051, China)

Abstract: The high?speed serial communication platform based on the hardware coupling design of DSP and FPGA, high?speed serial driving chip, power supply chip and clock chip is introduced, which is implemented by means of chip kernel and software programming. DSP is used to realize the communication data packaging, parsing and error correction. FPGA is use to realize the high?speed design, serial conversion of timing sequence and data interaction. The high?speed serial driving chip and serial debugging terminal are combined to realize the high?speed data transmission. The transmission speed of the device can reach up to 10 Mb/s, which has high data transmission reliability, and is widely used in airborne and ground equipments.

Keywords: high speed; serial communication; DSP; FPGA; bit error rate; reliability

在數字通信領域中,串口通信作為一種通用手段,廣泛應用于任務處理機、監控臺、模擬器等通信設備中。簡單的低速串口傳輸在實時性要求高、數據量大的機載、地面系統進行人機交互的遠程測控中,不能滿足硬件擴展和調試要求。本文設計了一種基于DSP+FPGA的硬件平臺。DSP芯片具備普通微處理器的運算和控制功能,FPGA芯片發揮其快速性、設計的靈活性、可移植性、邏輯資源密度高等特點。將兩者功能耦合設計,使用芯片內核和相應語言編程,結合電源芯片、時鐘芯片、高速驅動芯片等完成串行數據高速精準傳輸。

1 高速串口傳輸系統硬件結構

系統硬件架構如圖1所示,由電源管理器、時鐘管理器、高速串口驅動芯片AM26LV31E和AM26LV32E,DSP,FPGA等模塊構成,結合多串口轉換器、PC機中的串口控制終端協同工作。

電源管理器為系統各模塊提供工作電源。外部穩壓源輸入系統5 V電壓,由電壓管理器分別生成1.0 V,1.2 V,3.3 V電壓,為DSP,FPGA,AM26LV32E,AM26LV31E等模塊提供工作電壓。

時鐘管理器為系統中各模塊分配工作時鐘,確保系統中DSP和FPGA的工作時鐘穩定可靠。

DSP模塊具有高度集成性,具備多種存儲器接口,帶有DMA通道控制器,保證數據傳輸和計算處理并行工作,編程方便,容易實現,精度高、穩定性好、抗干擾能力強等特點,在本系統中承擔運算和控制功能。DSP通過外部存儲器接口EMIFA中的片選線、讀寫使能線、地址線、數據線與FPGA模塊連接[1]。在DSP調試軟件CCS4.2中使用C語言和匯編語言進行編程,實現數據組包、解析、糾錯、指令控制等。

FPGA模塊具備處理速度快、邏輯資源密度高等特點,在本系統中承擔數據收發、指令交互、時序轉換、數據存儲等工作[2]。FPGA的通用輸入輸出引腳分別與DSP模塊、串口驅動芯片相連[3]。FPGA通過在ISE 14.7開發環境中使用VHDL語言編程,在ModelSim SE 10.4中仿真模擬,調用DCM內核、RAM內核等資源,生成串并轉換時序、存取數據、指令收發、信息交互等。

基本的UART通信需要4條信號線: 接收端RXD±和發送端TXD±。UART數據發送和接收的幀格式,低位先傳: 第一位為起始位,置“0”,表示通信開始; 最后一位為停止位,置“1”,表示通信結束[4]。本系統選用TI公司的AM26LV31E和AM26LV32E完成高速串口驅動。通過芯片使能線和4路數據線將FPGA與AM26LV31E模塊、AM26LV32E模塊連接。AM26LV31E支持4路RS 422數據發送單端轉差分,最高轉換速率為32 MHz,4路共用一組使能控制線。AM26LV32E支持4路RS 422數據接收差分轉單端,最高轉換速率為32 MHz,4路共用一組使能控制線。AM26LV31E模塊接收FPGA發送的使能信號、4路數字信號。AM26LV32E模塊接收FPGA發送的接收使能信號,發送4路數字接收信號至FPGA。本系統RS 422作為平衡通信接口,可實現10 Mb/s的傳輸速率。4路RS 422信號經過9針D型串行接口通過串口轉換器合并連接至PC端機。

2 軟件架構

高速串口傳輸系統軟件架構如圖2所示。

2.1 高速波特率的實現

針對數據傳輸需求,將串口傳輸速率設為可調模式,包括三檔速率:115.2 Kb/s,1.44 Mb/s,10 Mb/s。在DSP中控制串口速率,FPGA中配置相應的DCM核進行分頻。用不同的波特率控制串口收發。串口調試終端按協議發送、接收數據,實現通信交互[5]。

2.2 SLIP封裝協議

RS 422串口通信采用SLIP封裝協議。SLIP是一個面向字符的協議,在每個用戶信息幀的首尾各加一個特殊的標志字節,封裝成為SLIP幀,如圖3所示。標識字節的編碼為0xC0。 若用戶信息幀中的某一個字節與0xC0一樣,那么將該字節更換成0xDB,0xDC。這里的特殊字符0xDB稱為SLIP轉義字符。本系統中,在DSP中完成數據包封裝和解析。

2.3 配置兩個雙口RAM

為解決數據的存取和采樣時鐘不匹配問題,系統使用FPGA內部兩個雙口RAM,分為A,B兩個接口模塊[6]。串口數據在RAM_A模塊中存儲轉換,數據8比特位傳輸,地址設置為8位。系統處理數據在RAM_B模塊中存儲轉換,數據16比特位傳輸,地址設置為7位。

2.4 DSP傳輸數據至串口通信流程

DSP數據傳輸至串口通信流程按一包數據完成一個進程,具體流程如圖4所示。DSP內部首先完成數據包初始化。在初始化時,將上文提到的SLIP協議應用在組包過程中。DSP發送數據包長度、串并轉換使能信號給FPGA,準備轉換。在FPGA中用VHDL編寫的串并轉換文件(P2S.VHDL),將DSP控制的串口速率作為時鐘采樣。FPGA中RAM1的A模塊接收P2S.VHDL文件。A模塊CLKA為DSP配置的高速串口速率,WEA始終為“0”,A模塊始終處于讀狀態。P2S.VHDL文件每運行一次生成10位串行數據和并串轉換結束標志位。其次,串行數據實時輸出。而后,并串轉換結束標志位控制RAM1的A模塊讀地址增加,將讀取的字節依次輸入P2S.VHDL文件,直至轉換完全部數據包長度的數據。在一包數據轉換結束后,FPGA發送回握手信號。通知DSP一次解析完成,繼續填充下一包數據[7]。

2.5 串口傳輸數據至DSP通信流程

串口數據傳輸至DSP通信流程按一包數據完成一個進程,具體流程如圖5所示。

在FPGA中用VHDL編寫的串并轉換文件(S2P.VHDL),將DSP控制的串口速率作為時鐘采樣[8]。FPGA中RAM2的A模塊接S2P.VHDL文件。RAM2的A模塊WEA置“1”,A模塊處于寫狀態。數據從串口調試終端輸入FPGA 中,S2P.VHDL文件每運行一次生成一個字節和串并轉換結束標志位。首先,對第一字節進行有效性判斷。第一字節為0xC0,代表本包數據有效,則進入第二字節判斷;否則,丟棄本包數據。其次,對第二字節進行數據包長度判斷。第二字節為0x11,0x12,0x13等,解析數據包長度具體對應如表1所示。將解析的長度值作為本次填寫RAM2的總長度。同時,RAM2的A模塊ADDRA根據串并轉換進程結束后生成的標志位進行遞增,依次存儲數據。將轉換的字節依次填入RAM2中,直至寫入全部數據,完成RAM2初始化。此時一包數據存儲完成,生成標志位返回DSP中斷。DSP判斷中斷到來進入指令解析步驟[9]。

2.6 系統設計的RTL

系統設計的部分RTL如圖6所示,由串口發送模塊(rs422_trans)、串口接收模塊(rs422_rec)、波特率發生器(CLK_GEN)3個模塊組成。其中,波特率發生器產生可調的串口采樣時鐘。UART_TOP 模塊即串口收發頂層模塊實現各模塊間的信號連接。rs422_trans模塊負責數據串并轉換,rs422_rec模塊負責數據并串轉換。

3 測試結果

3.1 仿真測試結果

本系統在ModelSim 10.1環境中進行驗證[10]。模擬DSP發送數據并串轉換,仿真結果如圖7所示。當buf_ tx_in輸入為“11110001”時,data_tx_out按時鐘輸出“0,1,0,0,0,1,1,1,1,1”,done_tx在轉換結束后輸出“1”。

模擬串口發送數據串并轉換,仿真結果如圖8所示。當data_tx_in按時鐘輸入“0,0,1,1,1,0,1,1,1,1”,buf_rx_ out輸入為“0xEE”時,done_rx在轉換結束后輸出“1”。

3.2 硬件測試結果

PC端機中設有串口測試終端。測試軟件在Visual Studio 2010平臺上使用C++語言編程。終端界面負責下達、數據收發檢測、實時狀態上報、誤碼率判斷等工作。如圖9所示,測試時將波特率設定為10 Mb/s,以十進制發送數據包“123456789”,驗證串口傳輸誤碼率。重復次數為10 000次時,誤碼率為0。驗證了該通信方法的可靠性。

4 結 語

本文方法在任務處理機原有的硬件平臺上,以DSP+FPGA為基礎開發,結合電源管理模塊、時鐘配置模塊、驅動芯片AM26LV31E和AM26LV32E實現串口高速傳輸功能。重點介紹了系統的硬件設計和軟件架構。DSP通過外部存儲器接口EMIFA與FPGA模塊連接,使用C語言和匯編語言編程,實現數據組包、解析、糾錯、指令控制等。FPGA的通用輸入輸出引腳分別與其他芯片相連,使用VHDL語言編程,在ModelSim SE 10.4中仿真模擬,設計實現UART協議電路,使用較少的資源實現高速串口通信,可移植性高。在工程應用中結合串口調試終端與PC機通信,實現串口通信無差錯傳輸,速率可達到10 Mb/s。該系統可根據需求加入數據校驗方法,對數據包進行加解密保護;可選擇不同的串口速率進行高速、大容量的數據傳輸,可靠性和穩定性能完備;滿足了實時性要求高、數據量大的數字通信系統通信需求,硬件擴展性強,可靠性高、調試直觀,可廣泛應用于機載和地面設備中。

參考文獻

[1] 桂江華,邵健,潘邈.一種高可靠串行通信協議[J].電子與封裝,2016,16(2):40?43.

GUI Jianghua, SHAO Jian, PAN Miao. A high reliable serial communication protocol [J]. Electronics and packaging, 2016, 16(2): 40?43.

[2] 丁毅,趙笑龍,豐偉.基于在線調試的串口通信協議測試方法[J].航空電子技術,2016,47(2):30?33.

DING Yi, ZHAO Xiaolong, FENG Wei. Test method of serial port communication protocol based on online debugging [J]. Avionics technology, 2016, 47(2): 30?33.

[3] 蔣欣,蔡明,張偉棟,等.基于FPGA 的可反饋式同步串行通信技術[J].現代電子技術,2015,38(12):139?142.

JIANG Xin, CAI Ming, ZHANG Weidong, et al. Feedback synchronous serial communication technology based on FPGA [J]. Modern electronics technique, 2015, 38(12): 139?142.

[4] 蔡艷輝,胡銳,程鵬飛,等.一種基于FPGA+DSP的北斗兼容型高精度接收機系統設計[J].導航定位學報,2013,1(2):1?6.

CAI Yanhui, HU Rui, CHENG Pengfei, et al. Design of a Beidou compatible high precision receiver based on FPGA+DSP [J]. Journal of navigation and positioning, 2013, 1(2): 1?6.

[5] 李偉.基于FPGA的多串口通信設計與實現[J].數字技術與應用,2015(2):174?175.

LI Wei. Design and implementation of multi?serial port communication based on FPGA [J]. Digital technology and applications, 2015(2): 174?175.

[6] 胡焱.基于FPGA+DSP的數字中頻收發機的設計[J].現代電子技術,2016,39(15):78?80.

HU Yan. Design of digital medium frequency transmitter based on FPGA+DSP [J]. Modern electronics technique, 2016, 39(15): 78?80.

[7] 肖凡,馬婭婕,尹首一,等.FPGA 串行通信的視頻疊加系統的設計[J].儀表技術與傳感器,2016(2):72?75.

XIAO Fan, MA Yajie, YIN Shouyi, et al. Design of video overlay system for FPGA serial communication [J]. Instrument technology and sensors, 2016(2): 72?75.

[8] 王斌,張林,鄧軍,等.一種基于高速串口通信的高效數據處理方法[J].自動化技術與應用,2016,35(6):57?60.

WANG Bin, ZHANG Lin, DENG Jun, et al. A high efficiency data processing method based on high?speed serial port communication [J]. Communications and information processing, 2016, 35(6): 57?60.

[9] 李瑩,賈彬.一種基于狀態機的串口通信協議的設計與實現[J].電子設計工程,2012,20(7):100?103.

LI Ying, JIA Bin. A serial port communication protocol based on state machine and its implementation [J]. Electronic design engineering, 2012, 20(7): 100?103.

[10] 王沖,汪寶祥.基于FPGA 的串行通訊接口設計[J].微處理機,2016,37(3):73?76.

WANG Chong, WANG Baoxiang. Design of serial communication interface based on FPGA [J]. Microprocessors, 2016, 37(3): 73?76.

猜你喜歡
串口通信高速率誤碼率
面向通信系統的誤碼率計算方法
LTE技術在城市軌道交通信號系統中的應用探討
一種高速背板連接器的設計
船舶通信導航技術及發展趨勢研究
串口通信在智能家居監控系統中的應用
基于OpenCV的室內照明智能控制系統設計與實現
泰克推出BERTScope誤碼率測試儀
關于OTN糾錯前誤碼率隨機波動問題的分析
星載干涉合成孔徑雷達系統的誤碼率指標分析
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合