吳振鋒, 殷志柱, 王 云
上海電氣集團股份有限公司 中央研究院 上海 200070
基于現場可編程門陣列的光纖快速串行通信方案
吳振鋒,殷志柱,王云
上海電氣集團股份有限公司 中央研究院上海200070
設計了一種基于現場可編程門陣列的光纖快速串行通信方案。這一方案屬于異步通信,通過在線邏輯仿真與調試,在極低通信誤碼率的前提下實現了3Mbit/s的通信速率,相對于傳統的RS232通信,速率大幅提升。
現場可編程門陣列;光纖;串行通信;設計
目前,RS232異步串行通信因協議簡單、易于快速開發等優點,在工業控制領域仍有相當廣泛的應用。然而,RS232傳輸速率往往受限于外圍電平轉換芯片及傳輸電纜,比如常用的電平轉換芯片MAX3232和MAX3241限制最大傳輸速率為 120kbit/s,MAX3237限制最大傳輸速率為1Mbit/s。RS232的傳輸媒質一般采用電纜,但是電纜有較嚴重的衰耗問題[1],且抗干擾能力弱,傳輸速率低。
對于穩定性要求嚴格、抗電磁干擾性強、保密性要求高的工業環境,可以采用抗干擾性強、保密性高、傳輸速率快的光纖作為通信媒介,保證數據傳輸的快速性、準確性及抗干擾性[2-5]。現場可編程門陣列(FPGA)因高度的靈活性及并行處理能力,在嵌入式控制領域得到越來越廣泛的應用[6-9]。為適應不同的外部通信設備,在FPGA內部快速開發出相應的接口協議,便是FPGA常見的應用方向之一[10-11]。
基于FPGA應用場景,設計了一種基于FPGA加光纖介質的異步串行通信方案。這一方案簡單、可靠,可實現3Mbit/s的通信速率,相對于傳統RS232通信有大幅提升。
筆者設計的硬件通信電路原理如圖1所示,兩塊通信板卡上的FPGA其內部分別實現RS232的異步收發邏輯,數據經過光纖傳輸接口進行光電轉換,再經過兩根光纖介質實現全雙工傳輸。與傳統的串行方案相比,這一方案使用光電轉換接口替換電平轉換芯片,并用光纖代替普通通信電纜,從而使串行通信的傳輸速率得到大幅度提高。

圖1 硬件通信電路原理
光電轉換器件選擇了低成本的HFBR-0501系列光纖收發器,如圖2所示。該系列光纖收發器采用600nm波長的可見光傳輸,在20m的傳輸距離內通信速率最高可達5Mbit/s,其外圍電路連接如圖3所示。

圖2 HFBR-0501系列光纖收發器
本著低成本、高可靠及保密性的要求,選擇了ACTEL 公司的ProASIC3 系列FPGA,對應的開發軟件平臺為Libero SOC。Libero SOC是一個全面的開發平臺,包含設計輸入、仿真、布局布線、時序及功耗分析等諸多開發工具。
基于Verilog HDL語言,在ProASIC3系列FPGA上開發了相應的串口通信邏輯。典型的串口數據幀格式包含1位起始位、7~8位數據位、1位奇偶校驗位和1~2位停止位。一般而言,奇偶校驗位可以省略。筆者設計的串口通信邏輯采用1位起始位、8位數據位、1位停止位的數據幀格式。
串口傳輸常用的通信速率有9.6kbit/s、19.2kbit/s、38.4kbit/s、57.6kbit/s及 115.2kbit/s,鑒于通信的雙方為FPGA,可以遠大于上述速率進行通信。此外,考慮光纖最高傳輸速率為5Mbit/s,為留有一定裕量,將數據傳輸速率設定為 3Mbit/s。

圖3 HFBR-0501系列光纖收發器外圍電路連接
由于FPGA所使用的系統時鐘為30MHz,欲達到3Mbit/s的傳輸速率,則波特率時鐘應為系統時鐘的10分頻,即3MHz,后文默認的波特率時鐘均為3MHz。
串口接收原理如圖4所示,其中RS232_rx是串口接收端電平變化,Clk_bps是波特率采樣時鐘。為了使采集的數據最為穩定,每次采樣都在數據位的中間時刻采集。對每一幀數據進行接收時,先檢測RS232_rx端口的低電平并忽略起始位,然后開始對之后的連續8個數據位采樣,最后的停止位同樣可以忽略。如此,8個數據位組成1幀字節,保存到RX_data寄存器并輸出。

圖4 串口接收原理
根據分析,串口接收模塊可以細分為三個模塊: 起始位檢測模塊(Start_detect)、接收控制模塊(RX_control)和波特率時鐘生成模塊(Bps_clk_generate),如圖5所示。Start_detect模塊負責檢測RS232_rx串口接收端的電平變化,并判斷是否為起始位。如果是起始位,則將Is_start信號拉高1個時鐘周期。RX_control模塊接收到Is_start脈沖后,使能波特率計時信號Bps_start。Bps_clk_generate模塊得到Bps_start使能信號后,開始計時,產生波特率時鐘信號Clk_bps,送至RX_control模塊進行接收總線上的數據采樣。
使用Verilog HDL語言設計上述三個模塊后,將它們封裝,并利用Libero SOC軟件的Smart Design工具將封裝后的代碼模塊圖形化,如圖6所示。模塊左側為輸入端口,右側為輸出端口,端口定義見表1。

圖5 串口接收模塊示意圖

