吳振鋒, 殷志柱, 王 云
上海電氣集團(tuán)股份有限公司 中央研究院 上海 200070
基于現(xiàn)場(chǎng)可編程門陣列的光纖快速串行通信方案
吳振鋒,殷志柱,王云
上海電氣集團(tuán)股份有限公司 中央研究院上海200070
設(shè)計(jì)了一種基于現(xiàn)場(chǎng)可編程門陣列的光纖快速串行通信方案。這一方案屬于異步通信,通過(guò)在線邏輯仿真與調(diào)試,在極低通信誤碼率的前提下實(shí)現(xiàn)了3Mbit/s的通信速率,相對(duì)于傳統(tǒng)的RS232通信,速率大幅提升。
現(xiàn)場(chǎng)可編程門陣列;光纖;串行通信;設(shè)計(jì)
目前,RS232異步串行通信因協(xié)議簡(jiǎn)單、易于快速開(kāi)發(fā)等優(yōu)點(diǎn),在工業(yè)控制領(lǐng)域仍有相當(dāng)廣泛的應(yīng)用。然而,RS232傳輸速率往往受限于外圍電平轉(zhuǎn)換芯片及傳輸電纜,比如常用的電平轉(zhuǎn)換芯片MAX3232和MAX3241限制最大傳輸速率為 120kbit/s,MAX3237限制最大傳輸速率為1Mbit/s。RS232的傳輸媒質(zhì)一般采用電纜,但是電纜有較嚴(yán)重的衰耗問(wèn)題[1],且抗干擾能力弱,傳輸速率低。
對(duì)于穩(wěn)定性要求嚴(yán)格、抗電磁干擾性強(qiáng)、保密性要求高的工業(yè)環(huán)境,可以采用抗干擾性強(qiáng)、保密性高、傳輸速率快的光纖作為通信媒介,保證數(shù)據(jù)傳輸?shù)目焖傩?、?zhǔn)確性及抗干擾性[2-5]?,F(xiàn)場(chǎng)可編程門陣列(FPGA)因高度的靈活性及并行處理能力,在嵌入式控制領(lǐng)域得到越來(lái)越廣泛的應(yīng)用[6-9]。為適應(yīng)不同的外部通信設(shè)備,在FPGA內(nèi)部快速開(kāi)發(fā)出相應(yīng)的接口協(xié)議,便是FPGA常見(jiàn)的應(yīng)用方向之一[10-11]。
基于FPGA應(yīng)用場(chǎng)景,設(shè)計(jì)了一種基于FPGA加光纖介質(zhì)的異步串行通信方案。這一方案簡(jiǎn)單、可靠,可實(shí)現(xiàn)3Mbit/s的通信速率,相對(duì)于傳統(tǒng)RS232通信有大幅提升。
筆者設(shè)計(jì)的硬件通信電路原理如圖1所示,兩塊通信板卡上的FPGA其內(nèi)部分別實(shí)現(xiàn)RS232的異步收發(fā)邏輯,數(shù)據(jù)經(jīng)過(guò)光纖傳輸接口進(jìn)行光電轉(zhuǎn)換,再經(jīng)過(guò)兩根光纖介質(zhì)實(shí)現(xiàn)全雙工傳輸。與傳統(tǒng)的串行方案相比,這一方案使用光電轉(zhuǎn)換接口替換電平轉(zhuǎn)換芯片,并用光纖代替普通通信電纜,從而使串行通信的傳輸速率得到大幅度提高。
圖1 硬件通信電路原理
光電轉(zhuǎn)換器件選擇了低成本的HFBR-0501系列光纖收發(fā)器,如圖2所示。該系列光纖收發(fā)器采用600nm波長(zhǎng)的可見(jiàn)光傳輸,在20m的傳輸距離內(nèi)通信速率最高可達(dá)5Mbit/s,其外圍電路連接如圖3所示。
圖2 HFBR-0501系列光纖收發(fā)器
本著低成本、高可靠及保密性的要求,選擇了ACTEL 公司的ProASIC3 系列FPGA,對(duì)應(yīng)的開(kāi)發(fā)軟件平臺(tái)為L(zhǎng)ibero SOC。Libero SOC是一個(gè)全面的開(kāi)發(fā)平臺(tái),包含設(shè)計(jì)輸入、仿真、布局布線、時(shí)序及功耗分析等諸多開(kāi)發(fā)工具。
基于Verilog HDL語(yǔ)言,在ProASIC3系列FPGA上開(kāi)發(fā)了相應(yīng)的串口通信邏輯。典型的串口數(shù)據(jù)幀格式包含1位起始位、7~8位數(shù)據(jù)位、1位奇偶校驗(yàn)位和1~2位停止位。一般而言,奇偶校驗(yàn)位可以省略。筆者設(shè)計(jì)的串口通信邏輯采用1位起始位、8位數(shù)據(jù)位、1位停止位的數(shù)據(jù)幀格式。
串口傳輸常用的通信速率有9.6kbit/s、19.2kbit/s、38.4kbit/s、57.6kbit/s及 115.2kbit/s,鑒于通信的雙方為FPGA,可以遠(yuǎn)大于上述速率進(jìn)行通信。此外,考慮光纖最高傳輸速率為5Mbit/s,為留有一定裕量,將數(shù)據(jù)傳輸速率設(shè)定為 3Mbit/s。
圖3 HFBR-0501系列光纖收發(fā)器外圍電路連接
由于FPGA所使用的系統(tǒng)時(shí)鐘為30MHz,欲達(dá)到3Mbit/s的傳輸速率,則波特率時(shí)鐘應(yīng)為系統(tǒng)時(shí)鐘的10分頻,即3MHz,后文默認(rèn)的波特率時(shí)鐘均為3MHz。
串口接收原理如圖4所示,其中RS232_rx是串口接收端電平變化,Clk_bps是波特率采樣時(shí)鐘。為了使采集的數(shù)據(jù)最為穩(wěn)定,每次采樣都在數(shù)據(jù)位的中間時(shí)刻采集。對(duì)每一幀數(shù)據(jù)進(jìn)行接收時(shí),先檢測(cè)RS232_rx端口的低電平并忽略起始位,然后開(kāi)始對(duì)之后的連續(xù)8個(gè)數(shù)據(jù)位采樣,最后的停止位同樣可以忽略。如此,8個(gè)數(shù)據(jù)位組成1幀字節(jié),保存到RX_data寄存器并輸出。
圖4 串口接收原理
根據(jù)分析,串口接收模塊可以細(xì)分為三個(gè)模塊: 起始位檢測(cè)模塊(Start_detect)、接收控制模塊(RX_control)和波特率時(shí)鐘生成模塊(Bps_clk_generate),如圖5所示。Start_detect模塊負(fù)責(zé)檢測(cè)RS232_rx串口接收端的電平變化,并判斷是否為起始位。如果是起始位,則將Is_start信號(hào)拉高1個(gè)時(shí)鐘周期。RX_control模塊接收到Is_start脈沖后,使能波特率計(jì)時(shí)信號(hào)Bps_start。Bps_clk_generate模塊得到Bps_start使能信號(hào)后,開(kāi)始計(jì)時(shí),產(chǎn)生波特率時(shí)鐘信號(hào)Clk_bps,送至RX_control模塊進(jìn)行接收總線上的數(shù)據(jù)采樣。
使用Verilog HDL語(yǔ)言設(shè)計(jì)上述三個(gè)模塊后,將它們封裝,并利用Libero SOC軟件的Smart Design工具將封裝后的代碼模塊圖形化,如圖6所示。模塊左側(cè)為輸入端口,右側(cè)為輸出端口,端口定義見(jiàn)表1。
圖5 串口接收模塊示意圖
圖6 串口接收模塊封裝后圖形化
串口數(shù)據(jù)的發(fā)送過(guò)程與接收過(guò)程類似,如圖7所示。發(fā)送端RS232_tx在空閑狀態(tài)時(shí)為高電平,發(fā)送模塊一旦檢測(cè)到有需要發(fā)送的數(shù)據(jù),則開(kāi)始進(jìn)行計(jì)數(shù),定時(shí)產(chǎn)生波特率時(shí)鐘信號(hào)Clk_bps。在波特率時(shí)鐘的節(jié)拍下,數(shù)據(jù)發(fā)送端 RS232_tx逐位發(fā)送數(shù)據(jù),首先發(fā)送起始位 0,然后發(fā)送8位數(shù)據(jù)位,最后發(fā)送停止位。1幀數(shù)據(jù)發(fā)送完畢后,RS232_tx恢復(fù)為高電平。
圖7 串口發(fā)送原理
根據(jù)分析,串口發(fā)送模塊可以細(xì)分為波特率時(shí)鐘生成模塊(Bps_clk_generate)和發(fā)送控制模塊(TX_control),如圖8所示。TX_control模塊檢測(cè)到發(fā)送使能信號(hào)TX_enable后,使能波特率計(jì)時(shí)信號(hào)Bps_start。Bps_clk_generate模塊得到Bsp_start使能信號(hào)后,開(kāi)始計(jì)時(shí),產(chǎn)生波特率時(shí)鐘信號(hào)Clk_bps,送至 TX_control 模塊進(jìn)行總線上的數(shù)據(jù)發(fā)送。
圖8 串口發(fā)送模塊示意圖
使用Verilog HDL語(yǔ)言設(shè)計(jì)上述兩個(gè)模塊后,將它們封裝,并利用Libero SOC軟件的Smart Design工具將封裝后的代碼模塊圖形化,如圖9所示。模塊左側(cè)為輸入端口,右側(cè)為輸出端口,端口定義見(jiàn)表2。
圖9 串口發(fā)送模塊封裝后圖形化
端口名稱端口定義Clk全局時(shí)鐘Rst_n復(fù)位信號(hào)TX_enable發(fā)送使能Data_to_send[7:0]待發(fā)送數(shù)據(jù)RS232_tx串口發(fā)送端TX_done發(fā)送完成
為了驗(yàn)證所設(shè)計(jì)的串口接收和發(fā)送子模塊,專門設(shè)計(jì)了一個(gè)測(cè)試模塊TX_RX_test_1,如圖10所示。測(cè)試模塊有兩個(gè)功能: 一是向串口發(fā)送模塊輸送待傳輸數(shù)據(jù),二是對(duì)串口接收模塊收到的數(shù)據(jù)進(jìn)行驗(yàn)證判斷。
圖10 測(cè)試模塊
測(cè)試模塊內(nèi)部有發(fā)送狀態(tài)機(jī)和接收狀態(tài)機(jī),分別如圖11、圖12所示。可以看出,發(fā)送狀態(tài)機(jī)循環(huán)發(fā)送從0到127的不斷遞增8數(shù)據(jù)位數(shù),而接收狀態(tài)機(jī)則對(duì)接收到的數(shù)據(jù)進(jìn)行判斷,判斷是否等于上次接收到的數(shù)據(jù)加1。同時(shí)設(shè)置了一個(gè)錯(cuò)誤計(jì)數(shù)器RX_error_cnt,用于統(tǒng)計(jì)傳輸錯(cuò)誤。另外,發(fā)送狀態(tài)機(jī)和接收狀態(tài)機(jī)分別設(shè)置了發(fā)送次數(shù)計(jì)數(shù)器N和接收次數(shù)計(jì)數(shù)器n,以便于統(tǒng)計(jì)誤碼率。
圖11 發(fā)送狀態(tài)機(jī)
圖12 接收狀態(tài)機(jī)
測(cè)試模塊和串口接收、串口發(fā)送模塊的總體信號(hào)連接如圖13所示。
圖13 總體信號(hào)連接
基于Identify Instrumentor和Identify Debugger的在線邏輯仿真流程本文不再贅述,簡(jiǎn)單而言,即在Identify Instrumentor中設(shè)置好采樣時(shí)鐘、待采樣信號(hào)、觸發(fā)信號(hào)、采樣深度等信息后,在Identify Debugger中設(shè)置具體的觸發(fā)信號(hào)和觸發(fā)方式,在線抓取被測(cè)試信號(hào)。
經(jīng)過(guò)板級(jí)的在線邏輯仿真測(cè)試,得到如圖14所示的收發(fā)數(shù)據(jù)波形。
從圖14中可以看出,當(dāng)發(fā)送次數(shù)N和接收次數(shù)n超過(guò)108時(shí),接收錯(cuò)誤計(jì)數(shù)器RX_error_cnt依舊為0,達(dá)到了極低的誤碼率。
板級(jí)的在線邏輯仿真測(cè)試表明,筆者設(shè)計(jì)的FPGA加光纖異步串行通信方案對(duì)數(shù)據(jù)的收發(fā)準(zhǔn)確無(wú)誤,大幅提高了通信速率,是一種簡(jiǎn)單、可靠的快速串行通信方法。工業(yè)應(yīng)用中對(duì)RS232通信速率有提升訴求時(shí),可以借鑒筆者所提方案。
圖14 在線邏輯仿真收發(fā)數(shù)據(jù)波形
[1] 馬海燕,韓存武.光纖——串口連接器設(shè)計(jì)[J].咸寧學(xué)院學(xué)報(bào),2009,29(6): 64-65.
[2] 郝丹,閆柏旭.光纖通信概述[J].中國(guó)科技信息, 2011(7): 112-113.
[3] 趙梓森.光纖通信的過(guò)去、現(xiàn)在和未來(lái)[J].光學(xué)學(xué)報(bào),2011,31(9): 91-93.
[4] 關(guān)林君.基于光纖串行通信的數(shù)控底層控制器研究及實(shí)現(xiàn)[D].廣州: 華南理工大學(xué),2011.
[5] 王亞.基于FPGA的光纖式高速串行同步通信[J].淮海工學(xué)院學(xué)報(bào)(自然科學(xué)版) ,2016,25(2): 24-28.
[6] 鄭西點(diǎn),袁浩巍,嚴(yán)佳玲,等.基于CMOS+FPGA的高速視覺(jué)實(shí)時(shí)定位與跟蹤系統(tǒng)[J].上海電氣技術(shù), 2015,8(4): 18-25.
[7] 鄭紅峰,李博.基于FPGA的太陽(yáng)能集熱系統(tǒng)智能控制器的開(kāi)發(fā)[J].上海電氣技術(shù), 2012,5(1): 40-42.
[8] 翁彬,李潔,顧偉光.基于FPGA實(shí)現(xiàn)的一種電加熱浸漆控制方法[J].裝備機(jī)械, 2013(2): 25-31.
[9] 袁磊.基于高速旋轉(zhuǎn)機(jī)械檢測(cè)光纖信號(hào)非接觸傳輸裝置的研制[J].機(jī)械制造, 2011,49(5): 68-70.
[10] 任德齊,譚中華,郭兵,等.現(xiàn)代通信技術(shù)[M].北京: 機(jī)械工業(yè)出版社, 2002.
[11] 張春生,蘇開(kāi)友.FPGA數(shù)字信號(hào)處理與工程應(yīng)用實(shí)踐[M].北京: 中國(guó)鐵道出版社, 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—),男,碩士,工程師,主要從事嵌入式系統(tǒng)開(kāi)發(fā)工作,E-mail: wzf-life@163.com