丁超
【摘要】 RS232是一種常用的異步的串行通訊接口,本文介紹了基于FPGA的RS232接口設(shè)計(jì)與實(shí)現(xiàn)過(guò)程,利用FPGA完成全雙工串口通信,波特率可任意設(shè)置,接口掛載數(shù)量多,并能實(shí)現(xiàn)多通道同步處理,設(shè)計(jì)方式靈活,通用性較強(qiáng)。
【關(guān)鍵字】 FPGA RS232接口 串口通信 幀數(shù)據(jù)解析
一、前言
RS232作為低速短距離通信的串行接口,常用于配合上位機(jī)通信。傳統(tǒng)單片機(jī)實(shí)現(xiàn)的RS232串口通信,波特率設(shè)置固定,接口掛載數(shù)量有限,接口速度較慢等諸多缺點(diǎn),并且單片機(jī)的并行操作,難以實(shí)現(xiàn)RS232的全雙工功能。為此,本文介紹基于FPGA的RS232接口設(shè)計(jì)與實(shí)現(xiàn),彌補(bǔ)了單片機(jī)在RS232通信中的不足。
二、接口電平轉(zhuǎn)換的設(shè)計(jì)
使用9針RS232通信接口實(shí)際使用時(shí),利用TXD(發(fā)送數(shù)據(jù))、RXD (接收數(shù)據(jù))、GND(地線)三線便能實(shí)現(xiàn)串口通信。RS232規(guī)定的邏輯電平與一般處理器的邏輯電平不同,在TXD、RXD中,邏輯1電壓為-3~-15V,邏輯0電壓為+3~+15V。因此要想與PC的232接口通信,需要專門的電平轉(zhuǎn)換芯片將RS232電平轉(zhuǎn)換為TTL電平。我們使用專門的MAX232電頻轉(zhuǎn)換芯片可實(shí)現(xiàn)電平的轉(zhuǎn)換,保證處理機(jī)與PC通信的正常進(jìn)行。接口傳輸線纜少,電路設(shè)計(jì)相對(duì)簡(jiǎn)單。如圖2-1所示:
三、邏輯設(shè)計(jì)
利用FPGA設(shè)計(jì)RS232接口通信,設(shè)計(jì)靈活性較大。在FPGA中,接口的通信可同時(shí)進(jìn)行,互不干擾。因此可實(shí)現(xiàn)全雙工的串口通信。數(shù)據(jù)的發(fā)送與接收可使用獨(dú)自的波特率,并且波特率可任意設(shè)置,保證數(shù)據(jù)的正確接收與發(fā)送。
例如在與PC進(jìn)行數(shù)據(jù)交互時(shí),我們規(guī)定接收來(lái)自PC的數(shù)據(jù)波特率為115200bps,發(fā)送速率為9600bps,數(shù)據(jù)收發(fā)同時(shí)進(jìn)行。在單片機(jī)中指令順利執(zhí)行,速度也相對(duì)較慢,要實(shí)現(xiàn)這樣一組RS232接口通信較為困難。在FPGA設(shè)計(jì)中,接口的數(shù)據(jù)收發(fā)可同步進(jìn)行,RXD,TXD映射到底層的收、發(fā)子模塊,子模塊的操作只受敏感信號(hào)主時(shí)鐘CLK與復(fù)位信號(hào)的影響,實(shí)現(xiàn)收、發(fā)同步的同時(shí),每個(gè)子模塊中波特率可設(shè)置為任意波特率,波特率由FPGA描述各自模塊內(nèi)部的計(jì)數(shù)器,計(jì)數(shù)到標(biāo)志位產(chǎn)生波特率時(shí)鐘,因此可獨(dú)立將接收波特率設(shè)置為115200bps,將發(fā)送波特率設(shè)置為9600bps。FPGA實(shí)現(xiàn)數(shù)據(jù)收發(fā)的邏輯描述如圖3-1所示:
當(dāng)FPGA的RX引腳檢測(cè)到外部信號(hào)發(fā)送時(shí),RX電平拉低,進(jìn)入起始位,F(xiàn)PGA內(nèi)部接收子模塊中,已設(shè)置好接收波特率設(shè)置,在移位操作后,將8位數(shù)據(jù)信息解析出來(lái)。由于數(shù)據(jù)流要進(jìn)行發(fā)送處理,并且接收速度大于發(fā)送速度,這便會(huì)出現(xiàn)數(shù)據(jù)丟失的可能。因此在接收子模塊中將數(shù)據(jù)緩存如FIFO中作為數(shù)據(jù)保留,待需要發(fā)送時(shí),將數(shù)據(jù)發(fā)送至發(fā)送子模塊的緩存區(qū)域(FIFO),準(zhǔn)備好發(fā)送狀態(tài),數(shù)據(jù)發(fā)送時(shí),由起始位、數(shù)據(jù)位8位、校驗(yàn)位(可刪)、停止位重組 發(fā)送至PC端。設(shè)計(jì)中,接收,發(fā)送端保留自身的速度特性,互不影響,實(shí)現(xiàn)RS232的全雙工通信。FIFO作為數(shù)據(jù)緩存使用,防止數(shù)據(jù)流失的可能,確保了數(shù)據(jù)流收發(fā)的正確性。
總結(jié):基于FPGA的RS232接口設(shè)計(jì),盡管在成本上高與單片機(jī),但在功能需求較高的接口通信設(shè)計(jì)中,仍具它獨(dú)特優(yōu)勢(shì)。較之單片機(jī)功能固定、資源有限、串行數(shù)據(jù)處理的缺點(diǎn),利用FPGA實(shí)現(xiàn)RS232接口通信,設(shè)計(jì)更為靈活,可掛載多組RS232接口實(shí)現(xiàn)并行通信,波特率可任意設(shè)置,可實(shí)現(xiàn)收、發(fā)同步進(jìn)行,內(nèi)部FIFO數(shù)據(jù)緩存避免了數(shù)據(jù)流失?;贔PGA的RS232接口設(shè)計(jì)具有良好的應(yīng)用價(jià)值。
參 考 文 獻(xiàn)
[1]趙志軍, 王建英. RS232/CAN智能協(xié)議轉(zhuǎn)換器及其通信網(wǎng)絡(luò)[J]. 中國(guó)鐵道科學(xué), 2007, 28(3):134-139.
[2]吳興中, 歐青立. 一種PC與單片機(jī)多機(jī)RS232串口通信設(shè)計(jì)[J]. 國(guó)外電子測(cè)量技術(shù), 2009, 28(1):74-76.
[3]張雄飛, 方方. Windows平臺(tái)下數(shù)據(jù)采集串口通訊的實(shí)現(xiàn)[J]. 計(jì)算機(jī)測(cè)量與控制, 2001, 9(3):66-68.
[4]戴鵬, 劉劍, 符曉,等. 基于TMS320F2812與LabVIEW的串口通信[J]. 計(jì)算機(jī)工程, 2009, 35(4):94-96.
[5]陳廷俠, 趙紅枝. MAX232在串口通信中的作用分析與測(cè)試[J]. 新鄉(xiāng)學(xué)院學(xué)報(bào), 2009, 26(4):19-21.