2

我知道模块本质上就像 c++ 函数。但是,我没有找到调用这些函数的 main() 部分。如果没有 main() 部分,它是如何工作的?

4

3 回答 3

7

试图在 HDL 中找到(或在概念上强制)一个 main() 等效项是学习 HDL 的错误方法——它会阻止你取得进步。对于可综合的描述,您需要从顺序思维(一条指令在另一条指令之后运行)转变为“并行”思维(一切都运行)。在心里,从左到右而不是从上到下看你的代码,你可能会意识到 main() 的概念并不是那么有意义。

在 HDL 中,我们不“调用”函数,我们实例化模块并将它们的端口连接到网络;再一次,你需要改变你对这个过程的心理看法。

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

于 2011-02-27T10:22:04.140 回答
2

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

于 2011-02-27T04:36:00.960 回答
2

Verilog 的initial块有点像main()C 语言中的。这些是计划从时间 0 开始运行的语句列表。initial不过,Verilog 可以有多个块,它们是同时执行的。

always块也将像main()它们有一个空的敏感度列表一样工作:

always begin // no sensitivity list
   s = 4;
   #10;      // delay statements, or sim will infinite loop
   s = 8;
   #10;
end
于 2011-02-27T07:30:21.727 回答