加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 二、RS-232 串口通信簡介
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

基于FPGA的UART控制器設(shè)計(VHDL)(中)

02/16 08:26
3122
閱讀需 21 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

今天給大俠帶來基于FPGAUART 控制器設(shè)計(VHDL)(中),由于篇幅較長,分三篇。今天帶來第二篇,中篇,RS-232 串口通信簡介。話不多說,上貨。

導(dǎo)讀

串口的出現(xiàn)是在1980年前后,數(shù)據(jù)傳輸率是115kbps~230kbps。串口出現(xiàn)的初期是為了實現(xiàn)連接計算機外設(shè)的目的,初期串口一般用來連接鼠標(biāo)和外置Modem以及老式攝像頭和寫字板等設(shè)備。串口也可以應(yīng)用于兩臺計算機(或設(shè)備)之間的互聯(lián)及數(shù)據(jù)傳輸。由于串口(COM)不支持熱插拔及傳輸速率較低,部分新主板和大部分便攜電腦已開始取消該接口。串口多用于工控和測量設(shè)備以及部分通信設(shè)備中。

串口是串行接口的簡稱,也稱串行通信接口或串行通訊接口(通常指COM接口),是采用串行通信方式的擴展接口。串行接口(Serial Interface)是指數(shù)據(jù)一位一位地順序傳送。其特點是通信線路簡單,只要一對傳輸線就可以實現(xiàn)雙向通信(可以直接利用電話線作為傳輸線),從而大大降低了成本,特別適用于遠(yuǎn)距離通信,但傳送速度較慢。

通信協(xié)議是指通信雙方的一種約定。約定包括對數(shù)據(jù)格式、同步方式、傳送速度、傳送步驟、檢糾錯方式以及控制字符定義等問題做出統(tǒng)一規(guī)定,通信雙方必須共同遵守。串口通信的兩種最基本的方式為:同步串行通信方式和異步串行通信方式。

同步串行通信是指SPI(Serial Peripheral interface)的縮寫,顧名思義就是串行外圍設(shè)備接口。SPI是一種高速的全雙工通信總線。封裝芯片上總共有四根線,PCB布局布線也簡單,所以現(xiàn)在很多芯片集成了這個協(xié)議。主要用于CPU和各種外圍器件進(jìn)行通信,TRM450是SPI接口。

異步串行通信是指UART(Universal Asynchronous Receiver/Transmitter),通用異步接收/發(fā)送。UART是一個并行輸入成為串行輸出的芯片,通常集成在主板上。UART包含TTL電平的串口和RS232電平的串口。RS232也稱標(biāo)準(zhǔn)串口,也是最常用的一種串行通訊接口。RS-232-C 標(biāo)準(zhǔn)對兩個方面作了規(guī)定,即信號電平標(biāo)準(zhǔn)和控制信號線的定義。RS-232-C 采用負(fù)邏輯規(guī)定邏輯電平,信號電平與通常的TTL電平也不兼容,RS-232-C 將-5V~-15V 規(guī)定為“1”,+5V~+15V 規(guī)定為“0”。

一般情況下外設(shè)不能直接和主機直接相連,它們之間的信息交換主要存在以下問題:

  • 速度不匹配 通常情況下外設(shè)的工作速度會比主機慢許多,而且外設(shè)之間的速度差異也比較大。
  • 數(shù)據(jù)格式不匹配 不同的外設(shè)在進(jìn)行信息存儲和處理時的數(shù)據(jù)單元可能不同,例如最基本的數(shù)據(jù)格式可以分為并行數(shù)據(jù)和串行數(shù)據(jù)。
  • 信息類型不匹配 不同的外設(shè)可能采用不同類型的信號,有些是模擬信號,有些是數(shù)字信號,因此所采用的處理方式也不同。

為了解決外設(shè)和主機之間信息交換的問題,就需要設(shè)計一個信息交換的中間環(huán)節(jié)——接口。本篇將首先對接口技術(shù)進(jìn)行簡要的介紹,然后以接口中最常用的 UART 控制器為例,詳細(xì)介紹用 FPGA 實現(xiàn) UART 控制器的方法。

第二篇內(nèi)容摘要:本篇介紹RS-232 串口通信簡介 ,包括串口通信概述協(xié)議 、RS-232 通信時序和 UART以及串口通信實現(xiàn)方案等相關(guān)內(nèi)容。

