利用FPGA實(shí)現(xiàn)外設(shè)通信接口之:利用FPGA實(shí)現(xiàn)RS-232C串行接口
10.2利用FPGA實(shí)現(xiàn)RS-232C串行接口
10.2.1RS-232C接口概述
RS-232C標(biāo)準(zhǔn)最初是為遠(yuǎn)程通信連接數(shù)據(jù)終端設(shè)備DTE(DataTerminalEquipment)與數(shù)據(jù)通信設(shè)備DCE(DataCommunicationEquipment)而制定的。因此這個(gè)標(biāo)準(zhǔn)的制定,并未考慮計(jì)算機(jī)系統(tǒng)的應(yīng)用要求。
本文引用地址:http://www.ex-cimer.com/article/201706/348789.htm目前,RS-232C又廣泛地應(yīng)用于計(jì)算機(jī)與終端或外設(shè)之間的近端連接標(biāo)準(zhǔn)。顯然,這個(gè)標(biāo)準(zhǔn)的有些規(guī)定和計(jì)算機(jī)系統(tǒng)是不一致的,甚至是相矛盾的。
RS-232C標(biāo)準(zhǔn)中所提到的“發(fā)送”和“接收”,都是站在DTE立場(chǎng)上,而不是站在DCE的立場(chǎng)來(lái)定義的。由于在計(jì)算機(jī)系統(tǒng)中,往往是CPU和I/O設(shè)備之間傳送信息,兩者都是DTE,因此雙方都能發(fā)送和接收。
RS-232C標(biāo)準(zhǔn)(協(xié)議)的全稱是EIA-RS-232C標(biāo)準(zhǔn),其中EIA(ElectronicIndustryAssociation)代表美國(guó)電子工業(yè)協(xié)會(huì),RS(Recommendedstandard)代表推薦標(biāo)準(zhǔn),232是標(biāo)識(shí)號(hào),C代表RS232的最新一次修改(1969年)。
10.2.2RS-232C接口的電氣標(biāo)準(zhǔn)
RS-232C采用的不是TTL電平的接口標(biāo)準(zhǔn),而是負(fù)邏輯,即邏輯“1”為−3V~−15V,邏輯“0”為+3V~+15V。
RS-232C對(duì)電器特性、邏輯電平和各種信號(hào)線功能都作了規(guī)定。
在TxD和RxD上:邏輯1(MARK)為3V~−15V,邏輯0(SPACE)為+3~+15V。
在RTS、CTS、DSR、DTR和DCD等控制線上:
信號(hào)有效(接通,ON狀態(tài),正電壓)為+3V~+15V;
信號(hào)無(wú)效(斷開,OFF狀態(tài),負(fù)電壓)為−3V~−15V。
RS-232C是用正負(fù)電壓來(lái)表示邏輯狀態(tài),與TTL以高低電平表示邏輯狀態(tài)的規(guī)定不同。因此,為了能夠同計(jì)算機(jī)接口或終端的TTL器件連接,必須在RS-232C與TTL電路之間進(jìn)行電平和邏輯關(guān)系的變換。
10.2.3RS-232C的通信協(xié)議
所謂“串行通信”是指外設(shè)和計(jì)算機(jī)間使用一根數(shù)據(jù)信號(hào)線(另外需要地線,可能還需要控制線),數(shù)據(jù)在一根數(shù)據(jù)信號(hào)線上一位一位地進(jìn)行傳輸,每一位數(shù)據(jù)都占據(jù)一個(gè)固定的時(shí)間長(zhǎng)度,如圖10.1所示。
圖10.1RS-232C接口的數(shù)據(jù)通信方式
這種通信方式使用的數(shù)據(jù)線少,在遠(yuǎn)距離通信中可以節(jié)約通信成本,當(dāng)然,其傳輸速度比并行傳輸慢。
由于FPGA與接口之間按并行方式傳輸,接口與外設(shè)之間按串行方式傳輸,因此,在串行接口中,必須要有“接收移位寄存器”(串→并)和“發(fā)送移位寄存器”(并→串)。典型的串行接口的結(jié)構(gòu)如圖10.2所示。
圖10.2串行接口模塊的結(jié)構(gòu)示意圖
在數(shù)據(jù)輸入過(guò)程中,數(shù)據(jù)一位一位地從外設(shè)進(jìn)入接口的“接收移位寄存器”,當(dāng)“接收移位寄存器”中已接收完1個(gè)字符的各位后,數(shù)據(jù)就從“接收移位寄存器”進(jìn)入“數(shù)據(jù)輸入寄存器”。
FPGA從“數(shù)據(jù)輸入寄存器”中讀取接收到的字符,并行讀取,即D7~D0同時(shí)被讀至累加器中;“接收移位寄存器”的移位速度由“接收時(shí)鐘”確定。
在數(shù)據(jù)輸出過(guò)程中,F(xiàn)PGA把要輸出的字符(并行地)送入“數(shù)據(jù)輸出寄存器”,“數(shù)據(jù)輸出寄存器”的內(nèi)容傳輸?shù)?ldquo;發(fā)送移位寄存器”,然后由“發(fā)送移位寄存器”移位,把數(shù)據(jù)一位一位地送到外設(shè)。“發(fā)送移位寄存器”的移位速度由“發(fā)送時(shí)鐘”確定。
接口中的“控制寄存器”用來(lái)容納FPGA送給此接口的各種控制信息,這些控制信息決定接口的工作方式。
能夠完成上述串并轉(zhuǎn)換功能的電路,通常稱為“通用異步收發(fā)器”(UART:UniversalAsynchronousReceiverandTransmitter),包括:雙緩存發(fā)送數(shù)據(jù)寄存器、并行轉(zhuǎn)串行裝置、雙緩存輸入數(shù)據(jù)寄存器、串行轉(zhuǎn)并行裝置。
RS232通信協(xié)議基本結(jié)構(gòu)如圖10.3所示,起始位低,停止位高。波特率范圍是300~115200bit/s;8位數(shù)據(jù)位;一位或兩位停止位;奇校驗(yàn)、偶校驗(yàn)或無(wú)校驗(yàn)位。
圖10.3RS232通信協(xié)議基本結(jié)構(gòu)
10.2.4RS-232C接口的典型應(yīng)用
RS-232C不僅可以用來(lái)實(shí)現(xiàn)FPGA系統(tǒng)與PC之間的低速率數(shù)據(jù)傳遞,而且可以廣泛應(yīng)用到工業(yè)控制和自動(dòng)化儀器儀表領(lǐng)域。RS-485和RS-422等標(biāo)準(zhǔn)與RS-232C標(biāo)準(zhǔn)一樣,協(xié)議部分也采用了UART協(xié)議,因此FPGA的實(shí)現(xiàn)邏輯是相同的,只是接口電平不同。
在FPGA上,可以實(shí)現(xiàn)多個(gè)UART單元。也就是說(shuō),單片F(xiàn)PGA可以支持多個(gè)RS-232C接口,比較適合需要多個(gè)串口的場(chǎng)合。傳統(tǒng)的單片機(jī)(MCU)或者ARM處理器一般只能支持2~3個(gè)UART接口,在這樣場(chǎng)合就需要外圍芯片來(lái)擴(kuò)展UART。
評(píng)論