




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
./編號基于FPGA的UART模塊設(shè)計與實現(xiàn)DesignandRealizationofUARTbasedonFPGA學(xué)生姓名周大勇專業(yè)控制科學(xué)與工程學(xué)號S120400525指導(dǎo)教師曉慧學(xué)院電子信息工程學(xué)院二〇一三年六月.摘要UART因其可靠性高,傳輸距離遠,線路簡單,同時UART作為RS232協(xié)議的控制接口,從而成為比較廣泛的串行數(shù)據(jù)通信電路,而現(xiàn)在大部分集成電路通信用的UART芯片,存在成本高,電路復(fù)雜,移植性較差等缺點,本文提出了一種將UART的功能集成在FPGA芯片中,可使整個系統(tǒng)更為靈活、緊湊,減小整個電路的體積,提高系統(tǒng)的可靠性和穩(wěn)定性。本模塊功能全部基于verilogHDL硬件描述語言。關(guān)鍵詞:FPGA,UART,verilogHDL,RS232ABSTRACTUART,becauseofitshighreliability,longtransmissiondistanceandthesimpleline,moreovermainlyusedincommunicationbetweendevicewithRS232interface.Thusitisbecomingmoreextensiveserialdatacommunicationcircuit.ButnowmostoftheintegratedUARTchipsusedincommunications,havefaultsofhighcostandpoorportability.Thecircuitofthechipiscomplex.ThispaperpresentsamethodthatUARTfunctionwillbeintegratedinFPGAchip,Itcanmakesystemmorecompact,flexible,reliableandstable.AllfunctionsofmodulearebasedonverilogHDLhardwaredescriptionlanguage.Keywords:FPGA,UART,verilogHDL,RS232目錄摘要IABSTRACTII目錄II第一章緒論2第二章UART簡介2第三章UART功能設(shè)計23.1波特率發(fā)生模塊23.2波特率接收模塊23.3UART發(fā)送模塊2第四章頂層電路及實驗數(shù)據(jù)2第五章結(jié)論2致2參考文獻2.第一章緒論通用異步收發(fā)器〔universalasynchronousreceivertransmitter,UART盡管自20世紀(jì)70年代就已出現(xiàn),但因其簡單可靠,目前仍是一種使用廣泛的串行通信接口。各種微處理器,不論是單片機,還是DSP、ARM,UART都是基本外圍模塊。一般UART由專用芯片來實現(xiàn),但專用芯片引腳都較多,含許多輔助功能,在實際使用時往往只需要用到UART的基本功能,使用專用芯片會造成資源浪費和成本提高。本文提出一種基于FPGA的UART模塊設(shè),本文設(shè)計的UART符合RS232串行通信標(biāo)準(zhǔn)。當(dāng)我們不需要用到完整的的UART功能和一些輔助功能時,就可以將需要的UART功能集成用FPGA來實現(xiàn),然而,FPGA部并不擁有CPU控制單元,無法處理由UART控制器產(chǎn)生的中斷,所以FPGA不能利用現(xiàn)成的UART控制器構(gòu)成異步串行接口,必須將UART控制器的功能集成到FPGA部。從而可以大大的減少了體積、簡化了電路,也提高了系統(tǒng)的靈活性。第二章UART簡介UART是廣泛使用的串行數(shù)據(jù)傳輸協(xié)議[2]。基本的UART通信只需要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ù)幀格式是UART通信中的2個重要指標(biāo),波特率表示每秒鐘傳輸二進制數(shù)據(jù)的位數(shù),表征了數(shù)據(jù)傳輸?shù)乃俾?。國際上規(guī)定了一系列標(biāo)準(zhǔn)的波特率,如9600b/s、19200b/s、115200b/s、等。數(shù)據(jù)幀格式定義了所發(fā)數(shù)據(jù)每位的意義,UART的幀格式如圖1所示。一般情況UART每一數(shù)據(jù)幀,依次由起始位〔1位、數(shù)據(jù)位〔5~8位,奇偶校驗位〔可選的1位以及停止位〔1~2位組成。其中數(shù)據(jù)位部分是從最低位先開始傳送的;奇偶校驗位是對1幀數(shù)據(jù)中的數(shù)據(jù)部分和校驗位計算,使‘1’的個數(shù)滿足奇數(shù)個或偶數(shù)個。當(dāng)UART空閑時,收發(fā)引腳RXD與TXD均是高電平。一旦需要發(fā)送數(shù)據(jù),則首先向TXD引腳輸出低電平作為起始位,表示1幀數(shù)據(jù)的開始。而在接收數(shù)據(jù)時,檢測到起始位將啟動一次數(shù)據(jù)接收流程。本設(shè)計為了簡化電路設(shè)計,減少電路面積,這里省略了UART系統(tǒng)中的奇偶檢驗?zāi)K。圖1UART的幀格式第三章UART功能設(shè)計計算機與FPGA之間進行通信!是通過計算機的串行接口實現(xiàn)的。為了實現(xiàn)RS232接口通信,系統(tǒng)整體結(jié)構(gòu)如圖2所示。RS232連接方式采用了9芯的連接座與計算機進行連接,FPGA與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ā)送模塊數(shù)據(jù)線。本方案設(shè)計的UART數(shù)據(jù)格式為數(shù)據(jù)位為8位,波特率可選,不設(shè)奇偶校驗位,1位起始位,1位停止位。異步通信的過程如下:計算機產(chǎn)生發(fā)送串行數(shù)據(jù)!由RS232連接座的TXD端輸入,經(jīng)過MAX232進行電平轉(zhuǎn)換由FPGA串口接收模塊的RXD端進入,進行串并轉(zhuǎn)換得到8位位寬數(shù)據(jù)總線,該數(shù)據(jù)由FPGA的其他模塊進行處理;FPGA產(chǎn)生發(fā)送8位并行數(shù)據(jù),數(shù)據(jù)由8位數(shù)據(jù)線進入FPGA串口發(fā)送模塊,進行并串轉(zhuǎn)換后由FPGA串口發(fā)送模塊的TXD輸出到MAX232的T1IN管腳,經(jīng)過MAX232電平轉(zhuǎn)換由RS232連接座的RXD端輸出給計算。圖2UART整體結(jié)構(gòu)3.1波特率發(fā)生模塊波特率發(fā)生器實際上就是一個簡單的分頻器,波特率發(fā)生器的功能是產(chǎn)生和RS-232通信所采用的波特率同步的時鐘,這樣才能按照RS-232串行通信的時序要求進行數(shù)據(jù)接收或發(fā)送。實現(xiàn)波特率時鐘的基本思路就是設(shè)計一個計數(shù)器,該計數(shù)器工作在速度很高的系統(tǒng)時鐘下,當(dāng)計數(shù)到某數(shù)值時將輸出置為高電平,再計數(shù)一定數(shù)值后將輸出置為低電平,如此反復(fù)就能得到所需的波特率時QUOTE。本設(shè)計采用系統(tǒng)時鐘頻率50Mhz,目的是為了在接收時進行精確的采樣,以提取異步的串行數(shù)據(jù)。本設(shè)計波特率選擇的是115200b/s,既每秒傳輸115200bit數(shù)據(jù)。為實現(xiàn)此波特率,應(yīng)計數(shù)為50M/115200=434個數(shù)。為精確采樣,防止上升沿或下降沿出現(xiàn)斜坡現(xiàn)象。本設(shè)計選擇在就數(shù)值中間采樣,既采樣點為216。波特率發(fā)生模塊和時序仿真波形如圖3和圖4所示。圖3波特率發(fā)生模塊圖4波特率時序仿真波形使用verilogHDL硬件語言描述波特率發(fā)生器的完整代碼如下:modulebps_generate<clk,clr,bps,bps_start>;outputbps;inputclk,clr;inputbps_start;parameterbaud_115200=13'd433;parameterbaud_115200_h=13'd216;reg[12:0]t;always<posedgeclkornegedgeclr>if<!clr>t<=13'b0;elseif<<cnt==baud_115200>||!bps_start>t<=13'b0;elset<=cnt+1'b1;regbps_r;always<posedgeclkornegedgeclr>if<!clr>bps_r<=1'b0;elseif<cnt==baud_115200_h&&bps_start>bps_r<=1'b1;elsebps_r<=1'b0;assignbps=bps_r;endmodule3.2波特率接收模塊接收模塊是整個UART的設(shè)計的重點,其主要功能是檢測數(shù)據(jù)幀的起始位,然后對接收的數(shù)據(jù)進行串行到并行的轉(zhuǎn)換,并將接收好的數(shù)據(jù)儲存在寄存器等待PC機處理.接收器的接受時鐘與每個接收字符同步是接收功能實現(xiàn)的關(guān)鍵,但是串行數(shù)據(jù)幀與數(shù)據(jù)接收時鐘是異步的,所以必須有效地控制采集通信線路上的電平信號的時機,以保證異步通信的雙方準(zhǔn)確無誤地交換信息。UART接受模塊和時序仿真波形如圖5和圖6所示。圖5UART接受模塊圖6UART接收模塊時序仿真波形接收模塊時序仿真波形如圖6所示,測試的串行發(fā)送數(shù)據(jù)為"0111011101",接收模塊輸出數(shù)據(jù)為0x77,其中1位開始位,8位數(shù)據(jù),1位停止位。此時產(chǎn)生接收完標(biāo)志信號rec滿足傳輸數(shù)據(jù)幀格式,滿足發(fā)送數(shù)據(jù)幀格式。使用verilogHDL硬件語言描述UART接收模塊的完整代碼如下:moduleuart_recive<clk,clr,bps,bps_start,RXD,parallel_out,indicate_rec>;inputclk,clr;inputRXD;inputbps;outputbps_start;outputindicate_rec;output[7:0]parallel_out;wirenegedge_RXD;regrxd1,rxd2,rxd3,rxd4;always<posedgeclkornegedgeclr>beginif<!clr>beginrxd1<=1'b1;rxd2<=1'b1;rxd3<=1'b1;rxd4<=1'b1;endelsebeginrxd1<=RXD;rxd2<=rxd1;rxd3<=rxd2;rxd4<=rxd3;endendassignnegedge_RXD=rxd4&rxd3&~rxd2&~rxd1;regbps_start_r;regindicate_rec;reg[3:0]num; always<posedgeclkornegedgeclr>if<!clr>beginbps_start_r<=1'bz;indicate_rec<=1'b0;endelseif<negedge_RXD>begin //接收到串口接收線rs232_rx的下降沿標(biāo)志信號bps_start_r<=1'b1; //啟動串口準(zhǔn)備數(shù)據(jù)接收indicate_rec<=1'b1; //接收數(shù)據(jù)中斷信號使能endelseif<num==4'd10>begin //接收完有用數(shù)據(jù)信息bps_start_r<=1'b0; //數(shù)據(jù)接收完畢,釋放波特率啟動信號indicate_rec<=1'b0; //接收數(shù)據(jù)中斷信號關(guān)閉endassignbps_start=bps_start_r;reg[7:0]rx_temp_data;reg[7:0]parallel_temp;always<posedgeclkornegedgeclr>beginif<!clr>beginrx_temp_data<=8'd0;num<=4'd0;parallel_temp<=8'd0;endelseif<indicate_rec>beginif<bps>beginnum<=num+1'b1;case<num>4'd1:rx_temp_data[0]=RXD;4'd2:rx_temp_data[1]=RXD;4'd3:rx_temp_data[2]=RXD;4'd4:rx_temp_data[3]=RXD;4'd5:rx_temp_data[4]=RXD;4'd6:rx_temp_data[5]=RXD;4'd7:rx_temp_data[6]=RXD;4'd8:rx_temp_data[7]=RXD;default:;endcaseendelseif<num==4'd10>beginnum<=4'b0;parallel_temp<=rx_temp_data;endendendassignparallel_out=parallel_temp;endmodule3.3UART發(fā)送模塊發(fā)送模塊主要實現(xiàn)對并行數(shù)據(jù)的并串轉(zhuǎn)換,并把串行數(shù)據(jù)按照既定數(shù)據(jù)幀格式進行輸出。該數(shù)據(jù)幀格式遵循1位起始位、8位數(shù)據(jù)位和1位停止位的固定格式。UART發(fā)送模塊和時序仿真波形如圖7和圖8所示。圖7UART發(fā)送模塊圖8UART發(fā)送模塊時序仿真波形發(fā)送模塊時序仿真波形如圖8所示,測試的并行發(fā)送數(shù)據(jù)為"01110111",發(fā)送模塊輸出數(shù)據(jù)為0111011101,其中1位開始位,8位數(shù)據(jù),1位停止位。滿足發(fā)送數(shù)據(jù)幀格式。使用verilogHDL硬件語言描述UART發(fā)送模塊的完整代碼如下:moduleuart_send<clk,clr,bps,bps_start,indicate,parallel_in,TXD>;outputbps_start,TXD;inputclk,clr,bps,indicate;input[7:0]parallel_in;regindicate1,indicate2,indicate3;wireindicate_s;always<posedgeclkornegedgeclr>beginif<!clr>beginindicate1<=1'b0;indicate2<=1'b0;indicate3<=1'b0;endelsebeginindicate1<=indicate;indicate2<=indicate1;indicate3<=indicate2;endendassignindicate_s=~indicate2&indicate3;regindicate_send_r;regbps_start_r;reg[7:0]temp_data;reg[3:0]counter;always<posedgeclkornegedgeclr>beginif<!clr>beginindicate_send_r<=1'b0;temp_data<=8'b0;bps_start_r<=1'bz;endelseif<indicate_s>beginbps_start_r<=1'b1;temp_data<=parallel_in;indicate_send_r<=1'b1;endelseif<counter==4'd10>beginbps_start_r<=1'b0;indicate_send_r<=1'b0;endendassignbps_start=bps_start_r;regTXD_r;always<posedgeclkornegedgeclr>beginif<!clr>beginTXD_r<=1'b1;counter<=4'b0;endelseif<indicate_send_r>beginif<bps>begincounter<=counter+1'b1;case<counter>4'd0:TXD_r=1'b0;4'd1:TXD_r=temp_data[0];4'd2:TXD_r=temp_data[1];4'd3:TXD_r=temp_data[2];4'd4:TXD_r=temp_data[3];4'd5:TXD_r=temp_data[4];4'd6:TXD_r=temp_data[5];
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目的可行性分析與評估計劃
- 2025年電子廚房秤項目建議書
- 2025年微球載體材料合作協(xié)議書
- 醫(yī)院銷售合同
- 電商交易平臺的商品展示與服務(wù)免責(zé)協(xié)議書
- Oxadixyl-Standard-生命科學(xué)試劑-MCE
- Dimethenamide-P-Standard-生命科學(xué)試劑-MCE
- 4-Aminonicotinic-acid-生命科學(xué)試劑-MCE
- 2-3-Isopropylideneguanosine-生命科學(xué)試劑-MCE
- 幼兒繪本小藍和小黃讀后感
- 五年級下冊音樂課程綱要
- 《酒后駕車的危害》課件
- 食材配送、包裝、運輸、驗收、售后服務(wù)方案應(yīng)急預(yù)案
- 萬千教育學(xué)前讀懂兒童的思維:支持自主游戲中的圖式探索
- 無障礙設(shè)施監(jiān)理實施細則
- 中石化YC分公司易捷便利店市場營銷策略研究
- 可轉(zhuǎn)換病區(qū)應(yīng)急預(yù)案與流程
- 《燃放煙花的利與弊》課件
- 醫(yī)院護理培訓(xùn)課件:《病區(qū)環(huán)境管理查房》
- 《小羊和蝴蝶》繪本故事
- 鋼筋工理論考試題庫及答案
評論
0/150
提交評論