USART串口通信设置波特率程序

使用Verilog代码编写的生成波特率程序:

程序目前支持9600、19200、38400、57600、115200,如需要其他波特率请根据计算方法加入代码中,输入的时钟信号为50MHz

module SpeedSet(clk,reset,cnt);

input clk,reset;

output cnt;

///波特率对应的脉冲的个数。计算方法如下:

//以9600bps为例:1s/9600/20ns=5208.33333,即有5208个周期。

parameter bps9600     = 5208,

bps19200    = 2604,

bps38400    = 1302,

bps57600    = 868,

bps115200   = 434;

//个数的一半,即在周期的中间位置。进行采样。 

parameter bps9600_2   = 2604, 

bps19200_2  = 1302,

bps38400_2  = 652,

bps57600_2  = 434,       

bps115200_2 = 217;    

reg cnt;

reg [12:0]sample;

always@(posedge clk or negedge reset)

begin

if(!reset) begin

sample<=0;

end

else if(sample==bps115200) begin

sample <= 0;

end

else begin

sample <= sample + 1'b1;

end

end

always@(posedge clk or negedge reset)

begin

if(!reset)

cnt<=1'b0;

else if(sample==bps115200)

cnt<=1'b1;

else

cnt<=1'b0;

end

endmodule

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查