串口通信控制器的Verilog HDL实现(二) 波特率发生器模块

时间:2022-04-28
本文章向大家介绍串口通信控制器的Verilog HDL实现(二) 波特率发生器模块,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

波特率发生器实际上是一个分频器,从给定的系统时钟频率得到要求的波特率。一般来讲,为了提高系统的容错性处理,要求波特率发生器的输出时钟为实际串口数据波特率的N倍,N可以取值为8、16、32、64等。在本设计中,取N为16,因此波特率发生器的输出号频率应改为9600*16=153.6kbps。

由于串口速率较低,其16倍频率值也不高,因此在设计中,可以不要求波特率发生器输出信号的占空比为50%,在本例中,其占空比为1:325。设计中的波特率发生器的代码(baud_gen.v)如下所列。

module baud_gen(
clk_50MHz,rst_p,bclk
    );
 input clk_50MHz;
 input rst_p;
 output bclk;//153.60kbps
 reg bclk;
 reg [8:0]cnt;//50000000/153600=325.5
 always @(posedge clk_50MHz)
 begin
if(rst_p)
begin
cnt<=0;
bclk<=0;
end
else
begin
if(cnt>324)
begin
cnt<=0;
bclk<=1;
end
else
begin
cnt<=cnt+1;
bclk<=0;
end
end
 end
endmodule