下面的代码旨在使用verilog在nexys 4 ddr板上制作一个4位全加器。当tens
整数为8或9时,ones
整数似乎增加1。
dec_val = C_o*16 + S[3]*8 + S[2]*4 + S[1]*2 + S[0]*1;
ones = dec_val%10;
tens = (dec_val - ones) / 10;
但是,当我将上面的代码更改为:
时dec_val = C_o*16 + S[3]*8 + S[2]*4 + S[1]*2 + S[0]*1;
ones = dec_val%10;
tens = dec_val / 10;
问题似乎已经消失,代码工作得很好,为什么会发生这种情况?我知道第一种方法不如第二种方法优化,但两种方法都不应该给出相同的值,尤其是ones
的任何值都能正常工作,但如果值达到8或9 {{1将增加1。
此处是完整代码的链接:https://pastebin.com/05pY0Q3i
我突出显示了带注释的refrenced代码块。