verilog - 带有“初始”块和没有它的简单分配有什么区别?
问题描述
例如,这两种实现有什么区别?
与initial
声明:
module with_initial();
reg clk,reset,enable,data;
initial begin
clk=0;
reset=0;
enable=0;
data=0;
end
always @(…)
..
end
endmodule
在这里不使用initial
语句:
module without_initial();
reg clk,reset,enable,data;
clk=0;
reset=0;
enable=0;
data=0;
always @(…)
..
end
endmodule
解决方案
中的代码without_initial
不是合法的语法,它应该为您产生编译错误,就像它对edaplayground上的模拟器一样。
程序分配必须在initial
oralways
块内。请参阅 IEEE Std 1800-2017,第 10.4 节程序分配。
此外,areg
可以在块之外用初始值声明initial
:
module without_initial;
reg clk=0;
reg reset=0;
reg enable=0;
reg data=0;
endmodule
请参阅 IEEE Std 1800-2017,第 6.8 节变量声明。
推荐阅读
- sql - 在 SQL 中查询以跳过第一个分隔符并选择第二个分隔符
- c# - 基于浏览器的身份验证对话框未能完成
- python - python中的频率表
- hive - SQL 派生包和项目详细信息
- java - 如何在 Junit 5 中注册 TestExecutionListener 并检测是否执行了所有测试
- java - 如何使用 Eclipse 文本编辑器将字符串显示/编辑/保存到 RCP 应用程序中?
- python - 在 python 3 中列出从 3 到 21 的素数
- python - 无法使用 Yahoo Fantasy Sports API 找到统计数据
- c - 如何在c中打开具有用户定义名称的文件
- shell - 我可以在同一行打印数组索引和值吗?