基于FPGA的UART控制器的設(shè)計(jì)和實(shí)現(xiàn)_第1頁
基于FPGA的UART控制器的設(shè)計(jì)和實(shí)現(xiàn)_第2頁
基于FPGA的UART控制器的設(shè)計(jì)和實(shí)現(xiàn)_第3頁
基于FPGA的UART控制器的設(shè)計(jì)和實(shí)現(xiàn)_第4頁
基于FPGA的UART控制器的設(shè)計(jì)和實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于FPGA的UART控制器的設(shè)計(jì)和實(shí)現(xiàn)Design and Realization of UART Controller Based on FPGA(江蘇大學(xué)) 鄒杰 楊建寧Zou,Jie Yang,Jianning摘要:文章介紹了一種在現(xiàn)場(chǎng)可編程門陣列(FPGA)上實(shí)現(xiàn)UART的方法。UART的波特率可設(shè)置調(diào)整,工作狀態(tài)可讀取。系統(tǒng)結(jié)構(gòu)進(jìn)行了模塊化分解,使之適應(yīng)自頂向下(Top-Down)的設(shè)計(jì)方法。核心部分采用有限狀態(tài)機(jī)(FSM)實(shí)現(xiàn),使控制邏輯直觀簡(jiǎn)單,大幅度提高了設(shè)計(jì)效率。最后給出功能仿真結(jié)果,驗(yàn)證了整個(gè)設(shè)計(jì)的正確性和可靠性。 關(guān)鍵詞:UART 有限狀態(tài)機(jī) FPGA中圖分類號(hào):TP3

2、32 文獻(xiàn)標(biāo)識(shí)碼:BAbstract:This paper introduces a method to implement UART based on Field Programmable Gate Array(FPGA).Its baud rate can be set and the states can be read.The structure of this system is divided in modularization so that can fit the method Top-Down.The hard core of this system is implement

3、ed with finite state machine(FSM).It makes the logic of control more intuitionistic and more briefness.The efficiency of the design is improved in a wide range.Simulating experiments,present at last to proved the validity and reliability in the whole design.Key Word: UART FSM FPGA引言異步串行通信要求的傳輸線少,可靠性

4、高,傳輸距離遠(yuǎn),被廣泛應(yīng)用于微機(jī)和外設(shè)的數(shù)據(jù)交換。通常都由通用異步收發(fā)器UART(Universal Asynchronous Receiver-Transmitter)來實(shí)現(xiàn)該功能,如IBM PC機(jī)中作為串行接口芯片的National INS 8250。在實(shí)際應(yīng)用中,往往只需要UART的幾個(gè)主要功能,專用的接口芯片會(huì)造成資源浪費(fèi)和成本提高,特別是近來電子設(shè)計(jì)領(lǐng)域中日趨成熟的SOC技術(shù),由于要在單塊或極少數(shù)的幾塊芯片中實(shí)現(xiàn)整個(gè)系統(tǒng)的功能,設(shè)計(jì)者就必須將類似的功能模塊集成到FPGA中。本文提出了一種采用FPGA實(shí)現(xiàn)UART功能的方法,可以有效地解決上述問題。1 功能簡(jiǎn)介該UART控制器所傳輸?shù)囊?/p>

5、幀串行數(shù)據(jù)包括1位起始位,8位數(shù)據(jù)位和1位停止位。傳輸時(shí),低位在前,高位在后。接收端檢測(cè)并確認(rèn)起始位后,接收8位數(shù)據(jù)位。停止位接收完畢后,向CPU發(fā)出中斷信號(hào),同時(shí)將數(shù)據(jù)送到計(jì)算機(jī)的8位數(shù)據(jù)總線上。發(fā)送數(shù)據(jù)時(shí),先由CPU設(shè)置波特率,然后將8位并行數(shù)據(jù)加上起始位和停止位發(fā)送給外設(shè)。停止位發(fā)送完畢后,向CPU發(fā)出中斷信號(hào)。在數(shù)據(jù)發(fā)送和接收過程中,CPU可以加載控制信號(hào)來讀取UART的工作狀態(tài),以便進(jìn)行實(shí)時(shí)處理。2 功能實(shí)現(xiàn)2.1 系統(tǒng)總體結(jié)構(gòu)在大規(guī)模電路的設(shè)計(jì)中,廣泛采用層次化,結(jié)構(gòu)化的設(shè)計(jì)方法。它將一個(gè)完整的硬件設(shè)計(jì)任務(wù)從系統(tǒng)級(jí)開始,劃分為若干個(gè)可操作的模塊,編制出相應(yīng)的模型并進(jìn)行仿真驗(yàn)證,最后

