實(shí)驗(yàn)四串口接收模塊電路設(shè)計(jì)_第1頁
實(shí)驗(yàn)四串口接收模塊電路設(shè)計(jì)_第2頁
實(shí)驗(yàn)四串口接收模塊電路設(shè)計(jì)_第3頁
實(shí)驗(yàn)四串口接收模塊電路設(shè)計(jì)_第4頁
實(shí)驗(yàn)四串口接收模塊電路設(shè)計(jì)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

實(shí)驗(yàn)四串口接收模塊電路設(shè)計(jì)一、實(shí)驗(yàn)?zāi)康模?、嫻熟使用ISE設(shè)計(jì)工具。2、理解串口授輸協(xié)議。理解采納“自頂向下”設(shè)計(jì)思路,分解模塊的方法。3、在ISE使用VerilogHDL設(shè)計(jì)串口接收模塊,達(dá)成仿真、下載。二、原理剖析(一)串口授輸協(xié)議概括設(shè)計(jì)達(dá)成異步串口通信通用異步收發(fā)是一種典型的異步串口通信,簡稱UART。串口通信時(shí)序如圖1所示。圖1通用異步收發(fā)時(shí)序圖由圖1能夠看出,在沒有數(shù)據(jù)傳遞時(shí),通信線會(huì)向來處于高電平,即邏輯1狀態(tài);當(dāng)有數(shù)據(jù)傳遞時(shí),數(shù)據(jù)幀以開端位開始,以停止位結(jié)束。開端位為低電平,即邏輯0狀態(tài);停止位為高電平,即邏輯1狀態(tài),其連續(xù)時(shí)間可選為1位、1.5位或2位(本次設(shè)計(jì)選擇連續(xù)時(shí)間1位)。接收端在接收到停止位后,知道一幀數(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è)計(jì)數(shù)據(jù)位定位8位)。校驗(yàn)位也可依據(jù)需要選擇奇校驗(yàn)、偶校驗(yàn)或許不要校驗(yàn)(本次設(shè)計(jì)不要校驗(yàn)位)。(二)串口時(shí)序剖析串口通信常用“波特率”表述串口授輸速率,常用的參數(shù)有9600bps和115200bps等。在硬件傳輸角度看,波特率表征了傳輸一位數(shù)據(jù)所需要的時(shí)間。比如:波特率是9600bps,傳輸一位數(shù)據(jù)的時(shí)間是秒。假如FPGA系統(tǒng)時(shí)鐘是20MHZ,則一位數(shù)據(jù)傳輸時(shí)間相當(dāng)于(1/9600)/(1/20M)=2083個(gè)20MHZ時(shí)鐘周期。設(shè)一幀數(shù)據(jù)位數(shù)=1(開始位)+8(數(shù)據(jù)位)+1(校驗(yàn)位)+1(結(jié)束位)=11位,因此傳輸一幀數(shù)據(jù)的時(shí)間是秒。為了穩(wěn)固收集串口數(shù)據(jù)幀的數(shù)據(jù),需要在每位數(shù)據(jù)的“中間時(shí)刻”采樣,由此,需要在每位數(shù)據(jù)開始時(shí)刻對(duì)時(shí)鐘進(jìn)行計(jì)數(shù),若系統(tǒng)時(shí)鐘是20MHZ,則在計(jì)數(shù)至2083/2=1042時(shí)采樣此時(shí)刻的數(shù)值。三、系統(tǒng)剖析:為實(shí)現(xiàn)串口接收電路,F(xiàn)PGA應(yīng)當(dāng)達(dá)成:1、實(shí)時(shí)發(fā)現(xiàn)數(shù)據(jù)傳輸?shù)拈_始,并判斷每一位的開始。2、依據(jù)“在數(shù)據(jù)位中間采樣”的要求,確認(rèn)采樣時(shí)刻。3、將采樣獲得串行數(shù)據(jù)變換為并行數(shù)據(jù)。4、將并行數(shù)據(jù)顯示在下載板上。本次實(shí)驗(yàn)參數(shù):串口授輸數(shù)據(jù)率9600bps,每幀數(shù)據(jù)11位。依據(jù)“自頂向下”設(shè)計(jì)思想,系統(tǒng)分為以下五個(gè)子模塊:1、幀開始監(jiān)測(cè)模塊(detect_module)輸入端口:串行輸入數(shù)據(jù)RX_Pin_In,系統(tǒng)時(shí)鐘CLK,復(fù)位信號(hào)RSTn,此中當(dāng)RSTn=0時(shí)系統(tǒng)復(fù)位。輸出端口:H2L_Sig參照代碼:moduledetect_module(CLK,RSTn,RX_Pin_In,H2L_Sig);inputCLK;inputRSTn;inputRX_Pin_In;outputH2L_Sig;regH2L_F1;regH2L_F2;always@(posedgeCLKornegedgeRSTn)if(!RSTn)beginH2L_F1<=1'b1;H2L_F2<=1'b1;endelsebeginH2L_F1<=RX_Pin_In;H2L_F2<=H2L_F1;endassignH2L_Sig=H2L_F2&!H2L_F1;endmodule2、數(shù)據(jù)位中心定位模塊(rx_bps_module)輸入端口:系統(tǒng)時(shí)鐘CLK;復(fù)位信號(hào)RSTn,當(dāng)RSTn=0,系統(tǒng)復(fù)位;數(shù)據(jù)位有效信號(hào)Count_Sig,當(dāng)Count_Sig=1,表示有效位傳輸。輸出端口:BPS_CLK,當(dāng)計(jì)數(shù)至每一位的中間地點(diǎn),BPS_CLK=1,提示信號(hào)收集時(shí)間到,不然不進(jìn)行信號(hào)收集。設(shè)系統(tǒng)時(shí)鐘20MHZ,則參照代碼以下:modulerx_bps_module(CLK,RSTn,Count_Sig,BPS_CLK);inputCLK;inputRSTn;inputCount_Sig;outputBPS_CLK;reg[11:0]Count_BPS;always@(posedgeCLKornegedgeRSTn)if(!RSTn)Count_BPS<=12'd0;elseif(Count_BPS==12'd2082)Count_BPS<=12'd0;elseif(Count_Sig)Count_BPS<=Count_BPS+1'b1;elseCount_BPS<=12'd0;assignBPS_CLK=(Count_BPS==12'd1041)?1'b1:1'b0;endmodule3、數(shù)據(jù)裝載模塊(rx_control_module)輸入端口:系統(tǒng)時(shí)鐘CLK,復(fù)位信號(hào)RSTn,當(dāng)RSTn=0時(shí),系統(tǒng)復(fù)位幀開始信號(hào)H2L_Sig,當(dāng)H2L_Sig=1,表示一幀信號(hào)開始;串口數(shù)據(jù)輸入信號(hào):RX_Pin_In,位中心定位信號(hào):BPS_CLK,串口接收使能信號(hào)RX_En_Sig,當(dāng)RX_En_Sig=1,系統(tǒng)正常工作。反正不接收數(shù)據(jù)。輸出端口:串口數(shù)據(jù)幀開始確認(rèn)信號(hào):Count_Sig,當(dāng)Count_Sig=1,表示串口輸入幀開始時(shí)刻,連續(xù)一個(gè)系統(tǒng)時(shí)鐘周期。裝載好的串口數(shù)據(jù):RX_Data,位寬為8bits串口數(shù)據(jù)接收結(jié)束信號(hào):RX_Done_Sig,當(dāng)RX_Done_Sig=1,表示一幀串口數(shù)據(jù)接收完成。參照代碼:modulerx_control_module(CLK,RSTn,H2L_Sig,RX_Pin_In,BPS_CLK,RX_En_Sig,Count_Sig,RX_Data,RX_Done_Sig);inputCLK;inputRSTn;inputH2L_Sig;inputRX_En_Sig;inputRX_Pin_In;inputBPS_CLK;outputCount_Sig;output[7:0]RX_Data;outputRX_Done_Sig;reg[3:0]i;reg[7:0]rData;regisCount;regisDone;always@(posedgeCLKornegedgeRSTn)if(!RSTn)begini<=4'd0;rData<=8'd0;isCount<=1'b0;isDone<=1'b0;endelseif(RX_En_Sig)case(i)4'd0:if(H2L_Sig)begini<=i+1'b1;isCount<=1'b1;end4'd1:if(BPS_CLK)begini<=i+1'b1;end4'd2,4'd3,4'd4,4'd5,4'd6,4'd7,4'd8,4'd9:if(BPS_CLK)begini<=i+1'b1;rData[i-2]<=RX_Pin_In;end4'd10:if(BPS_CLK)begini<=i+1'b1;end4'd11:if(BPS_CLK)begini<=i+1'b1;end4'd12:begini<=i+1'b1;isDone<=1'b1;isCount<=1'b0;end4'd13:begini<=1'b0;isDone<=1'b0;endendcaseassignCount_Sig=isCount;assignRX_Data=rData;assignRX_Done_Sig=isDone;endmodule這一代碼采納有限狀態(tài)機(jī)方式,在監(jiān)測(cè)到串口數(shù)據(jù)幀開始時(shí)刻,假如系統(tǒng)接收使能信號(hào)有效,睜開對(duì)串口輸入的幾個(gè)階段:幀開始,有效幀數(shù)據(jù)接收,接收幀校驗(yàn)位,接收幀結(jié)束位,一幀接收結(jié)束,轉(zhuǎn)回幀開始狀態(tài)。4、顯示模塊(display)輸入端口:sum,從串口接收到的8bits的一幀數(shù)據(jù)輸出端口:自定義本模塊依據(jù)下載板的資源,將接收到的8bits數(shù)據(jù)顯示出來,能夠采納數(shù)碼管,發(fā)光二極管等。5、頂層模塊(top)將以上4個(gè)模塊合理組合,組成一個(gè)系統(tǒng)。四、實(shí)驗(yàn)內(nèi)容:1.在理解串口協(xié)議2.采納VerilogHDL,設(shè)計(jì)分頻模塊,將下載板上40MHz時(shí)鐘變換為所需要的20MHZ時(shí)鐘。剖析幀開始監(jiān)測(cè)模塊(detect_module),數(shù)據(jù)位中心定位模塊(rx_bps_module),數(shù)據(jù)裝載模塊(rx_control_module)的功能,達(dá)成:幀開始監(jiān)測(cè)模塊(detect_module),數(shù)據(jù)裝載模塊(rx_control_module)兩個(gè)模塊的功能仿真。4.依據(jù)下載板資源,設(shè)計(jì)數(shù)據(jù)顯示方案,并設(shè)計(jì)display.v模塊并仿真。5.在理解各個(gè)參照代碼基礎(chǔ)上,畫出系統(tǒng)模塊連結(jié)圖,達(dá)成頂層模塊top.v的設(shè)計(jì)。6、依據(jù)下載板資源,鎖定引腳,編譯適配以上文件,最后進(jìn)行下載和硬件測(cè)試。四、思慮題:1、簡述幀開始監(jiān)測(cè)模塊(detect_module),數(shù)據(jù)位中心定位模塊(rx_bps_module),數(shù)據(jù)裝載模塊(rx_control_module)的功能各是什么?這三個(gè)模塊是如何配合實(shí)現(xiàn)了串口數(shù)據(jù)的接收?2、假如

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論