![UART控制器設(shè)計(jì)_第1頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2021-1/25/bfcf6215-1691-4406-9584-0c94b9276f30/bfcf6215-1691-4406-9584-0c94b9276f301.gif)
![UART控制器設(shè)計(jì)_第2頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2021-1/25/bfcf6215-1691-4406-9584-0c94b9276f30/bfcf6215-1691-4406-9584-0c94b9276f302.gif)
![UART控制器設(shè)計(jì)_第3頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2021-1/25/bfcf6215-1691-4406-9584-0c94b9276f30/bfcf6215-1691-4406-9584-0c94b9276f303.gif)
![UART控制器設(shè)計(jì)_第4頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2021-1/25/bfcf6215-1691-4406-9584-0c94b9276f30/bfcf6215-1691-4406-9584-0c94b9276f304.gif)
![UART控制器設(shè)計(jì)_第5頁(yè)](http://file1.renrendoc.com/fileroot_temp2/2021-1/25/bfcf6215-1691-4406-9584-0c94b9276f30/bfcf6215-1691-4406-9584-0c94b9276f305.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.西安電子科技大學(xué)可編程邏輯器件原理、應(yīng)用與實(shí)驗(yàn) 課程實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)名稱UART控制器設(shè)計(jì)及驗(yàn)證成 績(jī) 研究生院 學(xué)院 代培生 班姓名 學(xué)號(hào) 同作者 實(shí)驗(yàn)日期 2017 年 4 月 23 日指導(dǎo)教師評(píng)語: 指導(dǎo)教師: 年 月 日實(shí)驗(yàn)報(bào)告內(nèi)容基本要求及參考格式一、實(shí)驗(yàn)?zāi)康亩?、?shí)驗(yàn)所用儀器(或?qū)嶒?yàn)環(huán)境)三、實(shí)驗(yàn)基本原理及步驟(或方案設(shè)計(jì)及理論計(jì)算)四、實(shí)驗(yàn)數(shù)據(jù)記錄(或仿真及軟件設(shè)計(jì))五、實(shí)驗(yàn)結(jié)果分析及回答問題(或測(cè)試環(huán)境及測(cè)試結(jié)果).目錄一 任務(wù)簡(jiǎn)介11.1 實(shí)驗(yàn)?zāi)康?1.2 開發(fā)工具平臺(tái)1二 模塊設(shè)計(jì)22.1輸入模塊設(shè)計(jì)22.1.1機(jī)械按鍵消抖22.1.2矩陣鍵盤掃描32.1.3參量輸入及顯示輸入
2、52.2 顯示模塊62.3三態(tài)門控制模塊82.4 UART通信協(xié)議幀格式及波特率設(shè)置92.5 UART通信模塊10 2.5.1串口數(shù)據(jù)發(fā)送模塊11 2.5.2串口數(shù)據(jù)接收模塊12三 系統(tǒng)介紹133.1系統(tǒng)結(jié)構(gòu)介紹133.2系統(tǒng)子模塊介紹153.3 開發(fā)板實(shí)驗(yàn)結(jié)果17四 總結(jié)20.一 任務(wù)簡(jiǎn)介1.1 實(shí)驗(yàn)?zāi)康?本次任務(wù)的目標(biāo)為設(shè)計(jì)一個(gè)基于FPGA的串口通信控制器,具體技術(shù)要求如下: (1) 實(shí)現(xiàn)與PC的雙向通信; (2) 可以通過輸入模塊在開發(fā)板上定義向PC發(fā)送的數(shù)據(jù); (3) 數(shù)據(jù)幀長(zhǎng)度可調(diào)(6/7/8位);(4) 通信波特率可調(diào);(5) 在數(shù)碼管上實(shí)現(xiàn)波特率、輸入數(shù)據(jù)、接收數(shù)據(jù)的顯示。(6)
3、 按鍵A用于接收模式和輸入模式的選擇,按鍵B用于選擇輸入模式為波特率設(shè)置 還是發(fā)送數(shù)據(jù)設(shè)置,按鍵C為發(fā)送確認(rèn)鍵,按鍵D用于選擇數(shù)據(jù)幀長(zhǎng)度,矩陣鍵盤 (09)用于輸入波特率因子和發(fā)送數(shù)據(jù)(十六進(jìn)制顯示);各種模式均有數(shù)碼管顯示相 應(yīng)內(nèi)容,其中數(shù)據(jù)幀長(zhǎng)度由四個(gè)LED燈表示。 (7) 操作流程: 1. 通信參數(shù)設(shè)置:在開發(fā)板上選擇數(shù)據(jù)幀長(zhǎng)度、設(shè)置波特率、輸入發(fā)送數(shù)據(jù)幀; 在PC端的串口通信助手中設(shè)置波特率和數(shù)據(jù)幀長(zhǎng)度; 2. 數(shù)據(jù)發(fā)送:按下C鍵向PC發(fā)送數(shù)據(jù),在PC端確認(rèn)接收的數(shù)據(jù); 3. 數(shù)據(jù)接收:由PC端向開發(fā)板發(fā)送數(shù)據(jù),在開發(fā)板上選擇數(shù)據(jù)接收模式即可顯示; 4. 默認(rèn)設(shè)置:UART控制器默認(rèn)波
4、特率為9600,默認(rèn)發(fā)送數(shù)據(jù)為8h18;(8) 以上內(nèi)容均需在開發(fā)板上驗(yàn)證;實(shí)驗(yàn)截圖在本文第三部分給出。1.2 開發(fā)工具平臺(tái)(1) 基于CycloneII EP2C5Q208C8核心的MAGIC3200_EP2C5開發(fā)板,具有四位掃描式數(shù)碼管,RS232串口等外設(shè),時(shí)鐘CLK為50MHz;(2) 開發(fā)軟件為Quartus II 13sp;(3) 串口通信助手;(4) 基于LP2303的USB-UART轉(zhuǎn)接線,用于與筆記本電腦進(jìn)行串口通信。 MAGIC3200_EP2C5開發(fā)板 USB-UART轉(zhuǎn)接線 RS232串口 串口通信助手圖1.1 開發(fā)平臺(tái)設(shè)備二 模塊設(shè)計(jì)2.1 輸入模塊設(shè)計(jì)輸入模塊采用
5、了矩陣鍵盤和獨(dú)立按鍵,獨(dú)立按鍵用于模式選擇和發(fā)送確認(rèn),矩陣鍵盤用于數(shù)據(jù)的輸入。關(guān)于消抖部分,對(duì)于矩陣鍵盤來說只要設(shè)置合適的掃描頻率就可以實(shí)現(xiàn)消抖的功能,而對(duì)于獨(dú)立按鍵來說就必須設(shè)計(jì)相應(yīng)的消抖模塊。2.2.1 機(jī)械按鍵消抖模塊簡(jiǎn)介 機(jī)械按鍵按下時(shí)的機(jī)械抖動(dòng)會(huì)產(chǎn)生很多個(gè)下降沿,而在邏輯上希望機(jī)械按鍵按下一次只產(chǎn)生一個(gè)下降沿,因此要進(jìn)行按鍵消抖。按鍵防抖動(dòng)其實(shí)是通過延時(shí)判斷來做的,因?yàn)檫@種毛刺持續(xù)時(shí)間都在ms級(jí),當(dāng)檢測(cè)到按鍵狀態(tài)有變化時(shí),經(jīng)過一定延時(shí)后再次進(jìn)行確認(rèn)。消抖模塊如圖2.1所示,din為機(jī)械按鍵輸入,dout為消抖后的輸出。圖2.1 消抖模塊圖關(guān)鍵程序 圖2.2為鍵盤消抖的狀態(tài)轉(zhuǎn)移圖,按鍵
6、信號(hào)din按下時(shí)為低電平,平時(shí)為高電平。 (1) 狀態(tài)S0:輸入din信號(hào)產(chǎn)生跳變后,進(jìn)入狀態(tài)S0。如果din為0,進(jìn)入S1狀態(tài)。否則循環(huán)檢測(cè)。(2) 狀態(tài)S1:如果再次檢測(cè)到輸入信號(hào)為邏輯0信號(hào),則表明有按鍵按下,dout為0。狀態(tài)機(jī)結(jié)束。狀態(tài)機(jī)激勵(lì)時(shí)鐘周期為0.1s,以此實(shí)現(xiàn)延時(shí),即按鍵按下后0.1s檢測(cè)按鍵信號(hào),若按鍵信號(hào)為低電平,則輸出低電平完成消抖。圖2.2 消抖狀態(tài)機(jī)消抖程序如下:always (posedge keyclk) /狀態(tài)機(jī)激勵(lì)beginif(RESET=0) pre_s=s0;else pre_s=next_s; endalways (pre_s,next_s,din
7、) /檢查按鍵begin case(pre_s) s0: begin dout=1; if(din=0) next_s=s1; else next_s=s0; end s1: begin dout=1; if(din=0) dout=0; else next_s=s0; end default: next_s=s0; endcaseend2.2.2 矩陣鍵盤掃描簡(jiǎn)介及原理圖 鍵盤掃描最大的優(yōu)點(diǎn)就是能節(jié)約I/O口。如果使用普通的方法,那么16個(gè)按鍵就需要16個(gè)I/O口,但通過掃描的方式來完成,卻只需要8個(gè),按鍵越多它所顯現(xiàn)的優(yōu)勢(shì)也就越明顯。矩陣鍵盤原理電路如圖2.3。鍵盤掃描將使用行掃描法實(shí)現(xiàn),
8、即逐行掃描查詢法。具體操作為:行線的初始狀態(tài)輸出都為0,只要有高電平出現(xiàn),表明有按鍵被按下。在確認(rèn)有按鍵被按下的情況下,需要確定具體哪個(gè)按鍵被按下。以一定的掃描頻率依次將行線(key_out)電平拉高,并檢測(cè)列線的輸入(key_in),確定具體哪個(gè)按鍵被按下。 圖2.3 矩陣鍵盤原理電路 圖2.4 鍵盤掃描模塊圖圖2.5 鍵盤掃描模塊原理圖鍵盤掃描模塊如如圖2.4所示,輸入為reset信號(hào),clk信號(hào)(50MHz時(shí)鐘),模式切換開關(guān)swith,列掃描信號(hào)key_in;輸出為行掃描信號(hào)key_out,波特率因子bote,鍵盤輸入值輸出Data0Data4,Data1、Data2、Data3、Da
9、ta4為輸入模塊向顯示模塊的輸出,它們分別對(duì)應(yīng)四位數(shù)碼管千位、百位、十位、個(gè)位顯示的內(nèi)容。send_data為發(fā)送數(shù)據(jù)幀寄存器,圖中給出的是8位模式下的鍵盤掃描模塊,所以send_data位寬為8位,在7位和6位模式下掃描模塊send_data的位寬分別為7位和6位,其余部分與8位模式下的鍵盤掃描模塊基本一致。speaker為蜂鳴器信號(hào),因?yàn)殚_發(fā)板設(shè)計(jì)上的一些問題,若不定義開發(fā)板的蜂鳴器管腳,蜂鳴器有時(shí)會(huì)響。關(guān)鍵程序其中掃描頻率由鍵盤掃描模塊內(nèi)置的分頻模塊實(shí)現(xiàn):always (posedge clk or negedge reset)beginif(reset=0) time10ms=0; /
10、最初設(shè)計(jì)掃描時(shí)鐘周期為10ms,后來有改動(dòng)else if(timecnt=1200000) /掃描頻率為20Hz(20ms)begin time10ms=time10ms; timecnt=0; endelse timecnt=timecnt+1;end行輪掃的主要程序如下:key_out=scanvalue; /輸出行掃描值cpy_scanvalue=scanvalue; /備份掃描值,用于進(jìn)行列掃描case(scanvalue) /行輪掃4b0001:scanvalue=4b0010;4b0010:scanvalue=4b0100;4b0100:scanvalue=4b1000;4b100
11、0:scanvalue=4b0001;default: scanvalue=4b0001;endcase將鍵盤掃描與數(shù)據(jù)輸入關(guān)聯(lián)的程序如下: case(key_in,cpy_scanvalue) 8b00010001:begin Data0=1;counter=counter+1; end /對(duì)應(yīng)鍵盤“1” 8b00100001:begin Data0=2;counter=counter+1; end /對(duì)應(yīng)鍵盤“2” 8b01000001:begin Data0=3;counter=counter+1; end /對(duì)應(yīng)鍵盤“3” 8b10000001:begin Data0=4;counte
12、r=counter+1; end/未使用 8b00010010:begin Data0=4;counter=counter+1; end /對(duì)應(yīng)鍵盤“4” 8b00100010:begin Data0=5;counter=counter+1; end /對(duì)應(yīng)鍵盤“5” 8b01000010:begin Data0=6;counter=counter+1; end /對(duì)應(yīng)鍵盤“6” 8b10000010:begin Data0=4;counter=counter+1; end /未使用 8b00010100:begin Data0=7;counter=counter+1; end /對(duì)應(yīng)鍵盤“7
13、” 8b00100100:begin Data0=8;counter=counter+1; end /對(duì)應(yīng)鍵盤“8” 8b01000100:begin Data0=9;counter=counter+1; end /對(duì)應(yīng)鍵盤“9” 8b10000100:begin Data0=4;counter=counter+1; end /未使用 8b00011000:begin Data0=0;counter=counter+1; end /對(duì)應(yīng)鍵盤“0” 8b00101000:begin Data0=2;counter=counter+1; end /未使用 8b01001000:begin Data
14、0=3;counter=counter+1; end /未使用 8b10001000:begin Data0=4;counter=counter+1; end /未使用 default:; /無鍵盤按下 endcase如以上程序所示,每當(dāng)按下鍵盤對(duì)應(yīng)按鍵后,將有對(duì)應(yīng)數(shù)值寫入寄存器Data0中,寄存器counter為當(dāng)前輸入對(duì)應(yīng)的位數(shù)。2.2.3 參量輸入及顯示輸入鍵盤輸入數(shù)值的存儲(chǔ)程序如下:switch1=0(控制信號(hào)下文將詳細(xì)介紹)時(shí)進(jìn)入波特率設(shè)置模式,輸入的數(shù)值為波特率因子bote,bote為一個(gè)四位數(shù),此模式下可以通過矩陣鍵盤從千位到個(gè)位依次寫數(shù),將每次輸入的值依次寫入四位寄存器Data
15、1、Data2、Data3、Data4中,最終組成一個(gè)完整的十進(jìn)制四位數(shù),其中counter為位數(shù)標(biāo)志位。Data1、Data2、Data3、Data4為輸入模塊向顯示模塊的輸出,它們分別對(duì)應(yīng)四位數(shù)碼管千位、百位、十位、個(gè)位顯示的內(nèi)容。 if(switch1=0) begin bote=Data1*1000+Data2*100+Data3*10+Data4; case(counter) 4b0001:Data1=Data0; 4b0010:Data2=Data0; 4b0011:Data3=Data0; 4b0100:Data4=Data0; default:begin Data1=5;Dat
16、a2=2;Data3=0;Data4=8; end endcase if(counter=5) counter=0; endswitch=1時(shí)進(jìn)入發(fā)送數(shù)據(jù)設(shè)置模式,最終把鍵盤輸入值寫入send_data,發(fā)送寄存器send_data為一個(gè)68位(可設(shè)置)的二進(jìn)制數(shù),用于存儲(chǔ)將要發(fā)送的數(shù)據(jù)幀。因?yàn)樗膫€(gè)Data寄存器位寬為4位,所以send_data的內(nèi)容只需要由兩個(gè)寄存器的數(shù)據(jù)構(gòu)成。令Data1、Data2為10,意思為關(guān)閉千位、百位的數(shù)碼管,這在顯示模塊部分將會(huì)詳細(xì)介紹。 else begin send_data=Data3,Data4; Data1=10; Data2=10; case(co
17、unter) 4b0001:Data3=Data0; 4b0010:Data4=Data0; default:begin Data3=8;Data42) counter=0; end 仿真結(jié)果:圖2.6 鍵盤掃描模塊仿真為了方便觀察結(jié)果,仿真中加快了時(shí)鐘和一些分頻的頻率。從仿真圖像可以看出,行線掃描信號(hào)key_out以一定頻率掃描,當(dāng)列掃描信號(hào)key_in有所輸入時(shí),輸入寄存器Data0、Data1、Data2、Data3、Data4都有相應(yīng)的變化。而且當(dāng)切換開關(guān)switch按下時(shí),輸出信號(hào)bote和send_data都發(fā)生了相應(yīng)變化,這說明波特率設(shè)置模式和發(fā)送數(shù)據(jù)寫入模式的切換功能正常運(yùn)行。
18、仿真表明輸入模塊在功能上是可行的。2.2 顯示模塊模塊簡(jiǎn)介及原理圖顯示模塊用于驅(qū)動(dòng)開發(fā)板上的四位數(shù)碼管顯示串口數(shù)據(jù),每個(gè)數(shù)碼管有八個(gè)控制位和一個(gè)片選位,還有一個(gè)用于顯示:控制位。由于開發(fā)板只給出了13個(gè)引腳用于控制四個(gè)數(shù)碼管,因此必須采用數(shù)碼管掃描的形式來進(jìn)行顯示。因?yàn)槿搜塾幸曈X暫留的特性.一般說來,當(dāng)1秒鐘刷新24次以上,人眼就無法區(qū)分而認(rèn)為四個(gè)數(shù)碼管是一起亮的。掃描具有節(jié)約引腳的優(yōu)點(diǎn),如果并行驅(qū)動(dòng)四位數(shù)碼管,那么至少需要33個(gè)引腳,而掃描法只需要13個(gè)引腳就可以實(shí)現(xiàn)。使用的是共陽(yáng)數(shù)碼管,引腳電平為低時(shí)點(diǎn)亮。 圖2.7 顯示模塊顯示模塊如圖2.6所示,輸入為reset信號(hào),50Mhz時(shí)鐘信號(hào)
19、clk,前文提到的Data1、Data2、Data3、Data4顯示內(nèi)容輸入,分別對(duì)應(yīng)四位數(shù)碼管千位、百位、十位、個(gè)位的顯示內(nèi)容。輸出信號(hào)中的LED_ALED_G、LED_Point、LED_PointTime均為顯示控制信號(hào);LED_VCC1LED_VCC4為L(zhǎng)ED片選信號(hào),高電平有效,LED_EN1為使能信號(hào)。關(guān)鍵程序以下為數(shù)碼管掃描的關(guān)鍵程序:always (posedge clk)beginif(reset=b0) count=0;else if(count=6000) /設(shè)置數(shù)碼管掃描頻率begincount3) scancnt=0;else scancnt=scancnt+1;en
20、delse count=count+1;end以上程序主要作用是,使變量scancnt掃描頻率在03內(nèi)累加循環(huán),scancnt有0123共四個(gè)狀態(tài),通過scancnt控制數(shù)碼管片選信號(hào),分別在四個(gè)數(shù)碼管上顯示內(nèi)容。譯碼部分見附錄。仿真結(jié)果圖2.8 顯示模塊仿真結(jié)果 可以看出隨著Data1和Data1的變化,LED控制信號(hào)和LED片選信號(hào)同時(shí)變化,說明顯示模塊功能正常。2.3 三態(tài)門控制模塊模塊簡(jiǎn)介及原理圖在本任務(wù)頂層的設(shè)計(jì)中有些部分需要使用多輸入三態(tài)門來控制數(shù)據(jù)的傳輸,本部分將以任務(wù)中的一個(gè)多輸入三態(tài)門來介紹該模塊。模塊的原理圖和模塊圖如圖2.9所示 圖2.9 三態(tài)門模塊如圖所示,data1d
21、ata4為輸入數(shù)據(jù),D1D4為輸出,若en=1則D1D4輸出data1data4的數(shù)據(jù),若en=0則D1D4輸出高阻。關(guān)鍵程序 if(en=1) begin D1=data1;D2=data2;D3=data3;D4=data4; endelse begin D1=4bzzzz; D2=4bzzzz;D3=4bzzzz;D42) counter=0; / counter大于2時(shí)清零else counter= counter+1;endalways(posedge DD)beginif(counter=0) begin c=3b001; led=4b0111; end / 8位模式else if
22、(counter=1) begin c=3b010; led=4b1000; end / 7位模式else if(counter=2) begin c=3b100; led=4b1001; end / 6位模式else begin c=3b001; led=4b0000; end / 默認(rèn)8位模式End仿真結(jié)果圖2.13 控制模塊仿真 輸出隨輸入規(guī)律變化,可以看出模塊功能正常。波特率設(shè)置:波特率發(fā)生器為傳輸提供了串行移位時(shí)鐘。波特率表示數(shù)據(jù)的傳送速率,即每秒傳輸二進(jìn)制的位數(shù)。波特率控制模塊實(shí)際上是一個(gè)分頻器,產(chǎn)生相應(yīng)的符合RS232的波特率同步時(shí)鐘。 因?yàn)殚_發(fā)板自帶時(shí)鐘為50MHz,因此:波特
23、率=50M/bote;可見其中波特率是由波特率因子bote決定,若bote=5208,則波特率為9600。關(guān)鍵程序always (posedge CLK or negedge RESET) beginif(ClockCount=bote) begin Clock9600=1; ClockCount=0; endelsebegin Clock9600=0; ClockCount=ClockCount+1; end end波特率發(fā)生器本質(zhì)為一個(gè)分頻器,bote為之前鍵盤輸入模塊送來的設(shè)定值。仿真結(jié)果該模塊的仿真驗(yàn)證將于下文中UART通信模塊的仿真中一并驗(yàn)證。2.5 UART通信模塊模塊介紹及原理圖
24、基本的UART僅有RXD和TXD兩條信號(hào)線,接收和發(fā)送之間相互不存在干擾,即全雙工。由于UART是異步通信,要求RXD接口和TXD發(fā)送端制定相應(yīng)的規(guī)則,對(duì)數(shù)據(jù)進(jìn)行同步,以使接收、發(fā)送之間協(xié)調(diào)一致。UART的工作原理是將傳輸數(shù)據(jù)的每一個(gè)字符一位接一位地傳輸,以字符為單位從低位到高位逐位傳輸,一個(gè)字符表示一幀信息。如圖2.14所示,串口數(shù)據(jù)發(fā)送模塊和串口數(shù)據(jù)接收模塊以及相關(guān)分頻模塊都集成于同一個(gè)UART模塊中。 輸入:CLK:50MHz時(shí)鐘;RESET:復(fù)位信號(hào);UART0_RX:接收數(shù)據(jù)引腳;KEYA:對(duì)應(yīng)機(jī)械按鍵C,為發(fā)送確認(rèn)鍵;bote14.0:由輸入模塊送來的波特率因子,用于設(shè)置波特率;S
25、END_DATA7.0:數(shù)據(jù)幀,在6位模式中位寬為6,在7位模式中位寬為7。輸出:UART0_TX:發(fā)送數(shù)據(jù)引腳;Data010.3Data040.3:用于向顯示模塊傳遞接收的數(shù)據(jù)。圖2.14 UART模塊2.5.1 串口數(shù)據(jù)發(fā)送模塊 關(guān)鍵程序Clock9600為前文介紹的波特率發(fā)生器產(chǎn)生的波特率時(shí)鐘;always (posedge Clock9600 or posedge Send_en)begin if(Send_en=1) begin send_count=0; UART0_TX=1; send_over=1; end /串口清零 else if(Send_count=9) begin
26、UART0_TX=Send_data9; send_over=0; end/發(fā)送完成 else begin UART0_TX=Send_dataSend_count; /逐位由發(fā)送寄存器向串口寫數(shù)據(jù) Send_count=Send_count+1; endalways (posedge dout or negedge RESET) /發(fā)送數(shù)據(jù)beginif(RESET=0) begin send_en=1;Send_data=10b1000000000; endelse begin Send_en=0; Send_data=last,SEND_DATA,start; /寫入起始位和終止位if(
27、Send_over=0) Send_en=1;endend 2.5.2 串口數(shù)據(jù)接收模塊 首先介紹采樣時(shí)鐘Clock3,它是波特率的16倍,即串口上一個(gè)數(shù)據(jù)位長(zhǎng)度會(huì)有16個(gè)Clock3周期,如果在每個(gè)數(shù)據(jù)位的第8個(gè)Clock3周期上采樣,即在每個(gè)數(shù)據(jù)位的中間進(jìn)行取樣,這樣可以使采樣值更加準(zhǔn)確可靠。此原理如圖2.15所示。圖2.15 采樣原理關(guān)鍵程序接收采樣時(shí)鐘分頻模塊:always (posedge CLK or negedge RESET)beginif(ClockCount_UART0_RX=bote/16) / 采樣頻率為波特率的16倍 begin Clock3=1; ClockCoun
28、t_UART0_RX=0; endelse begin Clock3=0; ClockCount_UART0_RX=ClockCount_UART0_RX+1; endend檢測(cè)到UART0_RX出現(xiàn)下降沿時(shí),令UART0_RX_Hold=1,啟動(dòng)接收進(jìn)程;case(m)/ 8位數(shù)據(jù)幀采樣24 :begin UART0_RX_Data0=UART0_RX;m=m+1;end40 :begin UART0_RX_Data1=UART0_RX;m=m+1;end56 :begin UART0_RX_Data2=UART0_RX;m=m+1;end72 :begin UART0_RX_Data3=U
29、ART0_RX;m=m+1;end88 :begin UART0_RX_Data4=UART0_RX;m=m+1;end104 :begin UART0_RX_Data5=UART0_RX;m=m+1;end120 :begin UART0_RX_Data6=UART0_RX;m=m+1;end136 :begin UART0_RX_Data7=UART0_RX;m=m+1;end152 :begin UART0_RX_Valid=1;m=m+1;end /標(biāo)志串口數(shù)據(jù)接收完成168 : begin m=0;UART0_RX_Valid=0;enddefault:m=m+1;endcase接收
30、數(shù)據(jù)輸出部分:(8位模式)Data01=UART0_RX_Data3,UART0_RX_Data2,UART0_RX_Data1,UART0_RX_Data0;Data02=UART0_RX_Data7,UART0_RX_Data6,UART0_RX_Data5,UART0_RX_Data4;如果系統(tǒng)處于7位模式,那么Data01=UART0_RX_Data3,UART0_RX_Data2,UART0_RX_Data1,UART0_RX_Data0;Data02=start,UART0_RX_Data6,UART0_RX_Data5,UART0_RX_Data4;如果系統(tǒng)處于6位模式,那么Da
31、ta01=UART0_RX_Data3,UART0_RX_Data2,UART0_RX_Data1,UART0_RX_Data0;Data02=start,start,UART0_RX_Data5,UART0_RX_Data4;其中start=0。仿真結(jié)果圖2.16 UART模塊仿真 從仿真結(jié)果可以看出,波特率時(shí)鐘clock9600、采樣時(shí)鐘clock3均正常,UART0_TX有正確數(shù)據(jù)輸出,Data01和Data02正確反映了UART0_RX送來的數(shù)據(jù),因此UART通信模塊功能正確。三 系統(tǒng)介紹3.1 系統(tǒng)結(jié)構(gòu)介紹整個(gè)系統(tǒng)的結(jié)構(gòu)可以用以下框圖描述:圖3.1 系統(tǒng)框圖 從圖3.1中可以看出整個(gè)
32、系統(tǒng)的功能即為實(shí)現(xiàn)幀格式、波特率可調(diào)的全雙工串口通信,并顯示相關(guān)數(shù)據(jù)信息。具體的操作流程如圖3.2所示。圖3.2 操作流程 頂層圖如下:圖3.3 頂層圖圖中部分1為數(shù)據(jù)位寬6位的通信子系統(tǒng),部分2為數(shù)據(jù)位寬8位的通信子系統(tǒng),部分3為數(shù)據(jù)位寬8位的通信子系統(tǒng),部分4為數(shù)據(jù)幀長(zhǎng)度控制模塊,用于選擇哪一個(gè)系統(tǒng)運(yùn)作。端口說明輸入:clk:50MHz時(shí)鐘;reset:復(fù)位信號(hào);switch:用于控制波特率輸入模式和發(fā)送數(shù)據(jù)輸入模式間的切換;key_in3.0:鍵盤列掃描信號(hào);UART0_RX:接收數(shù)據(jù)引腳;B:機(jī)械按鍵,發(fā)送確認(rèn)鍵;s1:機(jī)械按鍵,按下后顯示接收的數(shù)據(jù),再按下退出;DDD:機(jī)械按鍵,切換
33、數(shù)據(jù)位寬。輸出:led3.0:數(shù)據(jù)位寬指示燈;key_out3.0:鍵盤行掃描信號(hào);speaker:蜂鳴器控制信號(hào);LED_ALED_G:顯示控制信號(hào);LED_Point,LED_PointTime:均為顯示控制信號(hào);LED_VCC1LED_VCC4:LED片選信號(hào);LED_EN1:使能信號(hào);UART0_TX:發(fā)送數(shù)據(jù)引腳。3.2 系統(tǒng)子模塊介紹 因?yàn)槿齻€(gè)通信子系統(tǒng)基本相似,所以本文僅介紹數(shù)據(jù)位寬6位的通信子系統(tǒng)。圖3.4 子系統(tǒng)圖3.4的子系統(tǒng)中左邊和右邊的模塊都是多輸入三態(tài)門,其使能信號(hào)由數(shù)據(jù)幀長(zhǎng)度控制模塊控制,從而決定了在任何一時(shí)刻三個(gè)子系統(tǒng)只有一個(gè)系統(tǒng)處于工作狀態(tài)。該圖中間的模塊即為實(shí)
34、現(xiàn)6位串口通信的功能模塊,其結(jié)構(gòu)如圖3.5所示。圖3.5 6位串口通信的功能模塊如圖3.5所示,串口通信模塊主要分為6個(gè)子模塊,各個(gè)子模塊在前文中都有介紹;模塊說明:模塊1:UART通信模塊,用于數(shù)據(jù)的接收和傳送,將接收到的數(shù)據(jù)經(jīng)過三態(tài)門(模塊 4) 傳送到顯示模塊;模塊2:輸入模塊,用于輸入波特率、發(fā)送數(shù)據(jù),將用戶輸入的數(shù)據(jù)經(jīng)過三態(tài)門(模塊 3) 發(fā)送到顯示模塊;模塊3,模塊4:三態(tài)門模塊,用于保證任何時(shí)刻只有一組顯示數(shù)據(jù)輸入顯示模塊進(jìn)行 顯示;模塊5:顯示模塊,用于驅(qū)動(dòng)數(shù)碼管;模塊6:三態(tài)門控制模塊;用于選擇數(shù)碼管顯示的內(nèi)容。端口說明輸如:clk:50MHz時(shí)鐘;reset:復(fù)位信號(hào);sw
35、itch:用于控制波特率輸入模式和發(fā)送數(shù)據(jù)輸入模式間的切換;key_in3.0:鍵盤列掃描信號(hào);UART0_RX:接收數(shù)據(jù)引腳;B:機(jī)械按鍵,發(fā)送確認(rèn)鍵;s1:機(jī)械按鍵,按下后顯示接收的數(shù)據(jù),再按下退出;輸出:key_out3.0:鍵盤行掃描信號(hào);speaker:蜂鳴器控制信號(hào);LED_ALED_G:顯示控制信號(hào);LED_Point,LED_PointTime:均為顯示控制信號(hào);LED_VCC1LED_VCC4:LED片選信號(hào);LED_EN1:使能信號(hào);UART0_TX:發(fā)送數(shù)據(jù)引腳。3.3 開發(fā)板實(shí)驗(yàn)結(jié)果(1) 實(shí)驗(yàn)條件: 數(shù)據(jù)位寬:6位; 波特率 / 波特率因子:38400 / 1304; 發(fā)送數(shù)據(jù):2h18;接收數(shù)據(jù):2h32;圖3.6 設(shè)置波特率因子(6位位寬) 圖3.7 設(shè)置發(fā)送數(shù)據(jù)(6位位寬) 圖3.8 顯示接收數(shù)據(jù)(6位位寬)圖3.9 PC端串口通信助手(綠字為開發(fā)板送來的數(shù)據(jù)黑字為向開發(fā)板發(fā)送的數(shù)據(jù))(2) 實(shí)驗(yàn)條件:(按下按鍵D切換數(shù)據(jù)位寬
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年臨街店鋪門面租賃合同范文(2篇)
- 2025年二手房轉(zhuǎn)讓協(xié)議參考樣本(三篇)
- 2025年倉(cāng)儲(chǔ)設(shè)施的租賃合同(2篇)
- 2025年企業(yè)公司員工保密合同(2篇)
- 2025年度安全保衛(wèi)人員招聘與培訓(xùn)合同
- 工廠搬遷運(yùn)輸服務(wù)協(xié)議
- 廢品回收運(yùn)輸合同
- 展覽館裝修居間協(xié)議
- 城市公交燃油供應(yīng)協(xié)議
- 機(jī)械設(shè)備搬遷居間協(xié)議
- 2023年心理咨詢師之心理咨詢師基礎(chǔ)知識(shí)考試題庫(kù)附完整答案【有一套】
- 證券公司信用風(fēng)險(xiǎn)和操作風(fēng)險(xiǎn)管理理論和實(shí)踐中金公司
- 一級(jí)建造師繼續(xù)教育最全題庫(kù)及答案(新)
- 2022年高考湖南卷生物試題(含答案解析)
- GB/T 20909-2007鋼門窗
- GB/T 17854-1999埋弧焊用不銹鋼焊絲和焊劑
- GB/T 15593-2020輸血(液)器具用聚氯乙烯塑料
- 直線加速器專項(xiàng)施工方案
- 儲(chǔ)能設(shè)備項(xiàng)目采購(gòu)供應(yīng)質(zhì)量管理方案
- 2022年全國(guó)卷高考語文答題卡格式
- 復(fù)旦大學(xué)簡(jiǎn)介 (課堂PPT)
評(píng)論
0/150
提交評(píng)論