




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、串口通信設(shè)計一、 實驗?zāi)康?、熟練使用ISE設(shè)計工具;2、理解串口傳輸協(xié)議。理解采用“自頂向下”設(shè)計思路,分解模塊的方法;3、在ISE使用Verilog HDL設(shè)計串口接收模塊,完成仿真、下載。二、 實驗原理1、串口傳輸協(xié)議概述設(shè)計完成異步串口通信通用異步收發(fā)是一種典型的異步串口通信,簡稱UART。串口通信時序如圖1所示。圖1 通用異步收發(fā)時序圖由圖1可以看出,在沒有數(shù)據(jù)傳送時,通信線會一直處于高電平,即邏輯1狀態(tài);當(dāng)有數(shù)據(jù)傳送時,數(shù)據(jù)幀以起始位開始,以停止位結(jié)束。起始位為低電平,即邏輯0狀態(tài);停止位為高電平,即邏輯1狀態(tài),其持續(xù)時間可選為1位、1.5位或2位(本次設(shè)計選擇持續(xù)時間1位)。接收
2、端在接收到停止位后,知道一幀數(shù)據(jù)已經(jīng)傳完,轉(zhuǎn)為等待數(shù)據(jù)接收狀態(tài);只要再接收到0狀態(tài),即為新一幀數(shù)據(jù)的起始狀態(tài)。數(shù)據(jù)幀的數(shù)據(jù)位低位(LSB)在前,高位(MSB)在后,根據(jù)不同的編碼規(guī)則,數(shù)據(jù)位可能為5位、6位、7位或者8位(本次設(shè)計數(shù)據(jù)位定位8位)。校驗位也可根據(jù)需要選擇奇校驗、偶校驗或者不要校驗(本次設(shè)計不要校驗位)。2、串口時序分析本次FPGA系統(tǒng)時鐘是40MHZ,則一位數(shù)據(jù)傳輸時間相當(dāng)于(1/9600)/(1/40M)=4167個40MHZ時鐘周期。設(shè)一幀數(shù)據(jù)位數(shù)=1(開始位)+8(數(shù)據(jù)位)+1(校驗位)+1(結(jié)束位)=11位,所以傳輸一幀數(shù)據(jù)的時間是11*1/9600=0.3333s。為
3、了穩(wěn)定采集串口數(shù)據(jù)幀的數(shù)據(jù),需要在每位數(shù)據(jù)的“中間時刻”采樣,由此,需要在每位數(shù)據(jù)開始時刻對時鐘進行計數(shù),若系統(tǒng)時鐘是40MHZ,則在計數(shù)至4167/2=2084時采樣此時刻的數(shù)值。3、數(shù)據(jù)顯示PC通過串口發(fā)送的數(shù)據(jù)應(yīng)該在下載板上有所顯示,以此來確定發(fā)送成功與否。所以實驗中用到8個數(shù)碼管以二進制的方式來顯示通過串口助手發(fā)送的兩個十六進制的數(shù)據(jù)。4、本次實驗的設(shè)計一共有20個端口輸入信號:CLK系統(tǒng)時鐘;RSTn復(fù)位信號;Rx_EN_Sig通信使能信號。Rx_Pin_In串口數(shù)據(jù)輸入。輸出信號:SEG7:0數(shù)碼管段選信號;CON7:0數(shù)碼管位選信號。三、 實驗步驟1、整個系統(tǒng)主要設(shè)計的模塊是:幀
4、監(jiān)測開始模塊(detect_module)、數(shù)據(jù)位中心定位模塊(Rx_Rbps_module)、數(shù)據(jù)裝載模塊(Rx_Control_module)和數(shù)碼管顯示模塊(display_module)。接下來進行進行分模塊設(shè)計。2、幀監(jiān)測開始模塊(detect_module)檢測串行輸入數(shù)據(jù)RX_Pin_In的值,判斷是否開始傳送一幀的數(shù)據(jù)。并將判斷結(jié)果H2L_Sig輸送給數(shù)據(jù)裝載模塊(Rx_Control_module)。模塊結(jié)構(gòu)圖如圖2:圖2 幀監(jiān)測開始模塊3、數(shù)據(jù)位中心定位模塊(Rx_Rbps_module)為了穩(wěn)定采集串口數(shù)據(jù)幀的數(shù)據(jù),需要在每位數(shù)據(jù)的“中間時刻”采樣,所以需要一個該模塊用來
5、檢測每一位數(shù)據(jù)的持續(xù)時間的“中間時刻”。該模塊原理為:當(dāng)接收到數(shù)據(jù)裝載模塊傳來的一個“當(dāng)前數(shù)據(jù)有效(Count_Sig = 1)”的信號時開始計數(shù),一直計數(shù)到該數(shù)據(jù)持續(xù)時間的一半時便發(fā)送一個確認信號(BPS_CLK = 1)給數(shù)據(jù)裝載模塊,提示其開始進行數(shù)據(jù)采集。模塊結(jié)構(gòu)圖如圖3:圖3 數(shù)據(jù)位中心定位模塊4、數(shù)據(jù)裝載模塊(Rx_Control_module)該模塊用來接收自串口發(fā)送來的數(shù)據(jù),并進行判斷,將8位數(shù)據(jù)裝載到寄存器中。并且在每接收完一幀數(shù)據(jù)時給顯示模塊一個確認信號(RX_Done_Sig=1),讓數(shù)碼管更新顯示。模塊結(jié)構(gòu)圖如圖4:圖4 數(shù)據(jù)裝載模塊5、數(shù)碼管顯示模塊(display_
6、module)在接收到來自數(shù)據(jù)裝載模塊發(fā)送的數(shù)據(jù)接收完畢的信號之后,將接收到的數(shù)據(jù)按位顯示到每一位數(shù)碼管上。模塊結(jié)構(gòu)圖如圖5:圖5 數(shù)碼管顯示模塊6、頂層模塊(top)對各個模塊進行仿真驗證,確認無誤后。例化各個模塊并將它們連接到一起。則系統(tǒng)結(jié)構(gòu)圖如圖6:圖6 系統(tǒng)結(jié)構(gòu)圖7、根據(jù)板子鎖定引腳,并生成下載文件。CLK為系統(tǒng)40M時鐘即是P82腳;RSTn復(fù)位信號選擇撥碼開關(guān)1,即P20腳;Rx_EN_Sig使能信號選擇撥碼開關(guān)2,即P26腳;Rx_Pin_In為串口0的RX端,即P14;CON0:7數(shù)碼管位選信號鎖定對應(yīng)的數(shù)碼管共陽端引腳,LED0:7即選擇對應(yīng)的數(shù)碼管腳鎖定即可。四、 實驗結(jié)果
7、1、數(shù)據(jù)裝載模塊(Rx_Control_module)與數(shù)據(jù)位中心定位模塊(Rx_Rbps_module)連接仿真測試激勵文件的編寫應(yīng)該首先產(chǎn)生40M的CLK時鐘信號,然后復(fù)位信號無效,使能信號有效,幀開始信號H2L_Sig有效。然后再每104166個時鐘給Rx_Pin_In一個值,該激勵文件給定的值為:1001 0101。圖7 數(shù)據(jù)裝載波形圖由圖可知,模塊實現(xiàn)了依次將數(shù)據(jù)1001 0101裝載到寄存器Rx_Data7:0里。2、數(shù)碼管顯示模塊(display_module)激勵文件的編寫應(yīng)該為首先產(chǎn)生一個40M的CLK時鐘信號,然后復(fù)位信號無效,幀數(shù)據(jù)接收完畢即Rx_Done_Sig = 1
8、。給一個Rx_Data7:0賦一個值,看是否顯示正確,即通過CON7:0和SEG7:0聯(lián)立觀察。圖8 數(shù)碼管顯示由圖形可知,給Rx_Data7:0賦值為1111 1101。在看CON7:0和SEG7:0,數(shù)碼管1顯示的為1,數(shù)碼管2顯示的為0,數(shù)碼管3數(shù)碼管7都顯示的為1,故模塊設(shè)計無誤。3、下載到實驗板上面后的結(jié)果將撥動開關(guān)0和1都撥動到上方,即為高電平時。數(shù)碼管初始顯示為0。連接好串口線,打開串口助手,打開串口以十六進制的方式發(fā)送兩位數(shù)據(jù)如11。此時下載板上的數(shù)碼管顯示為00010001,即是十六進制的數(shù)據(jù)11對應(yīng)的二進制下的數(shù)據(jù)。圖9 數(shù)碼管顯示4、VGA下載實驗效果下載后,將板子的VG
9、A線連接顯示器上面。顯示器顯示如圖10所示,撥動撥碼開關(guān)0,顯示器顯示另一張圖形如圖11所示。圖10 VGA顯示圖11 VGA顯示五、 思考題1、簡述幀開始監(jiān)測模塊(detect_module),數(shù)據(jù)位中心定位模塊(rx_bps_module),數(shù)據(jù)裝載模塊(rx_control_module)的功能各是什么?這三個模塊是如何配合實現(xiàn)了串口數(shù)據(jù)的接收?答:幀開始檢測模塊的功能是檢測該數(shù)據(jù)傳送的位數(shù);數(shù)據(jù)位中心定位模塊的功能是從數(shù)據(jù)的穩(wěn)定狀態(tài)提取數(shù)據(jù);數(shù)據(jù)裝載模塊的功能是將取得的完整的數(shù)據(jù)傳輸給FPGA顯示。2、如果串口比特率改為115200 bps,代碼應(yīng)該做怎樣的修改?module rx_b
10、ps_module(CLK, RSTn,Count_Sig,BPS_CLK );input CLK;input RSTn;input Count_Sig;output BPS_CLK;reg 11:0Count_BPS;always ( posedge CLK or negedge RSTn )if( !RSTn ) Count_BPS <= 8'd0;else if( Count_BPS = 8'd173 )Count_BPS <= 8'd0;else if( Count_Sig ) Count_BPS <= Count_BPS + 1'b1
11、; else Count_BPS <= 8'd0;assign BPS_CLK = ( Count_BPS = 12'd1041 ) ? 1'b1 : 1'b0;endmodule3、如果要設(shè)計串口數(shù)據(jù)發(fā)送模塊,該如何設(shè)計,簡要寫出設(shè)計系統(tǒng)任務(wù)書(包括設(shè)計目標(biāo),功能模塊劃分,子模塊功能描述等)答:串口數(shù)據(jù)發(fā)送模塊設(shè)計目的:通過在FPGA板上輸入數(shù)據(jù),然后在電腦的串口端顯示數(shù)據(jù);功能模塊劃分:按鍵(作為數(shù)據(jù)的輸入),數(shù)碼管(顯示當(dāng)前數(shù)據(jù)用于比較電腦端接受的數(shù)據(jù)是否正確),狀態(tài)接受(處于某個狀態(tài)時數(shù)據(jù)的狀態(tài)),分頻模塊。六、 代碼1、頂層模塊代碼:timesc
12、ale 1ns / 1psmodule top(CLK,RSTn,Rx_EN_Sig,Rx_Pin_In,SEG,CON);input CLK;input RSTn;input Rx_EN_Sig;input Rx_Pin_In;output 7:0 SEG;output 7:0 CON;wire H2L_Sig;wire Count_Sig;wire BPS_CLK;wire Rx_Done_Sig;wire 7:0 Rx_Data;detect_module detect(.CLK(CLK),.RSTn(RSTn),.Rx_Pin_In(Rx_Pin_In),.H2L_Sig(H2L_Si
13、g);Rx_Control_module Rx_Control(.CLK(CLK),.RSTn(RSTn).H2L_Sig(H2L_Sig),.Rx_Pin_In(Rx_Pin_In),.BPS_CLK(BPS_CLK), .Rx_EN_Sig(Rx_EN_Sig),.Count_Sig(Count_Sig),.Rx_Data(Rx_Data),.Rx_Done_Sig(Rx_Done_Sig);Rx_bps_module Rx_bps(.CLK(CLK),.RSTn(RSTn),.Count_Sig(Count_Sig),.BPS_CLK(BPS_CLK);display_module di
14、splay(.CLK(CLK),.RSTn(RSTn),.Rx_Done_Sig(Rx_Done_Sig),.Rx_Data(Rx_Data),.SEG(SEG),.CON(CON);endmodule2、幀監(jiān)測開始模塊(detect_module):timescale 1ns / 1ps/幀開始監(jiān)測模塊(detect_module)module detect_module(CLK,RSTn,Rx_Pin_In,H2L_Sig);input CLK;input RSTn; /復(fù)位信號input Rx_Pin_In; /串行輸入數(shù)據(jù)RX_Pin_Inoutput H2L_Sig; reg H2L
15、_F1;reg H2L_F2; always ( posedge CLK or negedge RSTn )if( !RSTn )beginH2L_F1 <= 1'b1;H2L_F2 <= 1'b1;endelsebeginH2L_F1 <= Rx_Pin_In;H2L_F2 <= H2L_F1; endassign H2L_Sig = H2L_F2 & !H2L_F1;endmodule3、數(shù)據(jù)位中心定位模塊(Rx_Rbps_module):timescale 1ns / 1ps/數(shù)據(jù)位中心定位模塊(Rx_Rbps_module)module
16、Rx_bps_module(CLK,RSTn,Count_Sig,BPS_CLK);input CLK;input RSTn; /復(fù)位信號 RSTn,當(dāng)RSTn=0,系統(tǒng)復(fù)位input Count_Sig; /串口數(shù)據(jù)幀開始確認信號:Count_Sig,當(dāng) Count_Sig=1, /表示串口輸入幀開始時刻,持續(xù)一個系統(tǒng)時鐘周期output BPS_CLK; /BPS_CLK,當(dāng)計數(shù)至每一位的中間位置,BPS_CLK=1, /提示信號采集時間到,否則不進行信號采集reg 12:0Count_BPS;parameter12:0 BPS = 13'd4167; /2083*2(40Mhz)
17、always ( posedge CLK or negedge RSTn )if( !RSTn )Count_BPS <= 13'd0; /計數(shù)else if( Count_BPS = BPS )Count_BPS <= 13'd0;else if( Count_Sig )Count_BPS <= Count_BPS + 1'b1;elseCount_BPS <= 13'd0;assign BPS_CLK = ( Count_BPS = BPS/2 ) ? 1'b1 : 1'b0; endmodule4、數(shù)據(jù)裝載模塊(Rx
18、_Control_module):timescale 1ns / 1ps/數(shù)據(jù)裝載模塊(Rx_Control_module)module Rx_Control_module(CLK,RSTn,H2L_Sig,Rx_Pin_In,BPS_CLK,Rx_EN_Sig,Count_Sig,Rx_Data,Rx_Done_Sig);input CLK;input RSTn; /復(fù)位信號 RSTn,當(dāng)RSTn=0時,系統(tǒng)復(fù)位input H2L_Sig; /幀開始信號H2L_Sig,當(dāng)H2L_Sig=1,表示一幀信號開始input Rx_EN_Sig; /串口接收使能信號 RX_En_Sig,/當(dāng)RX_E
19、n_Sig=1,系統(tǒng)正常工作。反正不接收數(shù)據(jù)input Rx_Pin_In; /串口數(shù)據(jù)輸入信號: RX_Pin_Ininput BPS_CLK; /位中心定位信號:BPS_CLKoutput Count_Sig; /數(shù)據(jù)位有效信號 Count_Sig,/當(dāng)Count_Sig=1,表示有效位傳輸output 7:0 Rx_Data;/裝載好的串口數(shù)據(jù):RX_Data,位寬為8bitsoutput Rx_Done_Sig; /串口數(shù)據(jù)接收結(jié)束信號: RX_Done_Sig, /當(dāng)RX_Done_Sig=1表示一幀串口數(shù)據(jù)接收完畢reg 3:0i = 4'b0;reg 7:0rData =
20、 8'd0;reg isCount = 1'b0;reg isDone = 1'b0;always ( posedge CLK or negedge RSTn )if( !RSTn )begini <= 4'd0;rData <= 8'd0;isCount <= 1'b0;isDone <= 1'b0;endelse if(Rx_EN_Sig )case ( i )4'd0 :if( H2L_Sig ) begin i <= i + 1'b1; isCount <= 1'b1;
21、end4'd1 :if( BPS_CLK ) begin i <= i + 1'b1; end4'd2, 4'd3, 4'd4, 4'd5, 4'd6, 4'd7, 4'd8, 4'd9 :if( BPS_CLK ) begin i<=i+1'b1;rDatai-2<=Rx_Pin_In;end4'd10 :if( BPS_CLK ) begin i <= i + 1'b1; end4'd11 :if( BPS_CLK ) begin i <= i +
22、1'b1; end4'd12 :begin I<= i + 1'b1; isDone<= 1'b1; isCount<= 1'b0; end4'd13 :begin i <= 1'b0; isDone <= 1'b0; endendcaseassign Count_Sig = isCount;assign Rx_Data = rData;assign Rx_Done_Sig = isDone;endmodule5、數(shù)碼管顯示模塊(display_module):timescale 1ns / 1ps/
23、顯示模塊(display_module)module display_module(CLK,RSTn,Rx_Done_Sig,Rx_Data,SEG,CON);input CLK;input RSTn;input Rx_Done_Sig; /串口數(shù)據(jù)接收結(jié)束信號: RX_Done_Sig, /當(dāng)RX_Done_Sig=1表示一幀串口數(shù)據(jù)接收完畢input7:0 Rx_Data; /裝載好的串口數(shù)據(jù):RX_Data,位寬為8bitsoutput7:0 SEG;output7:0 CON;reg7:0 SEG;reg7:0 CON;reg23:0 CNT;reg2:0 dig;always (po
24、sedge CLK or negedge RSTn)if(!RSTn) begindig <= 3'b000;CNT <= 24'b0;endelse beginif(CNT = 24'd25000)beginCNT <= 24'b0;if(dig = 3'd7)dig <= 3'd0;elsedig <= dig + 1'b1;endelseCNT <= CNT + 1'b1;endreg 7:0 Data = 8'b00000000; /數(shù)據(jù)寄存器/Rx_Done_Sig信號上升沿來
25、到時將串口接收到的數(shù)據(jù)送給Dataalways (posedge Rx_Done_Sig) Data <= Rx_Data;always (posedge CLK or negedge RSTn)if(!RSTn) beginSEG <= 8'b1000000;CON <= 8'b11111111;endelsecase(dig)3'd0 : begin SEG<= display(Data0);CON <= 8'b1111_1110;end3'd1 : begin SEG<= display(Data1);CON <= 8'b1111_1101;end3'd2 : begin SEG<= display(Data2);CON <= 8'b1111_1011;end3'd3 : begin SEG<= display(Data3);CON <= 8'b1111_0111;end3'd4 : begin SEG<= display(Data4);CON <= 8'b1110_1111;end3'd5 : begin SEG<= display(Data5
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 行政管理人員的職業(yè)素養(yǎng)考核試題及答案
- 農(nóng)村水資源保護利用協(xié)議
- 行政管理中的領(lǐng)導(dǎo)溝通試題及答案
- 2024-2025學(xué)年高中歷史第二單元近代中國的反侵略反封建斗爭第10課新民主主義革命的勝利學(xué)案含解析北師大版必修1
- 行政文書的效能評估與優(yōu)化措施試題及答案
- 行政管理中的社會參與試題及答案
- 2025合作伙伴協(xié)議合同書
- 公文寫作規(guī)范的遵循及試題及答案
- 2025年苗木購銷合同紅心獼猴桃空白模板
- 2025【合同協(xié)議范本】采購合同范本模板
- TCECS24-2020鋼結(jié)構(gòu)防火涂料應(yīng)用技術(shù)規(guī)程
- 《電工與電子技術(shù)》期末考試復(fù)習(xí)題庫(含答案)
- 2024年廣東省普通高中學(xué)業(yè)水平合格性地理試卷(1月份)
- 國測省測四年級勞動質(zhì)量檢測試卷
- 《林草種子生產(chǎn)經(jīng)營許可證》申請表(種子類、苗木類)空表
- 高中化學(xué)方程式大全(看完高考絕對給力)
- (完整版)危重患者的護理常規(guī)
- 7.輪胎定型硫化機ppt課件
- 以早夕會經(jīng)營為核心的活動量管理
- 番茄打漿機畢業(yè)設(shè)計
- 上海市成山路MJS專項施工方案
評論
0/150
提交評論