保存 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 指针的副本。我想保存模块的结果,以便我可以重用该值。
谢谢
你用 assembly
和 verilog
标记了问题,指针的讨论表明对 Verilog 的误解。
虽然大多数编程语言调用函数和任务,verilog 可以做到,但 Verilog 的主要目的是硬件描述。
模块不是被调用的函数,它是硬件物理单元的表示。
例如:
andgate myand1(x,y,andout);
以上表示单门和门
andgate myand1(x,y,andout);
andgate myand2(x,y,andout2);
上面的示例没有使用两个时钟周期或对同一硬件进行两次调用。 意味着两个硬件单元。
输出 andout
和 andout2
是组合 线 。
假设 n 被声明为电线:
assign n = andgate;
这只是将 n
连接到 andgate
连线,它们将始终具有相同的值。没有副本,它们实际上是相同的电线,具有完全相同的值。
您可能希望使用触发器来保持和更改值,触发器仅在时钟边沿更改其值。
一个基本的触发器看起来像:
reg n;
always @(posedge clk) begin
n <= andgate;
end
我不明白如何从 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 指针的副本。我想保存模块的结果,以便我可以重用该值。
谢谢
你用 assembly
和 verilog
标记了问题,指针的讨论表明对 Verilog 的误解。
虽然大多数编程语言调用函数和任务,verilog 可以做到,但 Verilog 的主要目的是硬件描述。
模块不是被调用的函数,它是硬件物理单元的表示。
例如:
andgate myand1(x,y,andout);
以上表示单门和门
andgate myand1(x,y,andout);
andgate myand2(x,y,andout2);
上面的示例没有使用两个时钟周期或对同一硬件进行两次调用。 意味着两个硬件单元。
输出 andout
和 andout2
是组合 线 。
假设 n 被声明为电线:
assign n = andgate;
这只是将 n
连接到 andgate
连线,它们将始终具有相同的值。没有副本,它们实际上是相同的电线,具有完全相同的值。
您可能希望使用触发器来保持和更改值,触发器仅在时钟边沿更改其值。
一个基本的触发器看起来像:
reg n;
always @(posedge clk) begin
n <= andgate;
end