我知道模块本质上就像 c++ 函数。但是,我没有找到调用这些函数的 main() 部分。如果没有 main() 部分,它是如何工作的?
问问题
976 次
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 回答