<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 詳解波特率發(fā)生器編程/計算/波特率選擇

詳解波特率發(fā)生器編程/計算/波特率選擇

作者: 時(shí)間:2017-10-14 來(lái)源:網(wǎng)絡(luò ) 收藏

  是什么

本文引用地址:http://dyxdggzs.com/article/201710/366268.htm

  在信息傳輸通道中,攜帶數據信息的信號單元叫碼元,每秒鐘通過(guò)信道傳輸的碼元數稱(chēng)為碼元傳輸速率,簡(jiǎn)稱(chēng)波特率。它用單位時(shí)間內載波調制狀態(tài)改變次數來(lái)表示。而的作用是從輸入時(shí)鐘轉換出需要的波特率clk。常用于單片機方面。每秒鐘通過(guò)信道傳輸的信息量稱(chēng)為位傳輸速率,簡(jiǎn)稱(chēng)比特率。比特率表示有效數據的傳輸速率。波特率與比特率的關(guān)系是比特率=波特率X單個(gè)調制狀態(tài)對應的二進(jìn)制位數。波特率是傳輸通道頻寬的指標。

  

  的波特率編程

  一個(gè)完整的由verilog實(shí)現的波特率發(fā)生器:

  module baud_gen(

  clk_50MHz, rst_p, bclk

 ?。?

  input clk_50MHz; /*輸入的系統時(shí)鐘,50MHz*/

  input rst_p; /*復位脈沖,高電平有效*/

  /* 倍頻值16乘以9600波特率,即9600*16=153600,得到波特率發(fā)生器的實(shí)際輸出信號頻率為153.6kbit/s */

  output bclk; // 輸出信號:UART(串口)波特率發(fā)生器輸出的時(shí)鐘脈沖,頻率:153.60kbps

  //即每秒1536000個(gè)脈沖,*波特率發(fā)生器輸出脈沖bclk,注意:除了主頻分頻之外,

  //還決定了這個(gè)信號的占空比,在本例中輸出信號占空比為 1:325

  reg bclk; //寄存器數據類(lèi)型bclk

  reg [8:0] cnt; //寄存器數據類(lèi)型cnt,9位,UART用它來(lái)記錄接收到的主頻脈沖個(gè)數,

  //注意在修改輸出波特率值時(shí),若占空比小于1:511,需要增加該變量所占位數

  //以下語(yǔ)句利用同步計數器完成時(shí)鐘分頻,

  always @(posedge clk_50MHz) begin /* 每當信號clk_50MHz發(fā)生電平變化執行以下語(yǔ)句 */

  if(rst_p) begin /* 如果復位脈沖信號為高電平執行以下語(yǔ)句 */

  cnt 《= 0; //對主頻信號計數器cnt做非阻塞方式復位賦值,賦值為邏輯0 。此后每當時(shí)鐘信號到來(lái)就變。

  bclk 《= 0; /* 寄存器變量bclk賦值為邏輯0,使該脈沖信號復位為低電平,以低電平作為開(kāi)始*/

  end

  else begin

  /* 50MHz除以153600(UART實(shí)際頻率)等于325.5 即50_000_000 /153600 = 325.5(波特率除數) */

  if(cnt 》 324) begin /*如果cnt的數值大于324,即cnt計數脈沖數等于325(0-324個(gè)脈沖)*/

  cnt 《= 0; /* 50MHz主頻信號計數器cnt值,被非阻塞方式復位*/

  bclk 《= 1; /*串口波特率時(shí)鐘脈沖信號bclk賦值為邏輯1,使該脈沖信號跳變到高電平周期*/

  end

  else begin

  cnt 《= cnt + 1; /* 50MHz主頻信號計數器cnt值被非阻塞方式增量賦值(加1) */

  bclk 《= 0; //波特率發(fā)生器時(shí)鐘脈沖信號bclk被非阻塞方式賦值為’0’,

  //使該脈沖信號跳變到低電平周期*/

  end

  end

  end

  endmodule

  

  波特率計算

  在串行通信中,收發(fā)雙方對發(fā)送或接收的數據速率要有一定的約定,我們通過(guò)軟件對MCS—51串行口編程可約定四種工作方式。其中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時(shí)器T1的溢出率決定。

  串行口的四種工作方式對應著(zhù)三種波特率。由于輸人的移位時(shí)鐘的來(lái)源不同,所以,各種方式的波特率計算公式也不同。

  一、方式0的波特率

  方式0時(shí),移位時(shí)鐘脈沖由56(即第6個(gè)狀態(tài)周期,第12個(gè)節拍)給出,即每個(gè)機器周期產(chǎn)生一個(gè)移位時(shí)鐘,發(fā)送或接收一位數據。所以,波特率為振蕩頻率的十二分之一,并不受 PCON寄存器中SMOD的影響,即: 方式0的波特率=fosc/12

  二、方式l和方式3的波特率

  方式1和方式3的移位時(shí)鐘脈沖由定時(shí)器T1的溢出率決定,故波特宰由定時(shí)器T1的 溢出率與SMOD值同時(shí)決定,即: 方式1和方式3的波特率=2SMOD/32·T1溢出率

  其中,溢出率取決于計數速率和定時(shí)器的預置值。計數速率與TMOD寄存器中C/T的狀態(tài)有關(guān)。當C/T=0時(shí),計數速率=fosc/2;當C/T=1時(shí),計數速率取決于外部輸入時(shí)鐘頻率。

  當定時(shí)器Tl作波特率發(fā)生器使用時(shí),通常選用可自動(dòng)裝入初值模式(工作方式2),在 工作方式2中,TLl作為計數用,而自動(dòng)裝入的初值放在THl中,設計數初值為x,則每過(guò)“256一x”個(gè)機器周期,定時(shí)器T1就會(huì )產(chǎn)生一次溢出。為了避免因溢出而引起中斷,此時(shí)應禁止T1中斷。

  波特率發(fā)生器的波特率選擇

  在串行通訊中,收發(fā)雙方的數據傳送率(波特率)要有一定的約定。在8051串行口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時(shí)器T1的溢出率控制。

  方式0

  方式0的波特率固定為主振頻率的1/12。

  方式2

  方式2的波特率由PCON中的選擇位SMOD來(lái)決定,可由下式表示:

  波特率=2的SMOD次方除以64再乘一個(gè)fosc,也就是當SMOD=1時(shí),波特率為1/32fosc,當SMOD=0時(shí),波特率為1/64fosc

  方式1和方式3

  定時(shí)器T1作為波特率發(fā)生器,其公式如下:

  T1溢出率= T1計數率/產(chǎn)生溢出所需的周期數

  式中T1計數率取決于它工作在定時(shí)器狀態(tài)還是計數器狀態(tài)。當工作于定時(shí)器狀態(tài)時(shí),T1計數率為fosc/12;當工作于計數器狀態(tài)時(shí),T1計數率為外部輸入頻率,此頻率應小于fosc/24。產(chǎn)生溢出所需周期與定時(shí)器T1的工作方式、T1的預置值有關(guān)。

  定時(shí)器T1工作于方式0:溢出所需周期數=8192-x 定時(shí)器T1工作于方式1:溢出所需周期數=65536-x

  定時(shí)器T1工作于方式2:溢出所需周期數=256-x

  因為方式2為自動(dòng)重裝入初值的8位定時(shí)器/計數器模式,所以用它來(lái)做波特率發(fā)生器最恰當。

  當時(shí)鐘頻率選用11.0592MHZ時(shí),取易獲得標準的波特率,所以很多單片機系統選用這個(gè)看起來(lái)“怪”的晶振就是這個(gè)道理。

  下表列出了定時(shí)器T1工作于方式2常用波特率及初值。

  常用波特率 Fosc(MHZ) SMOD TH1初值 19200 11.0592 1 FDH 9600 11.0592 0 FDH 4800 11.0592 0 FAH 2400 11.0592 0 F4H 1200 11.0592 0 E8H

  例如9600 11.0592 0 FDH

  T1溢出率= T1計數率/產(chǎn)生溢出所需的周期數

  產(chǎn)生溢出所需的周期數=256-FD(253)=3 SMOD=0 11059200/12*3 *1/32=9600



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>