二、RS-232 串口通信簡介

2.1 串口通信概述

數(shù)據(jù)通信、計算機網(wǎng)絡(luò)以及分布式工業(yè)控制系統(tǒng)中,經(jīng)常采用串行通信來交換數(shù)據(jù)和信息。1969 年,美國電子工業(yè)協(xié)會(EIA)將 RS-232C(簡稱 RS-232)定為串行通信接口的電氣標(biāo)準(zhǔn),該標(biāo)準(zhǔn)定義了數(shù)據(jù)終端設(shè)備(DTE)和數(shù)據(jù)通信設(shè)備(DCE)間按位串行傳輸的接口信息,合理安排了接口的電氣信號和機械要求,適合于數(shù)據(jù)傳輸速率在 0~20000bit/s 范圍內(nèi)的通信。RS-232 作為一種標(biāo)準(zhǔn)接口,不僅被內(nèi)置于每一臺計算機中,同時也被內(nèi)置于各種外設(shè)中。

RS-232 具有以下幾個優(yōu)點:

  • 使用廣泛,幾乎每一臺 PC 都會有一個或者多個 RS-232 接口;
  • 連接距離可達(dá)到 15m;
  • 實現(xiàn)簡單,RS-232 用于雙向連接,只需要 3 條導(dǎo)線。

除了 RS-232 標(biāo)準(zhǔn),美國電子工業(yè)協(xié)會(EIA)還制定了 RS-422 與 RS-485 標(biāo)準(zhǔn)。RS-422由 RS-232 發(fā)展而來,它是為彌補 RS-232 之不足而提出的。RS-422 定義了一種平衡通信接口,將傳輸速率提高到 10Mbit/s,傳輸距離延長到 4000 英尺(速率低于 100kbit/s 時),并允許在一條平衡總線上連接最多 10 個接收器。

RS-422 是一種單機發(fā)送、多機接收的單向、平衡傳輸規(guī)范,被命名為 TIA/EIA-422-A 標(biāo)準(zhǔn)。為擴展應(yīng)用范圍,EIA 又于 1983 年在 RS-422 基礎(chǔ)上制定了 RS-485 標(biāo)準(zhǔn),增加了多點、雙向通信能力,即允許多個發(fā)送器連接到同一條總線上,同時增加了發(fā)送器的驅(qū)動能力和沖突保護(hù)特性,擴展了總線共模范圍,命名為 TIA/EIA-485-A標(biāo)準(zhǔn)。

由于 EIA 提出的建議標(biāo)準(zhǔn)都是以“RS”作為前綴,所以在通信工業(yè)領(lǐng)域,仍然習(xí)慣將上述標(biāo)準(zhǔn)以 RS 作前綴稱謂。RS-232、RS-422 與 RS-485 的電氣參數(shù)如表 2 所示。

表 2 RS-232、RS-422 與 RS-485 的電氣參數(shù)表

雖然 RS-232、RS-422 與 RS-485 標(biāo)準(zhǔn)對接口的電氣特性做出了規(guī)定,但是沒有規(guī)定連接插件、電纜或協(xié)議,所以在此基礎(chǔ)上用戶可以建立自己的高層通信協(xié)議。RS-232 等協(xié)議在視頻傳輸中被廣泛應(yīng)用,許多廠家都建立了一套高層通信協(xié)議,或公開或廠家獨家使用。如錄像機商家中的 Sony 與松下對錄像機的 RS-422 控制協(xié)議是有差異的,視頻服務(wù)器上的控制協(xié)議則更多了,如 Louth、Odetis 協(xié)議是公開的,而 ProLINK 則是基于 Profile 上的。

目前,RS-232 是 PC 機與通信工業(yè)中應(yīng)用最廣泛的一種串行接口,本篇后兩篇就詳細(xì)介紹一下 RS-232 協(xié)議的內(nèi)容和使用 FPGA 開發(fā) RS-232 接口的方法。

2.2 RS-232 協(xié)議

標(biāo)準(zhǔn)的 RS-232 接口有 25 根信號線,其中有 4 根數(shù)據(jù)線、11 根控制線、3 根定時線和 7根備用線。通常情況下,使用 25 根信號線中的 9 根就可以實現(xiàn) RS-232 通信。

1)DSR 信號線

DSR(Data Set Ready)意思為數(shù)據(jù)裝置就緒,當(dāng)其狀態(tài)為有效時,表明 Modem 處于可以使用的狀態(tài)。

