我正在尝试将C++代码更改为verilog HDL。 我想写一个模块来改变它的一个输入。 (有些如何在C++中引用通过引用) 因为我知道有没有办法在Verilog中通过引用模块编写调用(我不能使用systemverilog) 这里是我编写的代码,它的工作原理。有没有更好的方法来做到这一点?! 我的问题是,我想通过引用调用的寄存器是一个大数组。这种方式复制寄存器并且有很多成本。以verilog代码引用的调用
module testbench();
reg a;
wire b;
reg clk;
initial begin
a = 0;
clk = 0;
#10
clk = 1;
end
test test_instance(
.a(a),
.clk(clk),
.aOut(b)
);
[email protected](*)begin
a = b;
end
endmodule
module test(
input a,
input clk,
output reg aOut
);
always @(posedge clk) begin
if (a == 0)begin
a = 1;
aOut = a;
end
end
endmodule
您需要提供更多关于“需求”的信息。我假设你正试图将软件算法转换成硬件。程序流程的直接翻译很可能不起作用。另外,为什么你不能使用SystemVerilog? –
是的,我试图将软件算法转换为HDL。该算法非常复杂,我无法将其更改为硬件。所以我会逐行将其更改为hdl代码 – Mehdi
鉴于您的答案是低于(“逻辑区域”),这听起来像将算法更改为硬件是_exactly_您正在尝试。当你编写用于在FPGA或IC上实现的HDL代码时,你正在做的是设计硬件_exactly_。您需要开始将算法转换为硬件,然后在HDL中对其进行编码。 HDL不是避免设计硬件的一种方法。有些工具可以将C代码转换为HDL代码/硬件,但它们不是一个快速修复的方法 - 在获得结果之前,需要使用它们的相当多的练习。 –