在这里做任何断言()是否有任何明智的意义? https://github.com/promach/UART/blob/master/rtl/baud_generator.v
有人告诉我以下但我不太明白。任何人都可以详细说明吗?
我会在每个新的波特时钟上创建一个计数器,然后断言 计数器计算在4999和5001之间。你或许可以 比那更严格,但这取决于你如何截断 分数的最后一位。
// credit: Adapted from http://zipcpu.com/blog/2017/06/02/generating-timing.html
module baud_generator(clk, baud_clk); // we are obtaining baud_out = 9600bps = clk/5000 where clk = 48MHz
input clk;
output baud_clk;
reg ck_stb;
reg[31:0] counter = 0;
always @(posedge clk)
{ck_stb, counter} <= counter + 858993; // (2^32)/5000 ~= 858993 , actual baudrate = 9599.9949bps
// baud_out has a period of (1/9599.9949bps) or 104167ns
assign baud_clk = ck_stb;
endmodule