基于FPGA的UART設計
摘要:UART作為RS232協(xié)議的控制接口得到了廣泛的應用,將UART的功能集成在FPGA芯片中,可使整個(gè)系統更為靈活、緊湊,減小整個(gè)電路的體積,提高系統的可靠性和穩定性。提出了一種基于FPGA的UART的實(shí)現方法,具體描述了發(fā)送、接收等模塊的設計,恰當使用了有限狀態(tài)機,實(shí)現了FPGA片上UART的設計,給出了仿真結果。
關(guān)鍵詞:通用異步收發(fā)器;串口通信;現場(chǎng)可編程邏輯器件;有限狀態(tài)機
通用異步收發(fā)器(Universal Asynchronous Receiver/Transmitter,UART)可以和各種標準串行接口,如RS232和RS485等進(jìn)行全雙工異步通信,具有傳輸距離遠、成本低、可靠性高等優(yōu)點(diǎn)。一般UART由專(zhuān)用芯片來(lái)實(shí)現,但專(zhuān)用芯片引腳都較多,內含許多輔助功能,在實(shí)際使用時(shí)往往只需要用到UART的基本功能,使用專(zhuān)用芯片會(huì )造成資源浪費和成本提高。當我們不需要用到完整的的UART功能和一些輔助功能時(shí),就可以將需要的UART功能集成用FPGA來(lái)實(shí)現,然而,FPGA內部并不擁有CPU控制單元,無(wú)法處理由UART控制器產(chǎn)生的中斷,所以FPGA不能利用現成的UART控制器構成異步串行接口,必須將UART控制器的功能集成到FPGA內部。從而可以大大的減少了體積、簡(jiǎn)化了電路,也提高了系統的靈活性。
1 UART的工作原理
UART是一種串行數據總線(xiàn),用于異步通信,并且雙向通信,可實(shí)現全雙工發(fā)送和接收?;镜腢ART只需要兩條信號線(xiàn)(TXD、RXD)和一條地線(xiàn)就可以完成數據的互相通信,接收和發(fā)送互不干擾,這樣就大大節省了傳輸費用。由于UART是異步通信,所以需要對數據進(jìn)行同步。UA RT發(fā)送/接收數據的傳輸格式如圖1所示,一個(gè)字符單位由開(kāi)始位、數據位、校驗位、停止位組成(其中校驗位可供選)。
發(fā)送或接收一個(gè)完整的字節信息,首先是一個(gè)作為起始位的邏輯“0”位,接著(zhù)是8個(gè)數據位。然后是停止位邏輯“1”位,數據線(xiàn)空閑時(shí)為高或“1”狀態(tài)。在字符的8位數據部分,先發(fā)送數據的最低位,最后發(fā)送最高位。每位持續時(shí)間是固定的,由發(fā)送器本地時(shí)鐘控制,每秒發(fā)送的數據位個(gè)數,即為“波特率”。起始位和停止位起著(zhù)很重要的作用。顯然,它們標志每個(gè)字符的開(kāi)始和結束,但更重要的是他們使接收器能把他的局部時(shí)鐘與每個(gè)新開(kāi)始接收的字符再同步。異步通信沒(méi)有可參照的時(shí)鐘信號,發(fā)送器隨時(shí)都可能發(fā)送數據,任何時(shí)刻串行數據到來(lái)時(shí),接收器必須準確地發(fā)現起始位下降沿的出現時(shí)間,從而正確地采樣緊接著(zhù)的10或者11位(包括開(kāi)始位、數據位和停止位),接收器的時(shí)鐘和發(fā)送器的時(shí)鐘不是同一個(gè),因此,接收器所確定的采樣點(diǎn)的間隔和發(fā)送器所確定的位間隔時(shí)間不同,這點(diǎn)要特別注意。
2 UART功能設計
異步通信的一幀傳輸經(jīng)歷以下步驟:1)空閑狀態(tài)。發(fā)送方連續發(fā)送信號,處于信息“1”狀態(tài)。2)開(kāi)始傳輸。發(fā)送方在任何時(shí)刻將傳號變成空號,即“1”跳變到“0”,并持續1位時(shí)間表明發(fā)送方開(kāi)始傳輸數據。而同時(shí),接收方收到空號后,開(kāi)始與發(fā)送方同步,并期望收到隨后的數據。3)奇偶傳輸。數據傳輸之后是可供選擇的奇偶位發(fā)送或接收。4)停止傳輸。最后是發(fā)送或接收的停止位,其狀態(tài)恒為“1”。
設計的基本原則是保留最主要的功能,基于FPGA的UART系統由波特率時(shí)鐘發(fā)生器、接收器和發(fā)送器3個(gè)子模塊組成,如圖2所示。
評論