注意:Modem 是 Modulator/DEModulator 的縮寫,中文名稱是調(diào)制解調(diào)器。Modem 是一種在發(fā)送端通過調(diào)制將數(shù)字信號轉(zhuǎn)換為模擬信號,而在接收端通過解調(diào)再將模擬信號轉(zhuǎn)換為數(shù)字信號的設(shè)備。

2)DTR 信號線

DTR(Data Terminal Ready)意思為數(shù)據(jù)終端就緒,當(dāng)其狀態(tài)為有效時,表明數(shù)據(jù)終端可以使用。

3)RTS 信號線

RTS(Request To Send)意思為請求發(fā)送,即當(dāng)終端需要發(fā)送數(shù)據(jù)時,使該信號有效,向Modem 請求發(fā)送。它用于控制 Modem 是否進(jìn)入發(fā)送狀態(tài)。

4)CTS 信號線

CTS(Clear To Send)意思為允許發(fā)送,這個信號是對 RTS 信號的響應(yīng)。當(dāng) Modem 已經(jīng)準(zhǔn)備好接收終端發(fā)送過來的數(shù)據(jù)時,使該信號有效,通知終端開始發(fā)送數(shù)據(jù)。

5)DCD 信號線

DCD(Data Carrier Detection)意思為數(shù)據(jù)載波檢出,當(dāng)此信號為有效時表示 Modem 已經(jīng)接通了通信鏈路,即本地 Modem 收到了通信鏈路另一端的遠(yuǎn)程 Modem 送來的載波信號,終端可以準(zhǔn)備接收數(shù)據(jù)。

6)RI 信號線

RI(Ringing)意思為振鈴指示,當(dāng)本地 Modem 收到交換臺發(fā)送的振鈴呼叫信號時,使該信號有效,通知終端已被呼叫。

7)TxD 信號線

TxD(Transmitted Data)意思是發(fā)送數(shù)據(jù),終端通過此信號線將數(shù)據(jù)發(fā)送給 Modem。

8)RxD 信號線

RxD(Received Data)意思是接收數(shù)據(jù),終端通過此信號線從 Modem 接收數(shù)據(jù)。

9)地線

地線有兩根,分別是信號地 SG(Signal Ground)和保護(hù)地 PE(Protection Ground),信號地是所有信號的參考電平,保護(hù)地用于連接設(shè)備外殼或者地表。

常見的 RS-232 串行口連接器主要有兩種,一種是 25 針的 DB-25,另一種是 9 針的 DB-9,其示意圖如圖 1 所示。

圖 1 RS-232 串行口連接器示意圖

其中 DB-9 主要用于上述的 9 根信號線連接的方法,DB-25 可以連接所有 RS-232 標(biāo)準(zhǔn)定義的信號線。DB-25 也可用像 DB-9 那樣使用,但是它們的針號與信號之間的線連接關(guān)系是不一樣的,如表 3 所示。

表 3 DB-25、DB-9 針號信號線連接對應(yīng)表

最為簡單且常用的 RS-232 連接方法是三線連接法,即地、接收數(shù)據(jù)和發(fā)送數(shù)據(jù)三腳相連。對于上述的 DB-25 連接器和 DB-9 連接器,三線連接法的原則如表 4 所示。

表 4 DB-25、DB-9 三線連接法

在電氣特性方面,標(biāo)準(zhǔn) RS-232 接口有如下規(guī)定:

  • 對于數(shù)據(jù)傳輸線 RxD 和 TxD,邏輯“1”對應(yīng)的電平是-15V~-3V,邏輯“0”對應(yīng)的電平是+3V~+15V。
  • 對于 RTS、CTS、DSR、DTR、DCD 等信號線,信號有效時對應(yīng)信號線上為正電壓+3V~+15V,反之則是負(fù)電壓-15V~-3V。

由于 RS-232 電氣特定規(guī)定的電平不符合通常電路中所使用的 TTL 或者 CMOS 電平,所以在接入電路之前需要對其進(jìn)行轉(zhuǎn)換。RS-232 串口電平的轉(zhuǎn)換一般是使用專門的芯片實現(xiàn)的,其中為最常用的就是美信(MAXIM)公司的 MAX232。