圖6 串口接收模塊封裝后圖形化
串口數據的發送過程與接收過程類似,如圖7所示。發送端RS232_tx在空閑狀態時為高電平,發送模塊一旦檢測到有需要發送的數據,則開始進行計數,定時產生波特率時鐘信號Clk_bps。在波特率時鐘的節拍下,數據發送端 RS232_tx逐位發送數據,首先發送起始位 0,然后發送8位數據位,最后發送停止位。1幀數據發送完畢后,RS232_tx恢復為高電平。

圖7 串口發送原理
根據分析,串口發送模塊可以細分為波特率時鐘生成模塊(Bps_clk_generate)和發送控制模塊(TX_control),如圖8所示。TX_control模塊檢測到發送使能信號TX_enable后,使能波特率計時信號Bps_start。Bps_clk_generate模塊得到Bsp_start使能信號后,開始計時,產生波特率時鐘信號Clk_bps,送至 TX_control 模塊進行總線上的數據發送。

圖8 串口發送模塊示意圖
使用Verilog HDL語言設計上述兩個模塊后,將它們封裝,并利用Libero SOC軟件的Smart Design工具將封裝后的代碼模塊圖形化,如圖9所示。模塊左側為輸入端口,右側為輸出端口,端口定義見表2。

圖9 串口發送模塊封裝后圖形化

端口名稱端口定義Clk全局時鐘Rst_n復位信號TX_enable發送使能Data_to_send[7:0]待發送數據RS232_tx串口發送端TX_done發送完成
為了驗證所設計的串口接收和發送子模塊,專門設計了一個測試模塊TX_RX_test_1,如圖10所示。測試模塊有兩個功能: 一是向串口發送模塊輸送待傳輸數據,二是對串口接收模塊收到的數據進行驗證判斷。

圖10 測試模塊
測試模塊內部有發送狀態機和接收狀態機,分別如圖11、圖12所示。可以看出,發送狀態機循環發送從0到127的不斷遞增8數據位數,而接收狀態機則對接收到的數據進行判斷,判斷是否等于上次接收到的數據加1。同時設置了一個錯誤計數器RX_error_cnt,用于統計傳輸錯誤。另外,發送狀態機和接收狀態機分別設置了發送次數計數器N和接收次數計數器n,以便于統計誤碼率。

圖11 發送狀態機

圖12 接收狀態機
測試模塊和串口接收、串口發送模塊的總體信號連接如圖13所示。

圖13 總體信號連接
基于Identify Instrumentor和Identify Debugger的在線邏輯仿真流程本文不再贅述,簡單而言,即在Identify Instrumentor中設置好采樣時鐘、待采樣信號、觸發信號、采樣深度等信息后,在Identify Debugger中設置具體的觸發信號和觸發方式,在線抓取被測試信號。
經過板級的在線邏輯仿真測試,得到如圖14所示的收發數據波形。
從圖14中可以看出,當發送次數N和接收次數n超過108時,接收錯誤計數器RX_error_cnt依舊為0,達到了極低的誤碼率。
板級的在線邏輯仿真測試表明,筆者設計的FPGA加光纖異步串行通信方案對數據的收發準確無誤,大幅提高了通信速率,是一種簡單、可靠的快速串行通信方法。工業應用中對RS232通信速率有提升訴求時,可以借鑒筆者所提方案。

圖14 在線邏輯仿真收發數據波形
[1] 馬海燕,韓存武.光纖——串口連接器設計[J].咸寧學院學報,2009,29(6): 64-65.
[2] 郝丹,閆柏旭.光纖通信概述[J].中國科技信息, 2011(7): 112-113.
[3] 趙梓森.光纖通信的過去、現在和未來[J].光學學報,2011,31(9): 91-93.
[4] 關林君.基于光纖串行通信的數控底層控制器研究及實現[D].廣州: 華南理工大學,2011.
[5] 王亞.基于FPGA的光纖式高速串行同步通信[J].淮海工學院學報(自然科學版) ,2016,25(2): 24-28.
[6] 鄭西點,袁浩巍,嚴佳玲,等.基于CMOS+FPGA的高速視覺實時定位與跟蹤系統[J].上海電氣技術, 2015,8(4): 18-25.
[7] 鄭紅峰,李博.基于FPGA的太陽能集熱系統智能控制器的開發[J].上海電氣技術, 2012,5(1): 40-42.
[8] 翁彬,李潔,顧偉光.基于FPGA實現的一種電加熱浸漆控制方法[J].裝備機械, 2013(2): 25-31.
[9] 袁磊.基于高速旋轉機械檢測光纖信號非接觸傳輸裝置的研制[J].機械制造, 2011,49(5): 68-70.
[10] 任德齊,譚中華,郭兵,等.現代通信技術[M].北京: 機械工業出版社, 2002.
[11] 張春生,蘇開友.FPGA數字信號處理與工程應用實踐[M].北京: 中國鐵道出版社, 2013.
(編輯: 小前)
A fast serial communication scheme with optical fiber based on FPGA was designed. This scheme is a sort of asynchronous communication, through online logic simulation and debugging, it is possible to realize a communication rate of 3Mbit/s provided that the communication error rate is very low. Relative to the traditional RS232 communication, the rate has increased significantly.
FPGA;OpticalFiber;SerialCommunication;Design
TM13;TP336
B
1674-540X(2017)04-016-05
2017年8月
吳振鋒(1987—),男,碩士,工程師,主要從事嵌入式系統開發工作,E-mail: wzf-life@163.com