在verilog里always和 initial的区别是什么?
moduletb_fulladder;wireSUM,C_OUT;regA,B,C_IN;fulladderm1(.sum(SUM),.c_out(C_OUT),.a(A...
module tb_fulladder;
wire SUM,C_OUT;
reg A,B,C_IN;
fulladder m1(.sum(SUM),
.c_out(C_OUT),
.a(A),
.b(B),
.c_in(C_IN));
initial
begin
A=1'd0;B=1'd0;C_IN=1'd0;
#5 A=1'd1;B=1'd1;C_IN=1'd1;
#5 A=1'd0;B=1'd1;C_IN=1'd1;
#5 A=1'd1;B=1'd0;C_IN=1'd0;
#5 A=1'd1;B=1'd1;C_IN=1'd0;
end
endmodule
这为什么用 initial 展开
wire SUM,C_OUT;
reg A,B,C_IN;
fulladder m1(.sum(SUM),
.c_out(C_OUT),
.a(A),
.b(B),
.c_in(C_IN));
initial
begin
A=1'd0;B=1'd0;C_IN=1'd0;
#5 A=1'd1;B=1'd1;C_IN=1'd1;
#5 A=1'd0;B=1'd1;C_IN=1'd1;
#5 A=1'd1;B=1'd0;C_IN=1'd0;
#5 A=1'd1;B=1'd1;C_IN=1'd0;
end
endmodule
这为什么用 initial 展开
2个回答
展开全部
initial块内的语句从上到下只执行一次 不符合电路的运行模式 所以是不可综合的 它一般用来仿真时赋值;你这个代码里面的initial就是用来给输入赋值测试你这个全加器的。。
always块内的语句是反复执行的 一般写成类似于 always @ (posedge clock or negedge reset) 或 always @ (*)的形式写成时序或组合逻辑
always块内的语句是反复执行的 一般写成类似于 always @ (posedge clock or negedge reset) 或 always @ (*)的形式写成时序或组合逻辑
追问
请问initial既然只执行一次,那还要了干嘛?
追答
仿真 初始化各种数据啊 比如说 你这个程序 每隔五个时钟 改变一下输入 测试输出是否正确 基本上就是这么用的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |