基于FPGA的UART設(shè)計(jì)與實(shí)現(xiàn)
通用異步收發(fā)器(Universal Asynchronous Receiver/Transmitter,UART)可以和各種標(biāo)準(zhǔn)串行接口,如RS 232和RS 485等進(jìn)行全雙工異步通信,具有傳輸距離遠(yuǎn)、成本低、可靠性高等優(yōu)點(diǎn)。一般UART由專用芯片如8250,16450來(lái)實(shí)現(xiàn),但專用芯片引腳都較多,內(nèi)含許多輔助功能,在實(shí)際使用時(shí)往往只需要用到UART的基本功能,使用專用芯片會(huì)造成資源浪費(fèi)和成本提高。
一般而言UART和外界通信只需要兩條信號(hào)線RXD和TXD,其中RXD是UART的接收端,TXD是UART的發(fā)送端,接收與發(fā)送是全雙工形式。由于可編程邏輯器件技術(shù)的快速發(fā)展,FPGA的功能日益強(qiáng)大,其開(kāi)發(fā)周期短、可重復(fù)編程的優(yōu)點(diǎn)也越來(lái)越明顯,在FPGA芯片上集成UART功能模塊并和其他模塊組合可以很方便地實(shí)現(xiàn)一個(gè)能與其他設(shè)備進(jìn)行串行通信的片上系統(tǒng)。
1 UART功能設(shè)計(jì)
1.1 UART的工作原理
異步通信時(shí),UART發(fā)送/接收數(shù)據(jù)的傳輸格式如圖1所示,一個(gè)字符單位由開(kāi)始位、數(shù)據(jù)位、停止位組成。本文引用地址:http://m.butianyuan.cn/article/191633.htm
異步通信的一幀傳輸經(jīng)歷以下步驟:
(1)無(wú)傳輸。發(fā)送方連續(xù)發(fā)送信號(hào),處于信息“1”狀態(tài)。
(2)起始傳輸。發(fā)送方在任何時(shí)刻將傳號(hào)變成空號(hào),即“1”跳變到“O”,并持續(xù)1位時(shí)間表明發(fā)送方開(kāi)始傳輸數(shù)據(jù)。而同時(shí),接收方收到空號(hào)后,開(kāi)始與發(fā)送方同步,并期望收到隨后的數(shù)據(jù)。
(3)奇偶傳輸。數(shù)據(jù)傳輸之后是可供選擇的奇偶位發(fā)送或接收。
(4)停止傳輸。最后是發(fā)送或接收的停止位,其狀態(tài)恒為“1”。
發(fā)送或接收一個(gè)完整的字節(jié)信息,首先是一個(gè)作為起始位的邏輯“0”位,接著是8個(gè)數(shù)據(jù)位,然后是停止位邏輯“1”位,數(shù)據(jù)線空閑時(shí)為高或“1”狀態(tài)。起始位和停止位的作用是使接收器能把局部時(shí)鐘與每個(gè)新開(kāi)始接收的字符再同步。異步通信沒(méi)有可參照的時(shí)鐘信號(hào),發(fā)送器可以隨時(shí)發(fā)送數(shù)據(jù),任何時(shí)刻串行數(shù)據(jù)到來(lái)時(shí),接收器必須準(zhǔn)確地發(fā)現(xiàn)起始位下降沿的出現(xiàn)時(shí)間,從而正確采樣數(shù)據(jù)。
設(shè)計(jì)時(shí)可參考由專用芯片實(shí)現(xiàn)的UART的功能并進(jìn)行一定精簡(jiǎn),如可以用FPGA的片內(nèi)RAM替代UART的FIFO,不用單獨(dú)在UART模塊中實(shí)現(xiàn)。設(shè)計(jì)的基本原則是保留最主要的功能,基于FPGA的UART系統(tǒng)由波特率時(shí)鐘發(fā)生器、接收器和發(fā)送器3個(gè)子模塊組成,如圖2所示。
評(píng)論