Я пытаюсь изменить код C++ в Verilog HDL. Я хочу написать модуль, который изменяет один из его входов. (некоторые, как вызов по ссылке в C++) , поскольку я знаю, что нет способа написать вызов ссылочным модулем в verilog (я не могу использовать systemverilog) Вот код, который я написал, и он работает. есть ли лучшие способы сделать это ?! мой problme в том, что регистр, который я хочу вызвать по ссылке, представляет собой большой массив. таким образом дублирует регистры и имеет большую стоимость.вызов по ссылке в 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. алгоритм настолько сложный, что я не могу изменить его на аппаратное обеспечение. поэтому я shoul меняю его по строкам на hdl-код – Mehdi
Учитывая, что ваш ответ ниже («логическая область»), похоже, что изменение вашего алгоритма на аппаратное обеспечение - это то, что вы пытаетесь сделать. И когда вы пишете HDL-код для реализации на FPGA или IC, проектирование аппаратного обеспечения - это то, что вы делаете. Вам нужно начать преобразовывать свой алгоритм в аппаратное обеспечение, а затем закодировать его в HDL. HDL - это не способ избежать проектирования оборудования. Имеются инструменты, которые преобразуют код C в код HDL/аппаратное обеспечение, но они не являются быстрым решением - вам нужно довольно много практики, используя их, прежде чем вы получите результаты, которые вы после. –