Verilog不';你没有像main()这样的东西吗? 我知道模块本质上就像C++函数。但是,我没有找到调用这些函数的main()部分。没有main()部分,它是如何工作的?

Verilog不';你没有像main()这样的东西吗? 我知道模块本质上就像C++函数。但是,我没有找到调用这些函数的main()部分。没有main()部分,它是如何工作的?,verilog,Verilog,请记住,Verilog的正常使用是对电路进行建模/描述。当您通电时,所有电路都开始运行,因此您需要编写复位逻辑,以使每个部件进入稳定、可用的工作状态。通常,您将包含一个重置行并进行初始化以响应该重置行。Verilog具有initial块有点像C中的main()。这些是计划从时间0开始运行的语句列表。Verilog可以有多个并发执行的initial块 始终如果敏感度列表为空,则块也将用作main(): always begin // no sensitivity list s = 4;

请记住,Verilog的正常使用是对电路进行建模/描述。当您通电时,所有电路都开始运行,因此您需要编写复位逻辑,以使每个部件进入稳定、可用的工作状态。通常,您将包含一个重置行并进行初始化以响应该重置行。

Verilog具有
initial
块有点像C中的
main()
。这些是计划从时间0开始运行的语句列表。Verilog可以有多个并发执行的
initial

始终
如果敏感度列表为空,则块也将用作
main()

always begin // no sensitivity list
   s = 4;
   #10;      // delay statements, or sim will infinite loop
   s = 8;
   #10;
end
试图在HDL中找到(或在概念上强制)一个main()等价物是学习HDL的错误方法——它会阻止你取得进步。对于可合成的描述,您需要从顺序思维(一条指令一条接一条地运行)过渡到“并行”思维(所有东西都在运行)。从思想上看,从左到右而不是从上到下看代码,您可能会意识到main()的概念并不那么有意义

在HDL中,我们不“调用”函数,我们实例化模块并将其端口连接到网络;同样,你需要改变你对这个过程的想法


一旦你得到它,一切都会变得更加顺利……

没有“开始”;这一切都是同时发生的。你对Verilog的目标是什么?合成编码不同于测试台编码。最接近main()的是最外层的顶层模块,它可以被命名为任何您喜欢的名称,不限于Start、main()或entry之类的名称。在该模块中,您将看到引用的其他模块,类似于从main()调用其他函数。如果您不在这些块中实例化模块,该怎么办。它还可以运行吗?如果它们的输入对任何被篡改的值都敏感,它们就会运行。