我正在嘗試將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代碼/硬件,但它們不是一個快速修復的方法 - 在獲得結果之前,需要使用它們的相當多的練習。 –