



下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Verilog實(shí)現(xiàn)UART之一:接收模塊異步串行數(shù)據(jù)的一般格式是:起始位+數(shù)據(jù)位+停止位,其中起始位1位,8位數(shù)據(jù)位,奇校驗(yàn)、偶校驗(yàn)或無(wú)校驗(yàn)位;停止位可以是1、2位,LSBfirst:2.接收原理:由于UART是異步傳輸,沒(méi)有傳輸同步時(shí)鐘。為了能保證數(shù)據(jù)傳輸?shù)恼_性,采樣模塊利用16倍數(shù)據(jù)波特率的時(shí)鐘進(jìn)行采樣,假設(shè)波特率為115200,則采樣時(shí)鐘為clk16x=115200×16。每個(gè)數(shù)據(jù)占據(jù)16個(gè)采樣時(shí)鐘周期,1bit起始位+8bit數(shù)據(jù)為+1bit停止位=10bit,因此一幀共占據(jù)16×10=160個(gè)采樣時(shí)鐘,考慮到每個(gè)數(shù)據(jù)為可能有1-2個(gè)采樣時(shí)鐘周期的便宜,因此將各個(gè)數(shù)據(jù)位的中間時(shí)刻作為采樣點(diǎn),以保證采樣不會(huì)滑碼或誤碼。一般UART一幀的數(shù)據(jù)位數(shù)為8,這樣即使每個(gè)數(shù)據(jù)有一個(gè)時(shí)鐘的誤差,接收端也能正確地采樣到數(shù)據(jù)。因此,采樣時(shí)刻為24(跳過(guò)起始位的16個(gè)時(shí)鐘)、40、56、72、88、104、120、136、152(停止位),如下圖所示:其中,RX為接收引腳,CNT為對(duì)采樣時(shí)鐘進(jìn)行計(jì)數(shù)的計(jì)數(shù)器;3.代碼實(shí)現(xiàn):
/******************************************************************************
*
*Module:rx_module
*FileName:rx_module.v
*Author:JC_Wang
*Version:1.0
*Date:2012/12/5
*Description:UART接收模塊
*
*
********************************************************************************/modulerx_module(
inputGClk,/*systemtopestclock*/
inputclk16x,/*sampleclock,16×115200*/
inputrst_n,/*glabolresetsignal*/
inputrx,/*serialdatain*/
outputregDataReady,/*acompletebytehasbeenreceived*/
outputreg[7:0]DataReceived/*Bytesreceived*/
);/*捕獲rx的下降沿,即起始信號(hào)*/
regtrigger_r0;
wireneg_tri;
always@(posedgeGClkornegedgerst_n)/*下降沿使用全局時(shí)鐘來(lái)捕獲的,其實(shí)用clk16x來(lái)捕獲也可以*/
begin
if(!rst_n)
begin
trigger_r0<=1'b0;
end
else
begin
trigger_r0<=rx;
end
endassignneg_tri=trigger_r0&~rx;//----------------------------------------------
/*countercontrol*/
regcnt_en;
always@(posedgeGClkornegedgerst_n)
begin
if(!rst_n)
cnt_en<=1'b0;
elseif(neg_tri==1'b1)/*如果捕獲到下降沿,則開(kāi)始計(jì)數(shù)*/
cnt_en<=1'b1;
elseif(cnt==8'd152)
cnt_en<=1'b0;end
//---------------------------------------------
/*countermodule,對(duì)采樣時(shí)鐘進(jìn)行計(jì)數(shù)*/
reg[7:0]cnt;
always@(posedgeclk16xornegedgerst_n)
begin
if(!rst_n)
cnt<=8'd0;
elseif(cnt_en)
cnt<=cnt+1'b1;
else
cnt<=8'd0;end
//---------------------------------------------
/*receivemodule*/
regStopBit_r;
always@(posedgeclk16xornegedgerst_n)
begin
if(!rst_n)
begin
DataReceived<=8'b0;
end
elseif(cnt_en)
case(cnt)
8'd24:DataReceived[0]<=rx;/*在各個(gè)采樣時(shí)刻,讀取接收到的數(shù)據(jù)*/
8'd40:DataReceived[1]<=rx;
8'd56:DataReceived[2]<=rx;
8'd72:DataReceived[3]<=rx;
8'd88:DataReceived[4]<=rx;
8'd104:DataReceived[5]<=rx;
8'd120:DataReceived[6]<=rx;
8'd136:DataReceived[7]<=rx;endcaseendalways@(posedgeclk16xornegedgerst_n)
begin
if(!rst_n)
DataReady<=1'b0;
elseif(cnt==8'd152)
DataReady<=1'b1;//接收到停止位后,給出數(shù)據(jù)準(zhǔn)備好標(biāo)志位
else
DataReady<=1'b0;
endendmodule注:1)采樣時(shí)鐘clk16x必須是波特率的16倍,波特率任意設(shè)置如57600、9600等皆可,只要滿足16倍關(guān)系;2)此模塊經(jīng)過(guò)測(cè)試上萬(wàn)字節(jié)的接收,從未出錯(cuò)!3)引入了最高時(shí)鐘對(duì)起始信號(hào)下降沿進(jìn)行捕獲,會(huì)造成什么不良影響,比如所謂的“時(shí)鐘滿天飛”問(wèn)題,博主還不清楚,若您有好的講解,請(qǐng)您發(fā)鏈接給我,在此感謝!4.如果需要校驗(yàn)位的朋友,可以參考xilinx公司的參考設(shè)計(jì):
`timescale1ns/1nsmodulercvr(dout,data_ready,framing_error,parity_error,rxd,clk16x,rst,rdn);inputrxd;/*數(shù)據(jù)接收端*/
inputclk16x;/*采樣時(shí)鐘*/
inputrst;/*復(fù)位信號(hào),高電平有效*/
inputrdn;/*數(shù)據(jù)接收使能,低電平有效*/
output[7:0]dout;/*數(shù)據(jù)輸出*/
outputdata_ready;/*數(shù)據(jù)接收完畢標(biāo)志位*/
outputframing_error;/*幀錯(cuò)誤標(biāo)志位*/
outputparity_error;/*校驗(yàn)位錯(cuò)誤標(biāo)志位*/regrxd1;
regrxd2;
regclk1x_enable;
reg[3:0]clkdiv;
reg[7:0]rsr;
reg[7:0]rbr;
reg[3:
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 塑粉采購(gòu)合同塑料制品購(gòu)銷合同
- 歷史文物保護(hù)與修復(fù)技術(shù)試卷分析
- 玻璃體相關(guān)知識(shí)培訓(xùn)課件
- 港口裝卸與倉(cāng)儲(chǔ)管理作業(yè)指導(dǎo)書(shū)
- 家庭家居保潔服務(wù)合同書(shū)
- 森林碳匯項(xiàng)目開(kāi)發(fā)與合作協(xié)議
- 任務(wù)6.2.4 建筑物沉降觀測(cè)
- 安全生產(chǎn)承包的合同
- 氣象基礎(chǔ)知識(shí)培訓(xùn)課件
- 面向客戶的宣傳資料制作方案
- 紅頭文件模板(完整版)
- 不服行政復(fù)議行政起訴狀
- 工傷事故應(yīng)急預(yù)案(三篇)
- 水利工程建設(shè)監(jiān)理人員培訓(xùn)講義課件
- 歷屆 最近十年 (新知杯)上海市初中數(shù)學(xué)競(jìng)賽試卷及答案(含模擬試題及解答)
- 藥理學(xué)免疫器官和組織
- 2023年超齡員工承諾書(shū) 60歲以上員工承諾書(shū)(八篇)
- 《職場(chǎng)關(guān)系與溝通技巧》教案第15課上行溝通-與上級(jí)之間的溝通
- 四下語(yǔ)文學(xué)情分析
- 失業(yè)證明模板(通用6篇)
- 001 比較思想政治教育(第二版) 第一章
評(píng)論
0/150
提交評(píng)論