Verilog分频器代码仿真错误

核心提示你的程序的主要的问题就是:1.你写的是时序逻辑,里面用到的reg类型的变量在正常使用之前是要初始化的,否则用modulesim仿真时会一直为红线"X"状态的。2.写常量数字时,一定要加上宽度,如果你只写一个“1”,那么这个1就默认为是32位

你的程序的主要的问题就是:

1.你写的是时序逻辑,里面用到的reg类型的变量在正常使用之前是要初始化的,否则用modulesim仿真时会一直为红线"X"状态的。

2.写常量数字时,一定要加上宽度,如果你只写一个“1”,那么这个1就默认为是32位的,很耗资源。

3.除非你对`timescale在仿真时的冲突决策很了解,否则建议你只在Testbench中使用这个宏。

以下是我修改过的程序,我仿真过了,没问题:

module fenpinqi(

div12,

clk,

rst

);

input clk;

input rst;

output div12;

reg div12;

reg [2:0] cnt;

always @(posedge clk)

begin

if (rst == 1'b0)

begin

div12 <=1'b0;

cnt <='b0;

end

else

begin

if(cnt==3'b101)

begin

div12 <= ~div12;

cnt <= 'b0;

end

else

begin

cnt <= cnt + 1'b1;

end

end

end

endmodule

//*******************************************************

`timescale 1ns/1ns

module

fenpinqi_tb;

reg clk;

wire div12;

reg rst;

fenpinqi u3cs(

.clk(clk),

.div12(div12),

.rst(rst));

initial

begin

clk=1'b0;

rst=1'b0;

#30 rst=1'b1; end

always

begin

#10 clk=1'b1; #10 clk=1'b0;

end

endmodule

 
友情链接
鄂ICP备19019357号-22