基于FPGA的UART接口模塊設(shè)計(jì)
UART(UniversalAnynchronousReceiverTransmitter,通用異步接收發(fā)送器)是廣泛應(yīng)用的串行數(shù)據(jù)傳輸協(xié)議之一,其應(yīng)用范圍遍及計(jì)算機(jī)外設(shè)、工控自動(dòng)化等場(chǎng)合。雖然USB傳輸協(xié)議比UART協(xié)議有更高的性能,但電路復(fù)雜開(kāi)發(fā)難度大,并且大多數(shù)的微處理器只集成了UART,因此UART仍然是目前數(shù)字系統(tǒng)之間進(jìn)行串行通信的主要協(xié)議。
本文引用地址:http://m.butianyuan.cn/article/150190.htm隨著FPGA的廣泛應(yīng)用,經(jīng)常需要FPGA與其他數(shù)字系統(tǒng)進(jìn)行串行通信,專(zhuān)用的UART集成電路如8250,8251等是比較復(fù)雜的,因?yàn)閷?zhuān)用的UART集成電路既要考慮異步的收發(fā)功能,又要兼容RS232接口設(shè)計(jì),在實(shí)際應(yīng)用中,往往只需要用到UART的基本功能,使用專(zhuān)用芯片會(huì)造成資源浪費(fèi)和成本提高??梢詫⑺枰腢ART功能集成到FPGA內(nèi)部,實(shí)現(xiàn)FPGA與其他數(shù)字系統(tǒng)的直接通信,從而簡(jiǎn)化了整個(gè)系統(tǒng)電路,提高了可靠性、穩(wěn)定性和靈活性。
1 UART簡(jiǎn)介
基本的UART通信只需要兩條信號(hào)線(RXD,TXD)就可以完成數(shù)據(jù)的相互通信,接收與發(fā)送是全雙工形式,其中TXD是UART發(fā)送端,RXD是UART接收端。UART基本特點(diǎn)是:在信號(hào)線上有兩種狀態(tài),可分別用邏輯1(高電平)和邏輯0(低電平)來(lái)區(qū)分。在發(fā)送器空閑時(shí),數(shù)據(jù)線應(yīng)保持在邏輯高電平狀態(tài)。發(fā)送器是通過(guò)發(fā)送起始比特而開(kāi)始一個(gè)字符傳送,起始比特使數(shù)據(jù)線處于邏輯0狀態(tài),提示接收器數(shù)據(jù)傳輸即將開(kāi)始。數(shù)據(jù)位一般為8位一個(gè)字節(jié)的數(shù)(也有6位7位的情況),低位(LSB)在前,高位(MSB)在后。校驗(yàn)位一般用來(lái)判斷接收的數(shù)據(jù)位有無(wú)錯(cuò)誤,一般是奇偶校驗(yàn)。停止位在最后,用以標(biāo)志UART一個(gè)字符傳送的結(jié)束,它對(duì)應(yīng)于邏輯1狀態(tài),UART數(shù)據(jù)幀格式如圖1所示。
圖1 UART數(shù)據(jù)幀格式
2 UART功能實(shí)現(xiàn)
UART可以分解為3個(gè)子模塊:波特率發(fā)生器模塊;發(fā)送模塊;接收模塊。UART的功能主要由VHDL硬件描述語(yǔ)言編程,圖2是編譯后生成的圖元SCI,它包括了UART的最主要的部分,即發(fā)送模塊和接收模塊。SCI的外部口線可分為3類(lèi):
一是與數(shù)字系統(tǒng)的接口,包括數(shù)據(jù)DATA[7.0],片選CS,讀寫(xiě)RD、WR,狀態(tài)RDFULL、TDEMPTY.這部分接口完成的功能是將待發(fā)送的數(shù)據(jù)寫(xiě)入SCI或從SCI讀出已接收到的數(shù)據(jù)。
二是串行通信接口2條線RXD、TXD,其中RXD是接收數(shù)據(jù)線、TXD是發(fā)送數(shù)據(jù)線,因此,SCI實(shí)現(xiàn)的是全雙工通信的設(shè)計(jì)。
三是系統(tǒng)控制線RESET、CLK,RESET為模塊復(fù)位輸入,CLK為模塊時(shí)鐘輸入,通信的波特率由CLK來(lái)決定(實(shí)際的波特率是CLK/4)。
圖2 UART的圖元模塊結(jié)構(gòu)
RDFULL、TDEMPTY為兩個(gè)狀態(tài)標(biāo)志位,RDFULL為輸入寄存器滿(mǎn)標(biāo)志,高電平表示已經(jīng)接收到一個(gè)有效數(shù)據(jù)并存儲(chǔ)到輸入數(shù)據(jù)寄存器中,當(dāng)CS、RD有效將數(shù)據(jù)讀出后變?yōu)榈碗娖綗o(wú)效。
TDEMPTY為輸出寄存器空標(biāo)志,高電平表示由CS、WR有效寫(xiě)入到輸出寄存器的數(shù)據(jù)已經(jīng)發(fā)送完畢,可以向輸出寄存器寫(xiě)入另外待發(fā)送的數(shù)據(jù),低電平時(shí)表示數(shù)據(jù)目前正在發(fā)送中。
評(píng)論