Verilog 模m加法器的硬件实现
我有8个输入,它们的模和必须取模m。我知道2个输入的算法,但这里不起作用。 例如,我有sum=sum0+sum1+sum2+sum3+sum4+sum5+sum6+sum7,我必须取sum的mod m。从rom硬件实现的角度来看,如何做这个? 我也写代码,但它不工作 m3是mod3Verilog 模m加法器的硬件实现,verilog,fpga,system-verilog,computer-architecture,Verilog,Fpga,System Verilog,Computer Architecture,我有8个输入,它们的模和必须取模m。我知道2个输入的算法,但这里不起作用。 例如,我有sum=sum0+sum1+sum2+sum3+sum4+sum5+sum6+sum7,我必须取sum的mod m。从rom硬件实现的角度来看,如何做这个? 我也写代码,但它不工作 m3是mod3 always@(posedge clk) begin sum3a<=mod30+mod31; sum3b<=mod32+mod33; sum3c<=mod34+mod35
always@(posedge clk)
begin
sum3a<=mod30+mod31;
sum3b<=mod32+mod33;
sum3c<=mod34+mod35;
sum3d<=mod36+mod37;
sum3e<=sum3a+sum3b;
sum3f<=sum3c+sum3d;
x31= (sum3e+sum3f);
x32= (sum3e-m3);
if (x32>=0 )
sum3 <= x32;
else
sum3 <= x31;
end
始终@(posedge clk)
开始
sum3a不要在同一块中混合使用阻塞和非阻塞分配sum3e
变量取决于sum3a
和sum3b
但同时sum3a
和sum3b
值由于非阻塞赋值而发生变化,这将导致逻辑错误。您可以让sum3a到sum3f以m模完成,或者让逻辑从最终答案中减去m(您应该能够计算最坏情况下的管道)直到答案在0到m-1之间。