MAX232 可以將串口設(shè)備需要發(fā)送的 TTL/CMOS邏輯電平轉(zhuǎn)換為 RS-232 邏輯電平,同時也可以將要接收的 RS-232 邏輯電平轉(zhuǎn)換為 TTL/CMOS電平,圖 2 所示就是 MAX232 芯片的頂層圖。MAX232 可提供 DIP/SO/TSSOP 3 種封裝,可以滿足不同的設(shè)計需求。

圖 2 MAX232 芯片的頂層圖

MAX232 的典型連接方法如圖 3 所示,其中有 5 個 0.1μ 的去耦電容;11 管腳和 10 管腳是 TTL/CMOS 電平輸入,對應(yīng) 14 管腳和 7 管腳的 RS-232 電平輸出,它們一般接到 RS-232 的RxD 上;12 管腳和 9 管腳是 TTL/CMOS 電平輸出,對應(yīng) 13 管腳和 8 管腳的 RS-232 電平輸入,它們一般接到 RS-232 的 TxD 上。

圖 3 MAX232 典型連接示意圖

2.3 RS-232 通信時序和 UART

在串行通信中,用“波特率”來描述數(shù)據(jù)的傳輸速率。所謂波特率,即每秒鐘傳送的二進(jìn)制位數(shù),其單位為 bit/s(bits per second),它是衡量傳輸串行數(shù)據(jù)速度快慢的重要指標(biāo)。有時也用“位周期”來表示傳輸速率,位周期是波特率的倒數(shù)。國際上規(guī)定了一個標(biāo)準(zhǔn)波特率系列:110bit/s、300bit/s、600bit/s、1200bit/s、1800bit/s、2400bit/s、4800bit/s、9600bit/s、14.4kbit/s、19.2kbit/s、28.8kbit/s、33.6kbit/s、56kbit/s。如 9600bit/s,其意義是每秒傳送 9600 位數(shù)據(jù),包含字符位和其他必須的位,如奇偶校驗位、起始位、停止位。

大多數(shù)串行接口電路的接收波特率和發(fā)送波特率都可以設(shè)置,但接收方的接收波特率必須與發(fā)送方的發(fā)送波特率相同。通信線上所傳輸?shù)淖址麛?shù)據(jù)(代碼)是逐位傳送的,1 個字符由若干位組成,因此每秒鐘所傳輸?shù)淖址麛?shù)(字符速率)和波特率是兩種概念。在串行通信中所說的傳輸速率是指波特率,而不是指字符速率,假如在異步串行通信中,傳送一個字符,包括12 位(其中有一個起始位,8 個數(shù)據(jù)位,2 個停止位),其傳輸速率是 1200bit/s,每秒所能傳送的字符數(shù)是 1200/(1+8+1+2)=100 個。

在串行通信中,除了可以設(shè)置波特率外,其他的如字符數(shù)據(jù)的位數(shù)、奇偶校驗位、停止位也可以被設(shè)置。其中,字符數(shù)據(jù)的位數(shù)可以被設(shè)置為 5~8 位;奇偶校驗位可以去除,也可以設(shè)置為奇校驗或者偶校驗;停止位可以設(shè)置為 1 位、1.5 位或者 2 位。

下面介紹一下串行通信的時序。串行總線在空閑時候保持邏輯“1”狀態(tài)(即串行連接線上的電平為-3V~-15V),當(dāng)需要傳送一個字符時,首先會發(fā)送一個邏輯為“0”的起始位,表示開始發(fā)送數(shù)據(jù);之后,就逐個發(fā)送數(shù)據(jù)位、奇偶校驗位和停止位(邏輯為“1”)。例如,通過RS-232 串行通信發(fā)送一個字符“1”(二進(jìn)制為 01100001),設(shè)置為 8 位數(shù)據(jù)位,1 位奇偶校驗位,1 位停止位,則發(fā)送時序圖如圖 4 所示。

圖 4 RS-232 串行口通信時序圖

對于一個設(shè)備的處理器來說,要接收和發(fā)送串行通信的數(shù)據(jù),還需要一個器件將串行的數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)以便于處理器進(jìn)行處理,這個器件就是 UART。UART(Universal AsynchronousReceiver/Transmitter)全稱是通用異步收發(fā)器,其功能是輔助處理器與串行設(shè)備之間的通信。

