При описании аппаратной системы вы должны учитывать, что входные сигналы на ваш модуль поступают от другого модуля / системы, и их значения определяются этими сигналами.Входы в любой модуль могут быть только wire
типа.
Вы можете думать о модуле как о блоке, который имеет входы и выходы.Значения выходных сигналов определяются входным сигналом + логика внутри коробки.Однако модуль не может решить, какими должны быть его входные данные.Это возможно только при наличии обратной связи, и даже в этом случае она будет зависеть от других сигналов, которые находятся вне контроля модуля.
В результате выходные сигналы могут быть объявлены как output reg
, но это не относится к входам.Однако есть решение вашей проблемы, я думаю, что вы хотите, может быть разработан с использованием следующего метода:
module your_module(
input clk,
input rst,
//other inputs and outputs that you might need
input [3:0] a,
input [3:0] b
);
//define registers
reg [3:0] a_register;
reg [3:0] b_register;
/*
These registers are defined to make it possible to
to give any value to that logics when posedge rst
is detected, otherwise you can use them as your
input logics
*/
//use initial block if you need
always@(posedge clk or posedge rst) begin
if(rst) begin
a_register <= 4'd5;
b_register <= 4'd10;
end
else
begin
a_register <= a;
b_register <= b;
// and use a_register and b_register as you want to use a and b
end
end
endmodule