在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
展开
 我来答
du瓶邪
推荐于2017-10-11 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.7万
采纳率:100%
帮助的人:2924万
展开全部
verilog描述的是硬件电路。所以initial语句只能用在仿真时测试平台testbench中。
可以使用状态机来描述。
具体步骤如下:
1.根据功能画出状态转换图
2.参考状态机写法,将你的图用verilog实现
3.按要求编写仿真平台testbench
4.状态机和测试平台编译通过后使用quartus或ISE调用modelsim仿真
5.仿真通过,设计完成。
孤寂的流云
推荐于2017-09-05 · TA获得超过178个赞
知道答主
回答量:24
采纳率:0%
帮助的人:20.3万
展开全部
initial块内的语句从上到下只执行一次 不符合电路的运行模式 所以是不可综合的 它一般用来仿真时赋值;你这个代码里面的initial就是用来给输入赋值测试你这个全加器的。。
always块内的语句是反复执行的 一般写成类似于 always @ (posedge clock or negedge reset) 或 always @ (*)的形式写成时序或组合逻辑
追问
请问initial既然只执行一次,那还要了干嘛?
追答
仿真 初始化各种数据啊 比如说 你这个程序 每隔五个时钟 改变一下输入 测试输出是否正确 基本上就是这么用的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式