您的位置首页生活百科

波特率发生器

波特率发生器

的有关信息介绍如下:

波特率发生器

波特率编程

波特率指数据信号对载波的调制速率,它用单位时间内载波调制状态改变次数来表示 。

波特率发生器不是产生波特率的,波特率时钟频率/波特率因子=波特率。

波特率发生器的作用是从输入时钟转换出需要的波特率clk,即波特率时钟频率。

一个完整的由verilog实现的波特率发生器:

module baud_gen(

clk_50MHz, rst_p, bclk

);

input clk_50MHz; /*输入的系统时钟,50MHz*/

input rst_p; /*复位脉冲,高电平有效*/

/* 倍频值16乘以9600波特率,即9600*16=153600,得到波特率发生器的实际输出信号频率为153.6kbit/s */

output bclk; // 输出信号:UART(串口)波特率发生器输出的时钟脉冲,频率:153.60kbps

//即每秒1536000个脉冲,*波特率发生器输出脉冲bclk,注意:除了主频分频之外,

//还决定了这个信号的占空比,在本例中输出信号占空比为 1:325

reg bclk; //寄存器数据类型bclk

reg [8:0] cnt; //寄存器数据类型cnt,9位,UART用它来记录接收到的主频脉冲个数,

//注意在修改输出波特率值时,若占空比小于1:511,需要增加该变量所占位数

//以下语句利用同步计数器完成时钟分频,

always @(posedge clk_50MHz) begin /* 每当信号clk_50MHz发生电平变化执行以下语句 */

if(rst_p) begin /* 如果复位脉冲信号为高电平执行以下语句 */

cnt <= 0; //对主频信号计数器cnt做非阻塞方式复位赋值,赋值为逻辑0 。此后每当时钟信号到来就变。

bclk <= 0; /* 寄存器变量bclk赋值为逻辑0,使该脉冲信号复位为低电平,以低电平作为开始*/

end

else begin

/* 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值,被非阻塞方式复位*/

在信息传输通道中,携带数据信息的信号单元叫码元,每秒钟通过信道传输的码元数称为码元传输速率,简称波特率。即波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变次数来表示。每秒钟通过信道传输的信息量称为位传输速率,简称比特率。比特率表示有效数据的传输速率。波特率与比特率的关系是比特率=波特率X单个调制状态对应的二进制位数。波特率是传输通道频宽的指标。