解决分频模块modelsim下仿真输出为stx的错误

  • Post author:
  • Post category:其他



今日对一个普通的分频模块进行仿真,程序源码来自《verilog hdl应用程序设计实例精讲》的uart例程,quartus ii下仿真正常,但是modelsim下出现输出分频信号为stx型,也就是不确定信号,以红线表示。程序如下:


module uart_clkdiv(clk,

rst_n

, clkout);


input clk;


input rst_n;


output clkout;


reg clkout;

reg [15:0] cnt;


always @(posedge clk

or negedge rst_n

)

begin





if (!rst_n)






begin








cnt <= 16’b0;








clkout <= 1’b0;




end




else

if(cnt == 16’d1)//pc communication set 13




begin








clkout <= 1’b1;








cnt <= cnt + 16’d1;




end




else if(cnt == 16’d3)//pc communication set 26




begin








clkout <= 1’b0;








cnt <= 16’d0;





end




else




begin








cnt <= cnt + 16’d1;




end

end


endmodule


红色部分为改过后的,原代码没有。而出错的原因就在于没有复位信号使各变量cnt clkout 产生一个初始值,才导致输出为不确定。在仿真的时候testbench中应先对复位信号拉低几个时钟周期使信号复位。



总结:仿真的时候各变量的初值应该明确指定。