6、在系統(tǒng)級(jí)上進(jìn)行組合。這樣在提高設(shè)計(jì)效率的同時(shí)又提高了設(shè)計(jì)質(zhì)量,是目前復(fù)雜數(shù)字系統(tǒng)實(shí)現(xiàn)的主要手段,也是本文設(shè)計(jì)思想的基礎(chǔ)。系統(tǒng)的結(jié)構(gòu)劃分如圖1所示,其中:clk為系統(tǒng)時(shí)鐘,RESET為全局異步復(fù)位信號(hào),C為控制信號(hào),CS和WR分別為片選和讀寫信號(hào),RXD和TXD分別為串行輸出和輸入,D_IN和D_OUT為并行輸入和輸出,INT_RXD和INT_TXD為接收完成中斷和發(fā)送完成中斷信號(hào)。圖12.2 分頻模塊UART的波特率和有效采樣位置由該模塊確定。實(shí)現(xiàn)原理是對(duì)系統(tǒng)時(shí)鐘clk進(jìn)行分頻,分頻系數(shù)N由CPU設(shè)置。分頻功能由一個(gè)16位計(jì)數(shù)器完成,計(jì)數(shù)值每計(jì)到N/2時(shí),分頻輸出信號(hào)(sample)為高電平,

7、計(jì)數(shù)溢出后變?yōu)榈碗娖?。其頻率為時(shí)鐘頻率的1/N,即為UART的波特率。接收數(shù)據(jù)時(shí),系統(tǒng)時(shí)鐘clk作為采樣信號(hào),即采樣頻率為波特率的N倍。通過串行接口模塊的設(shè)計(jì),可以使有效采樣位置處于數(shù)據(jù)位的中間。由于D_IN是8位數(shù)據(jù)線,故要在外部控制信號(hào)C0和內(nèi)部使能信號(hào)的作用下分2次將分頻系數(shù)寫入計(jì)數(shù)器中。 2.3 CPU控制模塊該模塊對(duì)CPU的控制信號(hào)C進(jìn)行譯碼,產(chǎn)生相應(yīng)的內(nèi)部信號(hào)。(1)中斷清除:清除INT_RXD和INT_TXD上的中斷信號(hào)。(2)發(fā)送使能:?jiǎn)?dòng)TXD端口發(fā)送數(shù)據(jù)。(3)內(nèi)部數(shù)據(jù)選擇,改變D_OUT的輸出為接收到的數(shù)據(jù)或UART的當(dāng)前工作狀態(tài)。(4)分頻使能:允許分頻模塊工作。 2.

8、4 串行接口模塊UART通過該模塊與外設(shè)交互,也是整個(gè)控制器的核心部分。如圖2所示,劃分為4個(gè)子模塊:(1)發(fā)送接收控制模塊,實(shí)現(xiàn)數(shù)據(jù)的串并轉(zhuǎn)換,同時(shí)產(chǎn)生相應(yīng)的狀態(tài)信號(hào)。(2)狀態(tài)寄存器模塊,產(chǎn)生中斷信號(hào)和當(dāng)前工作狀態(tài)信息供CPU讀取。(3)數(shù)據(jù)選擇模塊,改變D_IN上的輸出。(4)數(shù)據(jù)轉(zhuǎn)換模塊,保存串行數(shù)據(jù)到數(shù)據(jù)接收寄存器。圖2發(fā)送接收控制模塊是一個(gè)較復(fù)雜的時(shí)序邏輯電路,設(shè)計(jì)主要集中在控制邏輯上,這非常適合用有限狀態(tài)機(jī)來實(shí)現(xiàn)。由于發(fā)送部分和接收部分的狀態(tài)機(jī)實(shí)現(xiàn)方法類似,在這里僅著重介紹接收部分的實(shí)現(xiàn)方法。圖3是接收部分的狀態(tài)轉(zhuǎn)換圖。圖3這里共定義了8個(gè)工作狀態(tài),采用了更適合FPGA實(shí)現(xiàn)的獨(dú)熱

