Ich versuche, einen C++ Code in Verilog HDL zu ändern. Ich möchte ein Modul schreiben, das einen seiner Eingänge ändert. (einige, wie Aufruf durch Referenz in C++) wie ich weiß, gibt es keine Möglichkeit, einen Aufruf von Referenzmodul in Verilog schreiben (ich kann nicht Systemverilog verwenden) Hier ist ein Code, den ich geschrieben habe und es funktioniert. Gibt es bessere Möglichkeiten, dies zu tun ?! mein Problem ist, dass das Register, das ich als Referenz aufrufen möchte, ein großes Array ist. Auf diese Weise werden die Register dupliziert und die Kosten sind hoch.Anruf per Referenz in Verilog-Code
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
Sie müssen viel mehr Informationen über Ihre "Anforderungen" bereitstellen. Ich nehme an, Sie versuchen, einen Softwarealgorithmus in Hardware zu übersetzen. Eine direkte Übersetzung des Verfahrensablaufs wird höchstwahrscheinlich nicht funktionieren. Warum können Sie SystemVerilog auch nicht verwenden? –
Ja Ich versuche, einen Softwarealgorithmus in HDL zu übersetzen. Der Algorithmus ist so kompliziert, dass ich ihn nicht auf Hardware umstellen kann. also sollte ich es Zeile für Zeile ändern zu HDL-Code – Mehdi
Angesichts Ihrer Antwort unter ("logic area"), es klingt wie Ändern Ihres Algorithmus zu Hardware ist _exactly_, was Sie versuchen. Und wenn Sie HDL-Code für die Implementierung auf einem FPGA oder IC schreiben, ist das Entwerfen von Hardware _exactly_ was Sie tun. Sie müssen beginnen, Ihren Algorithmus in Hardware zu konvertieren und dann das in Ihrem HDL zu kodieren. Ein HDL ist keine Möglichkeit, das Entwerfen von Hardware zu vermeiden. Es gibt Tools, die C-Code in HDL-Code/Hardware umwandeln, aber sie sind keine schnelle Lösung - Sie müssen ziemlich viel üben, bevor Sie die gewünschten Ergebnisse erhalten. –