作為 RS-232 通信接口的一個重要部分,UART 具有以下功能:

  • 將由計算機內(nèi)部傳送過來的并行數(shù)據(jù)轉(zhuǎn)換為用于輸出的串行數(shù)據(jù)流;
  • 將計算機外部傳遞來的串行數(shù)據(jù)轉(zhuǎn)換為字節(jié),供計算機內(nèi)部使用并行數(shù)據(jù)的器件使用;? 在輸出的串行數(shù)據(jù)流中加入奇偶校驗位,并對從外部接收的數(shù)據(jù)流進(jìn)行奇偶校驗;
  • 在輸出數(shù)據(jù)流中加入啟停標(biāo)記,并從接收數(shù)據(jù)流中刪除啟停標(biāo)記;
  • 提供和處理器之間的通信信號,可以處理處理器和串行通信設(shè)備之間的同步管理問題。

隨著處理器功能越來越強,目前大部分處理器中都集成了 UART,用戶的工作僅僅是根據(jù)需要對其進(jìn)行配置即可。

2.4 串口通信實現(xiàn)方案

實現(xiàn)串口通信主要需要完成兩部分工作:

(1)將串口電平轉(zhuǎn)換為設(shè)備電路板的工作電平,即實現(xiàn) RS-232 電平和 TTL/CMOS 電平的轉(zhuǎn)換;

(2)接收并且校驗串行的數(shù)據(jù),將數(shù)據(jù)變成并行的并提供給處理器處理。

前面已經(jīng)介紹了實現(xiàn) RS-232 電平和 TTL/CMOS 電平轉(zhuǎn)換可以用接口芯片實現(xiàn),實現(xiàn)數(shù)據(jù)的串行到并行轉(zhuǎn)化用的是 UART,它們是實現(xiàn)串行通信必不可少的兩個部分。雖然目前大部分處理器芯片中都集成了 UART,但是一般 FPGA 芯片卻沒有這個特點,所以使用 FPGA 作為處理器可以有兩個選擇,第一個選擇是使用 UART 芯片進(jìn)行串并轉(zhuǎn)換,第二個選擇是在 FPGA 內(nèi)部實現(xiàn) UART 功能。

使用 UART 芯片進(jìn)行串并轉(zhuǎn)換的優(yōu)點是設(shè)計簡單,但是卻會使設(shè)計的成本增加并且增加電路板的面積。選擇在 FPGA 片上實現(xiàn) UART 能夠節(jié)省成本,但是會占用一部分 FPGA的資源,如果有一定富余的 FPGA 資源,這是一個不錯的選擇。本篇下面的內(nèi)容將詳細(xì)介紹使用 FPGA 實現(xiàn) UART 的思路和步驟。

本篇到此結(jié)束,下一篇帶來基于FPGA的 UART 控制器設(shè)計(VHDL)(下),使用 FPGA 實現(xiàn) UART,包括UART 實現(xiàn)原理、UART 工作流程、信號監(jiān)測器模塊的實現(xiàn)、波特率發(fā)生器模塊的實現(xiàn)、移位寄存器模塊的實現(xiàn)、奇偶校驗器模塊的實現(xiàn)、總線選擇器模塊的實現(xiàn)、計數(shù)器模塊的實現(xiàn)、UART 內(nèi)核模塊的實現(xiàn)、UART 頂層模塊的實現(xiàn) 、測試平臺的編寫和仿真等相關(guān)內(nèi)容。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
LFE3-70EA-8FN484C 1 Lattice Semiconductor Corporation Field Programmable Gate Array, 500MHz, 67000-Cell, PBGA484, 23 X 23 MM, LEAD FREE, FPBGA-484

ECAD模型

下載ECAD模型
$73.57 查看
XC6SLX9-2CSG225C 1 AMD Xilinx Field Programmable Gate Array, 715 CLBs, 667MHz, 9152-Cell, CMOS, PBGA225, 13 X 13 MM, 0.80 MM PITCH, LEAD FREE, BGA-225

ECAD模型

下載ECAD模型
$19.67 查看
A3P1000-FGG144I 1 Microsemi FPGA & SoC Field Programmable Gate Array, 1000000 Gates, CMOS, PBGA144, 1 MM PITCH, GREEN, FBGA-144
$133.31 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

任何技術(shù)的學(xué)習(xí)就好比一個江湖,對于每一位俠客都需要不斷的歷練,從初入江湖的小白到歸隱山林的隱世高人,需要不斷的自我感悟自己修煉,讓我們一起仗劍闖FPGA乃至更大的江湖。