程序通过了板级测试,但是modelsim仿真波形却不正确
时间:10-02
整理:3721RD
点击:
module test3(b,clk);
input clk;
output reg b=1'b0;
reg[22:0] count1;
always@(posedge clk)
begin
if(count1==3999999)
begin
b<=~b;
count1<=0;
end
else
begin
count1<=count1+1;
end
end
endmodule
这是一个控制LED 1秒亮1秒灭闪烁的试验 用4M HZ的有源晶振
我搭建了电路 用输出b控制的,试验效果和我预想的一样
但是我用modelsim进行仿真的时候输出b 是一个持续的低电平 ,没有任何的电平变化
不知道是为什么,有人知道其中的问题么?
`timescale 1 ns/ 1 ps
module test3_vlg_tst();
reg clk;
wire b;
test3 i1 (
.b(b),
.clk(clk)
);
initial
begin
clk=0;
end
always #25 clk=~clk;
endmodule
以上是我的TEST BENCH 文件
- output reg b=1'b0;
这个是什么……
count1到底是多少位的 为什么有count1<=2'b00;
output reg b=1'b0;是什么 是复位吗?
你说的原因可能是b没有上电复位导致的
不管怎么样 你得先把代码写规范啊
count1到底是多少位的 为什么有count1<=2'b00;
output reg b=1'b0;是什么 是复位吗?
你说的原因可能是b没有上电复位导致的
不管怎么样 你得先把代码写规范啊
额。这是我后来试验别的东西的时候忘记改回来了
上电复位的时候给一个初值啊,我也没见过,不过别人告诉我这么做的
没有设置这个的时候b输出一直是高组态
这么写之后b就有电平了
如果猜得没错的话count1信号仿真应该是一条红线。
CLK信号是有的
输出B 是一根低电平的绿线
板子上测试是对的
板子上测应该是正确的,但仿真就肯定不行了。如果没赋初值的话,就会是一条红线,count1信号你调出来看看就知道了。
我也觉得是,count1没有赋初值的问题。仿真时count1是一组红线。板级验证时,count1默认就是0了。
明显是仿真需要的时间太长了,仿真时间要200000000ns,b才反转一次
