




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、編號 基于FPGA的UART模塊設(shè)計與實現(xiàn)Design and Realization of UART based on FPGA學(xué) 生 姓 名周大勇專 業(yè)控制科學(xué)與工程學(xué) 號S120400525指 導(dǎo) 教 師楊曉慧學(xué) 院電子信息工程學(xué)院二一三年六月 摘 要UART因其可靠性高,傳輸距離遠(yuǎn),線路簡單,同時UART作為RS232協(xié)議的控制接口,從而成為比較廣泛的串行數(shù)據(jù)通信電路,而現(xiàn)在大部分集成電路通信用的UART芯片,存在成本高,電路復(fù)雜,移植性較差等缺點,本文提出了一種將UART的功能集成在FPGA芯片中,可使整個系統(tǒng)更為靈活、緊湊,減小整個電路的體積,提高系統(tǒng)的可靠性和穩(wěn)定性。本模塊功能全
2、部基于verilogHDL硬件描述語言。關(guān)鍵詞: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功能設(shè)計23.1 波特率發(fā)生模塊23.2 波特率接收模塊23.3 UART發(fā)送模塊2第四章 頂層電路及實驗數(shù)據(jù)2第五章 結(jié) 論2致 謝2參考文獻(xiàn)2第一章 緒 論通用異步收發(fā)器(universal asynchronous receiver transmitter, UART)盡管自20世紀(jì)70
5、年代就已出現(xiàn),但因其簡單可靠,目前仍是一種使用廣泛的串行通信接口。各種微處理器,不論是單片機(jī),還是DSP、ARM,UART都是基本外圍模塊。一般UART由專用芯片來實現(xiàn),但專用芯片引腳都較多,內(nèi)含許多輔助功能,在實際使用時往往只需要用到UART的基本功能,使用專用芯片會造成資源浪費(fèi)和成本提高。本文提出一種基于FPGA的UART模塊設(shè),本文設(shè)計的UART符合RS232串行通信標(biāo)準(zhǔn)。當(dāng)我們不需要用到完整的的UART功能和一些輔助功能時,就可以將需要的UART功能集成用FPGA來實現(xiàn),然而,F(xiàn)PGA內(nèi)部并不擁有CPU控制單元,無法處理由UART控制器產(chǎn)生的中斷,所以FPGA不能利用現(xiàn)成的UART控制
6、器構(gòu)成異步串行接口,必須將UART控制器的功能集成到FPGA內(nèi)部。從而可以大大的減少了體積、簡化了電路,也提高了系統(tǒng)的靈活性。第二章 UART 簡介UART是廣泛使用的串行數(shù)據(jù)傳輸協(xié)議2?;镜腢ART通信只需要2根信號線(RXD、TXD)就可以完成數(shù)據(jù)的相互通信,接收與發(fā)送都是全雙工形式。RXD是UART接收端,為輸入;TXD為UART發(fā)送端,為輸出。UART的基本特點是在其信號線上共有2種狀態(tài),可分別用邏輯1(高電平)和邏輯0(低電平)來區(qū)分。在發(fā)送器空閑時,數(shù)據(jù)線保持在邏輯高電平狀態(tài)。當(dāng)發(fā)送器要發(fā)送字符時,起始位使數(shù)據(jù)線處于邏輯0狀態(tài),提示接收器數(shù)據(jù)傳輸即將開始。波特率和數(shù)據(jù)幀格式是UA
7、RT通信中的2個重要指標(biāo),波特率表示每秒鐘傳輸二進(jìn)制數(shù)據(jù)的位數(shù),表征了數(shù)據(jù)傳輸?shù)乃俾?。國際上規(guī)定了一系列標(biāo)準(zhǔn)的波特率,如9600 b/s、19200 b/s、115200 b/s、等。數(shù)據(jù)幀格式定義了所發(fā)數(shù)據(jù)每位的意義,UART的幀格式如圖1所示。一般情況每一數(shù)據(jù)幀,依次由起始位(位)、數(shù)據(jù)位(位),奇偶校驗位(可選的位)以及停止位(位)組成。其中數(shù)據(jù)位部分是從最低位先開始傳送的;奇偶校驗位是對幀數(shù)據(jù)中的數(shù)據(jù)部分和校驗位計算,使的個數(shù)滿足奇數(shù)個或偶數(shù)個。當(dāng)空閑時,收發(fā)引腳與均是高電平。一旦需要發(fā)送數(shù)據(jù),則首先向引腳輸出低電平作為起始位,表示幀數(shù)據(jù)的開始。而在接收數(shù)據(jù)時,檢測到起始位將啟動一次數(shù)
8、據(jù)接收流程。本設(shè)計為了簡化電路設(shè)計,減少電路面積,這里省略了UART系統(tǒng)中的奇偶檢驗?zāi)K。 圖1 UART的幀格式第三章UART功能設(shè)計 計算機(jī)與FPGA之間進(jìn)行通信!是通過計算機(jī)的串行接口實現(xiàn)的。為了實現(xiàn)RS232接口通信,系統(tǒng)整體結(jié)構(gòu)如圖2所示。RS232連接方式采用了9芯的連接座與計算機(jī)進(jìn)行連接,F(xiàn)PGA與RS232連接座之間采用電平轉(zhuǎn)換芯片MAX232以實現(xiàn)TTL/COMS電平之間的轉(zhuǎn)換FPGA實現(xiàn)UART的核心功能。UART電路由波特率發(fā)生器、發(fā)送模塊和接收模塊3部分組成。波特率發(fā)生器為發(fā)送模塊和接收模塊提供時鐘信號,以實現(xiàn)數(shù)據(jù)的異步可靠傳輸。RXD和TXD分別是接收模塊數(shù)據(jù)線和發(fā)送
9、模塊數(shù)據(jù)線。本方案設(shè)計的UART數(shù)據(jù)格式為數(shù)據(jù)位為8位,波特率可選,不設(shè)奇偶校驗位,1位起始位,1位停止位。異步通信的過程如下:計算機(jī)產(chǎn)生發(fā)送串行數(shù)據(jù)!由RS232連接座的TXD端輸入,經(jīng)過MAX232進(jìn)行電平轉(zhuǎn)換由FPGA串口接收模塊的RXD端進(jìn)入,進(jìn)行串并轉(zhuǎn)換得到8位位寬數(shù)據(jù)總線,該數(shù)據(jù)由FPGA的其他模塊進(jìn)行處理;FPGA產(chǎn)生發(fā)送8位并行數(shù)據(jù),數(shù)據(jù)由8位數(shù)據(jù)線進(jìn)入FPGA串口發(fā)送模塊,進(jìn)行并串轉(zhuǎn)換后由FPGA串口發(fā)送模塊的TXD輸出到MAX232的T1IN管腳,經(jīng)過MAX232電平轉(zhuǎn)換由RS232連接座的RXD端輸出給計算。 圖2 UART整體結(jié)構(gòu)3.1 波特率發(fā)生模塊波特率發(fā)生器實際上
10、就是一個簡單的分頻器,波特率發(fā)生器的功能是產(chǎn)生和 RS- 232 通信所采用的波特率同步的時鐘,這樣才能按照 RS- 232 串行通信的時序要求進(jìn)行數(shù)據(jù)接收或發(fā)送。實現(xiàn)波特率時鐘的基本思路就是設(shè)計一個計數(shù)器,該計數(shù)器工作在速度很高的系統(tǒng)時鐘下,當(dāng)計數(shù)到某數(shù)值時將輸出置為高電平,再計數(shù)一定數(shù)值后將輸出置為低電平,如此反復(fù)就能得到所需的波特率時。本設(shè)計采用系統(tǒng)時鐘頻率50Mhz,目的是為了在接收時進(jìn)行精確的采樣,以提取異步的串行數(shù)據(jù)。本設(shè)計波特率選擇的是115200b/s,既每秒傳輸115200bit數(shù)據(jù)。為實現(xiàn)此波特率,應(yīng)計數(shù)為50M/115200=434個數(shù)。為精確采樣,防止上升沿或下降沿出現(xiàn)
11、斜坡現(xiàn)象。本設(shè)計選擇在就數(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ù)據(jù)幀的起始位,然后對接收的數(shù)據(jù)進(jìn)行串行到并行的轉(zhuǎn)換,并將接收好的數(shù)據(jù)儲存在寄存器內(nèi)等待機(jī)處理接收器的接受時鐘與每個接收字符同步是接收功能實現(xiàn)的關(guān)鍵,但是串行數(shù)據(jù)幀與數(shù)據(jù)接收時鐘是異步的,所以必須有效地控制采集通信線路上的電平信號的時機(jī),以保證異步通信的雙方準(zhǔn)確無誤地交換信息。UART接受模塊和時序仿真波形如圖5和圖6所示。圖5 UART接受模塊圖6 UART接收模塊時序仿真波形接收模塊時序仿真波形如圖6所示,測試的串行發(fā)送數(shù)據(jù)為“0111011101”,接收模塊輸出數(shù)據(jù)為0x77,其中1位開始位,8位數(shù)據(jù),
14、1位停止位。此時產(chǎn)生接收完標(biāo)志信號rec滿足傳輸數(shù)據(jù)幀格式,滿足發(fā)送數(shù)據(jù)幀格式。使用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的下降沿標(biāo)志信號bps_start_r <= 1'b1;/啟動串口準(zhǔn)備數(shù)據(jù)接收indicate_rec <= 1'b1;/接收數(shù)據(jù)中斷信號使能endelse if(num=4'd10) begin/接收完有用數(shù)據(jù)信息bps_start_r <= 1'b0;/數(shù)據(jù)接收完畢,釋放波特率啟動
17、信號indicate_rec <= 1'b0;/接收數(shù)據(jù)中斷信號關(guān)閉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ù)據(jù)的并串轉(zhuǎn)換,并把串行數(shù)據(jù)按照既定數(shù)據(jù)幀格式進(jìn)行輸出。該數(shù)據(jù)幀格式遵循1位起始位、8位數(shù)據(jù)位和1位停止位的固定格式。UART發(fā)送模塊和時序仿真波形如圖7和圖8所示。圖7 UART發(fā)送模塊圖8 UART發(fā)送模塊時序仿真波形發(fā)送模塊時序仿真波形如圖8所示,測試的并行發(fā)送數(shù)據(jù)為“0111 0111”,發(fā)送模塊輸出數(shù)據(jù)為0111011101,其中1位開始位,8位數(shù)據(jù),1位停止位。滿足發(fā)送
20、數(shù)據(jù)幀格式。使用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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 美食廣場整體承包經(jīng)營合同范本
- 中醫(yī)護(hù)理三因制宜
- 餐飲業(yè)股權(quán)投資合作與風(fēng)險控制合同
- 商務(wù)代駕服務(wù)委托合同
- 鐵路快運(yùn)代理服務(wù)合作協(xié)議書
- 腸脹氣病人的護(hù)理
- 垃圾處理設(shè)施安全責(zé)任承包管理合同
- 腫瘤患者出院健康指導(dǎo)
- 餐飲品牌商標(biāo)使用權(quán)及加盟管理合同
- 餐飲企業(yè)加盟店經(jīng)營數(shù)據(jù)保密協(xié)議
- 信息用戶管理制度
- 2025年新高考1卷(新課標(biāo)Ⅰ)數(shù)學(xué)試卷
- 河南信息產(chǎn)業(yè)投資有限公司招聘考試真題2024
- 離婚協(xié)議書正規(guī)打印電子版(2025年版)
- 石家莊市國企招聘考試真題題庫2024版
- 《社會主義核心價值觀》優(yōu)秀課件
- 初中生物會考模擬試題
- (完整版)標(biāo)書密封條格式word
- 輕金屬冶金學(xué)教學(xué)課件匯總完整版電子教案全書整套課件幻燈片(最新)
- 加強(qiáng)社區(qū)兩委換屆監(jiān)督工作的實施方案
- 白云區(qū)地圖廣州市白云區(qū)鄉(xiāng)鎮(zhèn)街道地圖高清矢量可填充編輯地圖PPT模板
評論
0/150
提交評論