9、碼(one-hot code)編碼方式。雖然這樣比二進(jìn)制編碼方式(binary-code)和格雷碼編碼方式(gray-code)要多消耗5個(gè)觸發(fā)器,但減少了組合邏輯的復(fù)雜性,通過綜合工具綜合出來的結(jié)果也更加簡(jiǎn)單,有效的提高了電路的運(yùn)行速度和工作穩(wěn)定性,這在觸發(fā)器資源十分豐富的FPGA中,是一種十分有效的設(shè)計(jì)方法。以下是描述狀態(tài)機(jī)編碼方式的Verilog HDL程序。parameter 7:0 / 獨(dú)熱碼編碼方式 ,8個(gè)狀態(tài)采用了8個(gè)觸發(fā)器waiting = 8'b00000001 , check = 8'b00000010 , lock = 8'b00000100 ,r

10、ead_wait = 8'b00001000 ,read_data = 8'b00010000 ,read_stop = 8'b00100000 ,read_stop_done = 8'b01000000 ,finish= 8'b10000000 ;狀態(tài)機(jī)各狀態(tài)和工作過程如下:空閑狀態(tài):系統(tǒng)復(fù)位進(jìn)入此狀態(tài),等待起始位到來。RXD上的一個(gè)電平負(fù)跳變使FSM進(jìn)入起始位檢測(cè)狀態(tài),同時(shí)采樣使能信號(hào)有效,分頻模塊中的計(jì)數(shù)器開始工作。起始位檢測(cè)狀態(tài):RXD上的低電平再保持1個(gè)clk周期,則被認(rèn)為是有效的起始位,sample信號(hào)變高使FSM轉(zhuǎn)移到讀取等待狀態(tài),否則將回

11、到空閑狀態(tài)。讀取等待狀態(tài):準(zhǔn)備接收一個(gè)新的數(shù)據(jù)位。數(shù)據(jù)位讀取狀態(tài):輸出讀取數(shù)據(jù)信號(hào)給數(shù)據(jù)轉(zhuǎn)換模塊,保存1位串行數(shù)據(jù)到數(shù)據(jù)寄存器,并使寄存器指針指向下一位。數(shù)據(jù)位的采樣信號(hào)使用系統(tǒng)時(shí)鐘,由于分頻模塊中計(jì)數(shù)器的初值設(shè)置為1且在起始位檢測(cè)時(shí)就開始計(jì)數(shù),故sample信號(hào)正跳變時(shí)處于數(shù)據(jù)位第3個(gè)時(shí)鐘信號(hào)的上升沿,第4個(gè)時(shí)鐘信號(hào)將作為有效采樣信號(hào),它的位置正處于數(shù)據(jù)位的中間,這樣采集到的數(shù)據(jù)可以避免兩端的邊沿失真,提高了接收的可靠性。之后FSM回到讀取等待狀態(tài),準(zhǔn)備下一位數(shù)據(jù)的接收。停止位讀取狀態(tài):當(dāng)數(shù)據(jù)寄存器滿時(shí),進(jìn)入該狀態(tài)。同樣在中間位置采樣以確定停止位。停止位接收完畢后4個(gè)時(shí)鐘周期,INT_RXD

