详解波特率发生器编程-计算-波特率选择.doc

详解波特率发生器编程-计算-波特率选择.doc

ID:28143047

大小:106.00 KB

页数:4页

时间:2018-12-08

详解波特率发生器编程-计算-波特率选择.doc_第1页
详解波特率发生器编程-计算-波特率选择.doc_第2页
详解波特率发生器编程-计算-波特率选择.doc_第3页
详解波特率发生器编程-计算-波特率选择.doc_第4页
资源描述:

《详解波特率发生器编程-计算-波特率选择.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、详解波特率发生器编程/计算/波特率选择    波特率发生器是什么  在信息传输通道中,携带数据信息的信号单元叫码元,每秒钟通过信道传输的码元数称为码元传输速率,简称波特率。它用单位时间内载波调制状态改变次数来表示。而波特率发生器的作用是从输入时钟转换出需要的波特率clk。常用于单片机方面。每秒钟通过信道传输的信息量称为位传输速率,简称比特率。比特率表示有效数据的传输速率。波特率与比特率的关系是比特率=波特率X单个调制状态对应的二进制位数。波特率是传输通道频宽的指标。      波特率发生器的波特率编程  一个完整的由verilog实现的波特率发生器:  modulebaud_g

2、en(  clk_50MHz,rst_p,bclk  );  inputclk_50MHz;/*输入的系统时钟,50MHz*/  inputrst_p;/*复位脉冲,高电平有效*/  /*倍频值16乘以9600波特率,即9600*16=153600,得到波特率发生器的实际输出信号频率为153.6kbit/s*/  outputbclk;//输出信号:UART(串口)波特率发生器输出的时钟脉冲,频率:153.60kbps  //即每秒1536000个脉冲,*波特率发生器输出脉冲bclk,注意:除了主频分频之外,  //还决定了这个信号的占空比,在本例中输出信号占空比为1:325 

3、 regbclk;//寄存器数据类型bclk  reg[8:0]cnt;//寄存器数据类型cnt,9位,UART用它来记录接收到的主频脉冲个数,  //注意在修改输出波特率值时,若占空比小于1:511,需要增加该变量所占位数  //以下语句利用同步计数器完成时钟分频,  always@(posedgeclk_50MHz)begin/*每当信号clk_50MHz发生电平变化执行以下语句*/  if(rst_p)begin/*如果复位脉冲信号为高电平执行以下语句*/  cnt《=0;//对主频信号计数器cnt做非阻塞方式复位赋值,赋值为逻辑0。此后每当时钟信号到来就变。  bclk

4、《=0;/*寄存器变量bclk赋值为逻辑0,使该脉冲信号复位为低电平,以低电平作为开始*/  end  elsebegin  /*50MHz除以153600(UART实际频率)等于325.5即50_000_000/153600=325.5(波特率除数)*/  if(cnt》324)begin/*如果cnt的数值大于324,即cnt计数脉冲数等于325(0-324个脉冲)*/  cnt《=0;/*50MHz主频信号计数器cnt值,被非阻塞方式复位*/  bclk《=1;/*串口波特率时钟脉冲信号bclk赋值为逻辑1,使该脉冲信号跳变到高电平周期*/  end  elsebegin

5、  cnt《=cnt+1;/*50MHz主频信号计数器cnt值被非阻塞方式增量赋值(加1)*/  bclk《=0;//波特率发生器时钟脉冲信号bclk被非阻塞方式赋值为’0’,  //使该脉冲信号跳变到低电平周期*/  end  end  end  endmodule      波特率计算  在串行通信中,收发双方对发送或接收的数据速率要有一定的约定,我们通过软件对MCS—51串行口编程可约定四种工作方式。其中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率决定。  串行口的四种工作方式对应着三种波特率。由于输人的移位时钟的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。