为分数时钟分频器设计形式验证断言

时间:2017-10-27 11:41:40

标签: verilog assertions

在这里做任何断言()是否有任何明智的意义? 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

0 个答案:

没有答案