保存 Verilog 模块的返回值

Saving Returned Value from Verilog Module

我不明白如何从 verilog 模块保存结果。

我这样声明:andgate myand(x,y,andout);

module andgate(a,b, out);
    input a,b;
    output out;
    wire out;
    assign out = a & b;
endmodule 

但是这个 returns 指针似乎在您使用指针时进行计算。

所以:assign n = andgate 只是将 n 变成了 andgate 指针的副本。我想保存模块的结果,以便我可以重用该值。

谢谢

你用 assemblyverilog 标记了问题,指针的讨论表明对 Verilog 的误解。

虽然大多数编程语言调用函数和任务,verilog 可以做到,但 Verilog 的主要目的是硬件描述。

模块不是被调用的函数,它是硬件物理单元的表示。

例如:

andgate myand1(x,y,andout);

以上表示单门和门

andgate myand1(x,y,andout);
andgate myand2(x,y,andout2);

上面的示例没有使用两个时钟周期或对同一硬件进行两次调用。 意味着两个硬件单元。

输出 andoutandout2 是组合 线

假设 n 被声明为电线:

assign n = andgate;

这只是将 n 连接到 andgate 连线,它们将始终具有相同的值。没有副本,它们实际上是相同的电线,具有完全相同的值。

您可能希望使用触发器来保持和更改值,触发器仅在时钟边沿更改其值。

一个基本的触发器看起来像:

reg n; 
always @(posedge clk) begin
  n <= andgate;
end