我正在尝试在具有多个模块的硬件(ZedBoard)上实现一种算法。有一个顶部模块,我将在顶部模块中实例化所有这些多个模块。
大约有 9到10个模块,其中3个必须同时运行,其余的必须顺序运行。
(我知道顶层模块中的所有模块都是同时运行的。这对于必须同时运行的3个模块是可以的,但是其余必须依次运行的模块又如何呢?)知道我们无法实例化Always或初始块中的模块,而这实际上是没有意义的
- 是否可以实例化模块,使它们按顺序运行(就像一个接一个地运行)?
- 还可以实例化模块,使其有条件地运行吗???
- 可以使用系统生成器来实现吗??
fyi:我正在使用Verilog HDL,并且代码应该是可合成的
答案 0 :(得分:0)
Verilog描述硬件行为。所有硬件元素本质上都是并行的。因此,以并行方式模拟Verilog中的所有元素,以模仿硬件行为。
模型中的数据可以顺序或并行流动,具体取决于您的连接。如果将数据应用于输入或元素,则该元素将处理数据并更新其输出。作为其输入连接到第一个元素的输出的元素将处理其输入并更新输出,依此类推。您可以将其视为管道网。
为使跨不同元素的数据流同步,需要使用时钟来驱动触发器和锁存器。
基本上,以上内容定义了您的Verilog模型。
换句话说,verilog因此不是常规的编程语言,
1)只有一种方法可以使模块无效:将它们连接到其他模块和内部电线。
2)无法有条件地运行或不运行模块。您可以具有诸如多路复用器,闩锁等硬件元素,这些元素可以停止或重新路由数据流。幸运的是,行为verilog可以用“ if”或“ case”语句来描述这些行为。
3)任何发电机都无法实现不可能。