我知道模块基本上就像c ++函数一样。但是,我没有找到像调用这些函数的main()部分。没有main()部分它如何工作?
答案 0 :(得分:7)
尝试在HDL中找到(或概念上强制)一个main()等效的方法是学习HDL的错误方法 - 它会阻止你取得进步。对于可合成的描述,您需要从顺序思考(一个接一个的指令)到“并行”思考(所有正在运行所有时间)实现跨越。在心理上,从左到右而不是从上到下看你的代码,你可能会意识到main()的概念并没有那么有意义。
在HDL中,我们不“调用”函数,我们实例化模块并将其端口连接到网络;再次,你需要改变你对这个过程的心理观点。
一旦你得到它,一切都会变得更加顺畅......
答案 1 :(得分:2)
请记住,Verilog的正常使用是建模/描述电路。当您接通电源时,所有电路都开始运行,因此您需要编写复位逻辑,以使每个电路进入稳定,可用的运行状态。通常,您将包含一个重置行并进行初始化以响应。
答案 2 :(得分:2)
Verilog的initial
块有点像C中的main()
。这些是从0开始计划运行的语句列表.Verilog可以有多个initial
块,但是同时执行。
always
块有一个空的敏感度列表,它们也可以作为main()
使用:
always begin // no sensitivity list
s = 4;
#10; // delay statements, or sim will infinite loop
s = 8;
#10;
end