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