在verilog里always和 initial的区别是什么?

学习 时间:2026-04-04 20:27:02 阅读:855
在verilog里always和 initial的区别是什么?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));initialbeginA=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;endendmodule这为什么用 initial

最佳回答

碧蓝的跳跳糖

单薄的高山

2026-04-04 20:27:02

initial块内的语句从上到下只执行一次 不符合电路的运行模式 所以是不可综合的 它一般用来仿真时赋值;你这个代码里面的initial就是用来给输入赋值测试你这个全加器的。always块内的语句是反复执行的 一般写成类似于 always @ (posedge clock or negedge reset) 或 always @ (*)的形式写成时序或组合逻辑 再问: 请问initial既然只执行一次,那还要了干嘛? 再答: 仿真 初始化各种数据啊 比如说 你这个程序 每隔五个时钟 改变一下输入 测试输出是否正确 基本上就是这么用的

最新回答共有2条回答

  • 闪闪的枫叶
    回复
    2026-04-04 20:27:02

    initial块内的语句从上到下只执行一次 不符合电路的运行模式 所以是不可综合的 它一般用来仿真时赋值;你这个代码里面的initial就是用来给输入赋值测试你这个全加器的。always块内的语句是反复执行的 一般写成类似于 always @ (posedge clock or negedge reset) 或 always @ (*)的形式写成时序或组合逻辑 再问: 请问initial既然只执行一次,那还要了干嘛? 再答: 仿真 初始化各种数据啊 比如说 你这个程序 每隔五个时钟 改变一下输入 测试输出是否正确 基本上就是这么用的

上一篇 帮我查查“缅怀革命先烈,宏扬爱国主义精神”的相关作文

下一篇 英语翻译In most cases the speed test imposes centrifugal forces