fpga串口通信的verilog驅(qū)動(dòng)編程解析_第1頁(yè)
fpga串口通信的verilog驅(qū)動(dòng)編程解析_第2頁(yè)
fpga串口通信的verilog驅(qū)動(dòng)編程解析_第3頁(yè)
fpga串口通信的verilog驅(qū)動(dòng)編程解析_第4頁(yè)
fpga串口通信的verilog驅(qū)動(dòng)編程解析_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

fpga串口通信的verilog驅(qū)動(dòng)編程解析串口的全程為串行接口,也稱(chēng)為串行通信接口,是采用串行通信方式的擴(kuò)展接口。與串口對(duì)應(yīng)的并行接口,例如高速AD和DA,這些都是用的并行接口,而且在編程也簡(jiǎn)單一些。串口有一下特點(diǎn):(1)通信線(xiàn)路簡(jiǎn)單,只要一對(duì)傳輸線(xiàn)就可以實(shí)現(xiàn)雙向通信。(2)布線(xiàn)簡(jiǎn)單,成本低。(3)通信距離長(zhǎng),可以實(shí)現(xiàn)數(shù)米到數(shù)千米的通信距離。(4)傳輸速率慢。常見(jiàn)的串口速率如4800,9600,115200bps,代表每秒鐘發(fā)送多少bit數(shù)據(jù),例如9600bps就代表1秒內(nèi)發(fā)送9600bit數(shù)據(jù)。串口協(xié)議:協(xié)議比較簡(jiǎn)單,一般都是10位數(shù)據(jù),1個(gè)起始位低電平,然后八個(gè)數(shù)據(jù)位,低位在前,一個(gè)奇偶校驗(yàn)位,平時(shí)一般不用,最后是一位停止位高電平,這樣一幀數(shù)據(jù)發(fā)送結(jié)束。下面介紹一下我的程序框架:整體框架分為兩個(gè)部分:一個(gè)是串口驅(qū)動(dòng)部分另一個(gè)是串口數(shù)據(jù)控制部分。串口驅(qū)動(dòng)部分負(fù)責(zé)串口驅(qū)動(dòng)和波特率的選擇,串口數(shù)據(jù)控制模塊負(fù)責(zé)控制數(shù)據(jù)內(nèi)容的控制和發(fā)送速度的控制。從上面時(shí)序圖可以看出,每10ms發(fā)送一幀數(shù)據(jù),這里data_en負(fù)責(zé)波特率驅(qū)動(dòng)使能,uart_tx_end有兩個(gè)功能,一個(gè)是關(guān)閉data_en使能,另一個(gè)是給10ms計(jì)數(shù)器清零。/*-----------------------------------------------------------------------Date:2017-09-03Description:Designforuart_driver.-----------------------------------------------------------------------*/moduleuart_tx_driver(//globalclockinputclk,//systemclockinputrst_n,//syncreset//uartinterfaceoutputreguart_tx,//userinterfaceinput[1:0]bps_select,//波特率選擇input[7:0]uart_data,inputdata_en,//發(fā)送數(shù)據(jù)使能outputreguart_tx_end);//--------------------------------//Funtion:參數(shù)定義parameterBPS_4800=14'd10417,BPS_9600=14'd5208,BPS_115200=14'd434;reg[13:0]cnt_bps_clk;reg[13:0]bps;regbps_clk_en;//bps使能時(shí)鐘reg[3:0]bps_cnt;wire[13:0]BPS_CLK_V=bps>>1;//--------------------------------//Funtion:波特率選擇always@(posedgeclkornegedgerst_n)beginif(!rst_n)bps<=1'd0;elseif(bps_select==2'd0)bps<=BPS_115200;elseif(bps_select==2'd1)bps<=BPS_9600;elsebps<=BPS_4800;end//--------------------------------//Funtion:波特率計(jì)數(shù)always@(posedgeclkornegedgerst_n)beginif(!rst_n)cnt_bps_clk<=1'd0;elseif(cnt_bps_clk>=bps-1&&data_en==1'b0)cnt_bps_clk<=1'd0;elsecnt_bps_clk<=cnt_bps_clk+1'd1;end//--------------------------------//Funtion:波特率使能時(shí)鐘always@(posedgeclkornegedgerst_n)beginif(!rst_n)bps_clk_en<=1'd0;elseif(cnt_bps_clk==BPS_CLK_V-1)bps_clk_en<=1'd1;elsebps_clk_en<=1'd0;end//--------------------------------//Funtion:波特率幀計(jì)數(shù)always@(posedgeclkornegedgerst_n)beginif(!rst_n)bps_cnt<=1'd0;elseif(bps_cnt==11)bps_cnt<=1'd0;elseif(bps_clk_en)bps_cnt<=bps_cnt+1'd1;end//--------------------------------//Funtion:uart_tx_endalways@(posedgeclkornegedgerst_n)beginif(!rst_n)uart_tx_end<=1'd0;elseif(bps_cnt==11)uart_tx_end<=1'd1;elseuart_tx_end<=1'd0;end//--------------------------------//Funtion:發(fā)送數(shù)據(jù)always@(posedgeclkornegedgerst_n)beginif(!rst_n)uart_tx<=1'd1;elsecase(bps_cnt)4'd0:uart_tx<=1'd1;4'd1:uart_tx<=1'd0;//begin4'd2:uart_tx<=uart_data[0];//data4'd3:uart_tx<=uart_data[1];4'd4:uart_tx<=uart_data[2];4'd5:uart_tx<=uart_data[3];4'd6:uart_tx<=uart_data[4];4'd7:uart_tx<=uart_data[5];4'd8:uart_tx<=uart_data[6];4'd9:uart_tx<=uart_data[7];4'd10:uart_tx<=1;//stopdefault:uart_tx<=1;endcaseendendmodule/*-----------------------------------------------------------------------Date:2017-XX-XXDescription:Designfor.-----------------------------------------------------------------------*/moduleuart_tx_control(//globalclockinputclk,//systemclockinputrst_n,//syncreset//userinterfaceoutputreg[7:0]uart_data,outputregdata_en,inputuart_tx_end);//--------------------------------//Funtion:參數(shù)定義parameterDELAY_10MS=500_000;reg[31:0]cnt_10ms;wiredelay_10ms_done;//datadefinereg[31:0]cnt_1s;//--------------------------------//Funtion:cnt_10msalways@(posedgeclkornegedgerst_n)beginif(!rst_n)cnt_10ms<=1'd0;elseif(cnt_10ms==DELAY_10MS-1&&uart_tx_end==1'd1)cnt_10ms<=1'd0;elsecnt_10ms<=cnt_10ms+1'd1;endassigndelay_10ms_done=(cnt_10ms==DELAY_10MS-1)?1'd1:1'd0;//--------------------------------//Funtion:data_enalways@(posedgeclkornegedgerst_n)beginif(!rst_n)data_en<=1'd0;elseif(delay_10ms_done)data_en<=1'd1;elseif(uart_tx_end)data_en<=1'd0;end///////////////////////數(shù)據(jù)測(cè)試///////////////////////////////--------------------------------//Funtion:cnt_1salways@(posedgeclkornegedgerst_n)beginif(!rst_n)cnt_1s<=1'd0;elseif(cnt_1s==49_999_999)cnt_1s<=1'd0;elsecnt_1s<=cnt_1s+1'

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論