已知x是16位无符号整数,求x除以255的余数和商。尽量降低实现方式的硬件开销(包括面积和时序)
由于除数255是一个常数,因此,直观上给人的感觉就是应该有相应的优化方法,即相对于除数可变的实现方式,在面积、时序方面应该有所改善。
对于该问题,本文给出了如下所示的解决方式:
记
hi = x[15:8]
lo = x[7:0]
则有:
x = hi * 256 + lo
对上式稍做变换,有
x = 255 * hi + (hi + lo)
我们假设x除以255的商和余数分别为q和r,则
当hi + lo < 255时
q=hi
r=hi+lo
当hi+lo>=255时
q=hi+1
r=hi+lo