




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、編號 基于FPGA的UART模塊設計與實現(xiàn)Design and Realization of UART based on FPGA學 生 姓 名周大勇專 業(yè)控制科學與工程學 號S120400525指 導 教 師楊曉慧學 院電子信息工程學院二一三年六月 摘 要UART因其可靠性高,傳輸距離遠,線路簡單,同時UART作為RS232協(xié)議的控制接口,從而成為比較廣泛的串行數(shù)據通信電路,而現(xiàn)在大部分集成電路通信用的UART芯片,存在成本高,電路復雜,移植性較差等缺點,本文提出了一種將UART的功能集成在FPGA芯片中,可使整個系統(tǒng)更為靈活、緊湊,減小整個電路的體積,提高系統(tǒng)的可靠性和穩(wěn)定性。本模塊功能全
2、部基于verilogHDL硬件描述語言。關鍵詞:FPGA, UART ,verilogHDL ,RS232 ABSTRACTUART, because of its high reliability, long transmission distance and the simple line, moreover mainly used in communication between device with RS232 interface. Thus it is becoming more extensive serial data communication circuit. But no
3、w most of the integrated UART chips used in communications, have faults of high cost and poor portability. The circuit of the chip is complex. This paper presents a method that UART function will be integrated in FPGA chip, It can makesystem more compact, flexible, reliable and stable. All functions
4、 of module are based on verilogHDL hardware description language.Keywords: FPGA, UART, verilogHDL, RS232目 錄摘 要IABSTRACTII目 錄II第一章 緒 論2第二章 UART 簡介2第三章UART功能設計23.1 波特率發(fā)生模塊23.2 波特率接收模塊23.3 UART發(fā)送模塊2第四章 頂層電路及實驗數(shù)據2第五章 結 論2致 謝2參考文獻2第一章 緒 論通用異步收發(fā)器(universal asynchronous receiver transmitter, UART)盡管自20世紀70
5、年代就已出現(xiàn),但因其簡單可靠,目前仍是一種使用廣泛的串行通信接口。各種微處理器,不論是單片機,還是DSP、ARM,UART都是基本外圍模塊。一般UART由專用芯片來實現(xiàn),但專用芯片引腳都較多,內含許多輔助功能,在實際使用時往往只需要用到UART的基本功能,使用專用芯片會造成資源浪費和成本提高。本文提出一種基于FPGA的UART模塊設,本文設計的UART符合RS232串行通信標準。當我們不需要用到完整的的UART功能和一些輔助功能時,就可以將需要的UART功能集成用FPGA來實現(xiàn),然而,F(xiàn)PGA內部并不擁有CPU控制單元,無法處理由UART控制器產生的中斷,所以FPGA不能利用現(xiàn)成的UART控制
6、器構成異步串行接口,必須將UART控制器的功能集成到FPGA內部。從而可以大大的減少了體積、簡化了電路,也提高了系統(tǒng)的靈活性。第二章 UART 簡介UART是廣泛使用的串行數(shù)據傳輸協(xié)議2?;镜腢ART通信只需要2根信號線(RXD、TXD)就可以完成數(shù)據的相互通信,接收與發(fā)送都是全雙工形式。RXD是UART接收端,為輸入;TXD為UART發(fā)送端,為輸出。UART的基本特點是在其信號線上共有2種狀態(tài),可分別用邏輯1(高電平)和邏輯0(低電平)來區(qū)分。在發(fā)送器空閑時,數(shù)據線保持在邏輯高電平狀態(tài)。當發(fā)送器要發(fā)送字符時,起始位使數(shù)據線處于邏輯0狀態(tài),提示接收器數(shù)據傳輸即將開始。波特率和數(shù)據幀格式是UA
7、RT通信中的2個重要指標,波特率表示每秒鐘傳輸二進制數(shù)據的位數(shù),表征了數(shù)據傳輸?shù)乃俾?。國際上規(guī)定了一系列標準的波特率,如9600 b/s、19200 b/s、115200 b/s、等。數(shù)據幀格式定義了所發(fā)數(shù)據每位的意義,UART的幀格式如圖1所示。一般情況每一數(shù)據幀,依次由起始位(位)、數(shù)據位(位),奇偶校驗位(可選的位)以及停止位(位)組成。其中數(shù)據位部分是從最低位先開始傳送的;奇偶校驗位是對幀數(shù)據中的數(shù)據部分和校驗位計算,使的個數(shù)滿足奇數(shù)個或偶數(shù)個。當空閑時,收發(fā)引腳與均是高電平。一旦需要發(fā)送數(shù)據,則首先向引腳輸出低電平作為起始位,表示幀數(shù)據的開始。而在接收數(shù)據時,檢測到起始位將啟動一次數(shù)
8、據接收流程。本設計為了簡化電路設計,減少電路面積,這里省略了UART系統(tǒng)中的奇偶檢驗模塊。 圖1 UART的幀格式第三章UART功能設計 計算機與FPGA之間進行通信!是通過計算機的串行接口實現(xiàn)的。為了實現(xiàn)RS232接口通信,系統(tǒng)整體結構如圖2所示。RS232連接方式采用了9芯的連接座與計算機進行連接,F(xiàn)PGA與RS232連接座之間采用電平轉換芯片MAX232以實現(xiàn)TTL/COMS電平之間的轉換FPGA實現(xiàn)UART的核心功能。UART電路由波特率發(fā)生器、發(fā)送模塊和接收模塊3部分組成。波特率發(fā)生器為發(fā)送模塊和接收模塊提供時鐘信號,以實現(xiàn)數(shù)據的異步可靠傳輸。RXD和TXD分別是接收模塊數(shù)據線和發(fā)送
9、模塊數(shù)據線。本方案設計的UART數(shù)據格式為數(shù)據位為8位,波特率可選,不設奇偶校驗位,1位起始位,1位停止位。異步通信的過程如下:計算機產生發(fā)送串行數(shù)據!由RS232連接座的TXD端輸入,經過MAX232進行電平轉換由FPGA串口接收模塊的RXD端進入,進行串并轉換得到8位位寬數(shù)據總線,該數(shù)據由FPGA的其他模塊進行處理;FPGA產生發(fā)送8位并行數(shù)據,數(shù)據由8位數(shù)據線進入FPGA串口發(fā)送模塊,進行并串轉換后由FPGA串口發(fā)送模塊的TXD輸出到MAX232的T1IN管腳,經過MAX232電平轉換由RS232連接座的RXD端輸出給計算。 圖2 UART整體結構3.1 波特率發(fā)生模塊波特率發(fā)生器實際上
10、就是一個簡單的分頻器,波特率發(fā)生器的功能是產生和 RS- 232 通信所采用的波特率同步的時鐘,這樣才能按照 RS- 232 串行通信的時序要求進行數(shù)據接收或發(fā)送。實現(xiàn)波特率時鐘的基本思路就是設計一個計數(shù)器,該計數(shù)器工作在速度很高的系統(tǒng)時鐘下,當計數(shù)到某數(shù)值時將輸出置為高電平,再計數(shù)一定數(shù)值后將輸出置為低電平,如此反復就能得到所需的波特率時。本設計采用系統(tǒng)時鐘頻率50Mhz,目的是為了在接收時進行精確的采樣,以提取異步的串行數(shù)據。本設計波特率選擇的是115200b/s,既每秒傳輸115200bit數(shù)據。為實現(xiàn)此波特率,應計數(shù)為50M/115200=434個數(shù)。為精確采樣,防止上升沿或下降沿出現(xiàn)
11、斜坡現(xiàn)象。本設計選擇在就數(shù)值中間采樣,既采樣點為216。波特率發(fā)生模塊和時序仿真波形如圖3和圖4所示。圖3 波特率發(fā)生模塊圖4 波特率時序仿真波形使用verilogHDL 硬件語言描述波特率發(fā)生器的完整代碼如下:module bps_generate(clk,clr,bps,bps_start);output bps;input clk,clr;input bps_start;parameter baud_115200=13'd433;parameter baud_115200_h=13'd216;reg 12:0 cnt;always (posedge clk or nege
12、dge clr)if(!clr) cnt<=13'b0;else if(cnt=baud_115200)|!bps_start) cnt<=13'b0;else cnt<=cnt+1'b1;reg bps_r; always (posedge clk or negedge clr)if(!clr) bps_r<=1'b0;else if(cnt=baud_115200_h&&bps_start) bps_r<=1'b1; else bps_r<=1'b0;assign bps=bps_r;end
13、module3.2 波特率接收模塊接收模塊是整個UART的設計的重點,其主要功能是檢測數(shù)據幀的起始位,然后對接收的數(shù)據進行串行到并行的轉換,并將接收好的數(shù)據儲存在寄存器內等待機處理接收器的接受時鐘與每個接收字符同步是接收功能實現(xiàn)的關鍵,但是串行數(shù)據幀與數(shù)據接收時鐘是異步的,所以必須有效地控制采集通信線路上的電平信號的時機,以保證異步通信的雙方準確無誤地交換信息。UART接受模塊和時序仿真波形如圖5和圖6所示。圖5 UART接受模塊圖6 UART接收模塊時序仿真波形接收模塊時序仿真波形如圖6所示,測試的串行發(fā)送數(shù)據為“0111011101”,接收模塊輸出數(shù)據為0x77,其中1位開始位,8位數(shù)據,
14、1位停止位。此時產生接收完標志信號rec滿足傳輸數(shù)據幀格式,滿足發(fā)送數(shù)據幀格式。使用verilogHDL 硬件語言描述UART接收模塊的完整代碼如下:module uart_recive(clk,clr,bps,bps_start,RXD,parallel_out,indicate_rec);input clk,clr;input RXD; input bps; output bps_start;output indicate_rec; output 7:0 parallel_out;wire negedge_RXD;reg rxd1,rxd2,rxd3,rxd4;always(posedge
15、 clk or negedge clr)beginif(!clr) beginrxd1<=1'b1;rxd2<=1'b1;rxd3<=1'b1;rxd4<=1'b1;endelse beginrxd1<=RXD;rxd2<=rxd1;rxd3<=rxd2;rxd4<=rxd3;endendassign negedge_RXD = rxd4&rxd3&rxd2&rxd1; reg bps_start_r;reg indicate_rec; reg3:0 num;always(posedge c
16、lk or negedge clr)if(!clr) beginbps_start_r <= 1'bz;indicate_rec<= 1'b0;endelse if(negedge_RXD) begin/接收到串口接收線rs232_rx的下降沿標志信號bps_start_r <= 1'b1;/啟動串口準備數(shù)據接收indicate_rec <= 1'b1;/接收數(shù)據中斷信號使能endelse if(num=4'd10) begin/接收完有用數(shù)據信息bps_start_r <= 1'b0;/數(shù)據接收完畢,釋放波特率啟動
17、信號indicate_rec <= 1'b0;/接收數(shù)據中斷信號關閉endassign bps_start = bps_start_r;reg7:0 rx_temp_data;reg7:0 parallel_temp;always (posedge clk or negedge clr) beginif(!clr) beginrx_temp_data <= 8'd0;num <= 4'd0;parallel_temp <= 8'd0;endelse if(indicate_rec) beginif(bps) beginnum<=nu
18、m+1'b1;case(num)4'd1:rx_temp_data0=RXD;4'd2:rx_temp_data1=RXD;4'd3:rx_temp_data2=RXD;4'd4:rx_temp_data3=RXD;4'd5:rx_temp_data4=RXD;4'd6:rx_temp_data5=RXD;4'd7:rx_temp_data6=RXD;4'd8:rx_temp_data7=RXD;default:;endcaseendelse if(num=4'd10) beginnum<=4'b0;
19、parallel_temp <= rx_temp_data;endendendassign parallel_out=parallel_temp;endmodule3.3 UART發(fā)送模塊發(fā)送模塊主要實現(xiàn)對并行數(shù)據的并串轉換,并把串行數(shù)據按照既定數(shù)據幀格式進行輸出。該數(shù)據幀格式遵循1位起始位、8位數(shù)據位和1位停止位的固定格式。UART發(fā)送模塊和時序仿真波形如圖7和圖8所示。圖7 UART發(fā)送模塊圖8 UART發(fā)送模塊時序仿真波形發(fā)送模塊時序仿真波形如圖8所示,測試的并行發(fā)送數(shù)據為“0111 0111”,發(fā)送模塊輸出數(shù)據為0111011101,其中1位開始位,8位數(shù)據,1位停止位。滿足發(fā)送
20、數(shù)據幀格式。使用verilogHDL 硬件語言描述UART發(fā)送模塊的完整代碼如下:module uart_send(clk,clr,bps,bps_start,indicate,parallel_in,TXD);output bps_start,TXD;input clk,clr,bps,indicate;input 7:0 parallel_in;reg indicate1,indicate2,indicate3;wire indicate_s;always(posedge clk or negedge clr)beginif(!clr) beginindicate1<=1'b
21、0;indicate2<=1'b0;indicate3<=1'b0;endelse beginindicate1<=indicate;indicate2<=indicate1;indicate3<=indicate2;end endassign indicate_s=indicate2&indicate3; reg indicate_send_r;reg bps_start_r;reg 7:0 temp_data;reg 3:0 counter;always(posedge clk or negedge clr)beginif(!clr)
22、beginindicate_send_r<=1'b0;temp_data<=8'b0;bps_start_r<=1'bz;endelse if(indicate_s) begin bps_start_r<=1'b1; temp_data<=parallel_in; indicate_send_r<=1'b1; endelse if(counter=4'd10) begin bps_start_r<=1'b0; indicate_send_r<=1'b0; endendassign b
23、ps_start=bps_start_r;reg TXD_r;always(posedge clk or negedge clr)beginif(!clr) begin TXD_r<=1'b1; counter<=4'b0; endelse if(indicate_send_r) begin if(bps) begin counter<=counter+1'b1; case(counter) 4'd0:TXD_r=1'b0; 4'd1:TXD_r=temp_data0; 4'd2:TXD_r=temp_data1; 4'd3:TXD_r=temp_data2; 4'd4:TXD_r=temp_data3; 4'd5:TXD_r=temp_data
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廠家代理創(chuàng)業(yè)合同范本
- 內外架合同范本
- 借支合同范本
- 北京兼職合同范本
- 小學數(shù)學探究性作業(yè)設計的策略
- 生活垃圾焚燒污染控制標準(GB18485-2001)
- 勞務合同范本工廠
- 暗物質數(shù)據的競品分析隱喻?
- 賣房定金合同范本標題
- 青少年籃球教學中的分層合作教學法應用
- 紅樓夢英文版(楊憲益譯)
- 綜合性學習:語文課程中的跨學科學習以五年級下冊第三單元為例
- 初三開學第一課家長會優(yōu)秀課件兩篇
- 馬工程教材《公共財政概論》PPT-第十四章 國際財政
- AP微積分課件全版(無法編輯)
- 獅子王1中英文臺詞
- 學習空間大地測量應具備的基礎知識
- 注冊安全工程師安全生產技術培訓講義課件
- 美發(fā)店承包合同范本(2篇)
- 2023年蘇州健雄職業(yè)技術學院單招考試面試題庫及答案解析
- 《大學俄語》教學大綱
評論
0/150
提交評論