我正在写一个Verilog代码来计算十进制数中的位数。在下面的代码中,我已经初始化c的值等于a。 我能够正确地获得模拟结果,但无法同步,错误归因于'c = a'。我怎样才能摆脱错误?有没有其他的逻辑来计算数字的数量?总是使用for循环块
Error: [Synth 8-3380] loop condition does not converge after 2000 iterations
代码: -
module numdigits(a,b);
parameter n=100;
input [0:n-1] a;
output reg [0:n-1]b; //THIS MODULE COUNTS THE NUMBER OF DIGITS IN DECIMAL FORM
reg [0:n-1] d,c;
always @(*)
begin
d=0;
for(c=a;c>0;c=c/10)
begin
d=d+1;
end
b=d;
end
endmodule
我对你的模块没有任何问题。也许它是一个测试台或工具问题?请参阅:https://www.edaplayground.com/x/24e3 – Hida
@Hida我正在使用vivado软件,为什么我们需要测试台来合成代码?它主要用于模拟,对吧? –
我同意它没有正确回答你的问题。不过,我想指出,您应该始终模拟您的RTL,以减少花费在FPGA /综合反馈上的调试时间。 – Hida