我正在verilog中创建一个ALU,仅用于模拟。但我无法弄清楚如何划分两个16位输入。常规A=B/C
不起作用(其中B,C是input[15:0]
,A是output reg[15:0]
)。与A=B%C
类似。
我是否必须单独实施除法电路模块?我理解除法是一个非常复杂的操作,这将是实际的方法,但我只是为了模拟而做。是否有更短的方法来划分两个16位输入?
答案 0 :(得分:1)
您的代码目前正在执行此操作:
initial begin
out1=in1/in2; out2=in1%in2;
end
这不起作用 - initial
块在模拟开始时运行一次,当in1
和in2
为X
时,设置{{ 1}}和out1
到X,然后停止。将您的逻辑更改为:
out2
每次 always
@* begin
out1=in1/in2;
out2=in1%in2;
end
或in1
更改时都会执行此操作。