12、輸出中斷信號(hào)。這樣就完成了一個(gè)數(shù)據(jù)幀的接收。在用Verilog HDL語言實(shí)現(xiàn)狀態(tài)機(jī)時(shí),可以將狀態(tài)變化和邏輯輸出分2部分描述,即采用2個(gè)獨(dú)立的always組合塊。這是因?yàn)镕SM的狀態(tài)變化屬于時(shí)序邏輯,而FSM的輸出屬于組合邏輯,將其分開描述有利于綜合工具優(yōu)化整個(gè)FSM,同時(shí)也有利于發(fā)現(xiàn)問題,方便調(diào)試。上述2個(gè)模塊的實(shí)現(xiàn)也可以不采用有限狀態(tài)機(jī),而是在數(shù)據(jù)發(fā)送寄存器和數(shù)據(jù)接收寄存器的兩端增加適當(dāng)?shù)妮o助寄存器,并置適當(dāng)?shù)某踔担诎l(fā)送和接收過程中,通過判斷輔助寄存器和數(shù)據(jù)寄存器的狀態(tài)組合來確定處于什么工作階段。由于這種方法需要的控制信號(hào)復(fù)雜,設(shè)計(jì)難度大,調(diào)試不方便,所以在大規(guī)模數(shù)字電路設(shè)計(jì)中顯得很不適

13、用。而利用狀態(tài)機(jī)實(shí)現(xiàn)正好克服了這些缺點(diǎn),明顯加快了設(shè)計(jì)流程,是復(fù)雜系統(tǒng)設(shè)計(jì)的重要手段。狀態(tài)寄存器模塊的8位輸出中低4位將UART的工作狀態(tài)提供給CPU讀取,從低到高分別表示正在發(fā)送、正在接收、發(fā)送完成和接收完成。2.5 CPU接口模塊該模塊是UART與CPU相交互的部分,通過該模塊,在CPU的控制信號(hào)C和外部讀寫信號(hào)WR以及片選信號(hào)CS的共同作用下,向UART發(fā)出清除中斷信號(hào),寫使能信號(hào)和開始發(fā)送信號(hào)。同樣也是利用有限狀態(tài)機(jī)來實(shí)現(xiàn)。3 仿真結(jié)果驗(yàn)證過程中使用了Model Technology公司的Modelsim,對(duì)整個(gè)UART控制器進(jìn)行功能仿真。圖4 發(fā)送一個(gè)數(shù)據(jù)幀的功能仿真波形圖5 接收一

14、個(gè)數(shù)據(jù)幀的功能仿真波形通過仿真波形可以看出,設(shè)計(jì)結(jié)果正確地發(fā)送和接收一幀數(shù)據(jù)并產(chǎn)生相應(yīng)的中斷,CPU可以實(shí)時(shí)讀取工作狀態(tài),整個(gè)設(shè)計(jì)的正確性和完整性得到驗(yàn)證,各項(xiàng)功能均達(dá)到預(yù)期的要求,同時(shí)也表明本文的設(shè)計(jì)思想完全可行。結(jié)束語用FPGA實(shí)現(xiàn)UART功能,可以減小系統(tǒng)的面積,降低系統(tǒng)的功耗,提高設(shè)計(jì)的穩(wěn)定性,也充分利用了FPGA的剩余資源,這種硬件軟件化的方法已成為當(dāng)今電子設(shè)計(jì)領(lǐng)域中的主導(dǎo)趨勢(shì)。在很多場(chǎng)合下,該UART控制器可以完全代替專用的IC芯片。該設(shè)計(jì)已下載到ALTERA公司的Cyclone系列器件EP1C6Q240C8中,綜合報(bào)告顯示消耗了195個(gè)LE(Logic Element),在中大規(guī)

15、模的FPGA中,這只是很小的一部分資源。參考文獻(xiàn)1 夏宇聞. Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程M.北京:北京航空航天大學(xué)出版社,20032 Bhasker J. Verilog HDL Synthesis A Practical primerM. London, UK: Star Galaxy; 1998.3 Liakot Ali,Roslina Sidek,Ishak Aris,Alauddin Mohd. Ali,Bambang Sunaryo Suparjo.Design of a micro-UART for SoC applicationJ.In: Computers and ElectricalEngineering 30 (2004) 257268.作者簡(jiǎn)介: 鄒杰,男,1980.11.3,江蘇蘇州人,碩士研究生,控制理論與控制工程專業(yè); 研究方向:數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn);E-mail:cgpersonAuthor

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論