【发布时间】:2013-11-29 19:54:34
【问题描述】:
我目前正在尝试实现一个数据路径,它处理以无符号整数 0 - 255 之间的灰度表示的图像数据。(仅供参考,我的目标是在 FPGA 中实现离散小波变换)
在数据处理过程中,中间值也会有负数。作为一个示例过程,其中一个计算是
result = 48 - floor((66+39)/2)
floor函数用于保证整数数据的处理。对于上述情况,结果为 -4,这是一个超出 0~255 范围的数字。
提到了上面的案例,我有一系列的基本问题。
为了处理负中间数,我是否需要在硬件设计的 2 补码中将所有数据表示为“等效无符号数”?例如-4 天 = 1111 1100 天。
如果我将数据表示为有符号数的 2 的补码,我需要 9 位而不是 8 位吗?或者,我需要多少位才能正确处理数据? (用 8 位,我不能用 2 的补码表示任何超过 128 的数字。)
如果我使用按位移位,负数除法如何工作?如果我想将结果 -4 除以 4,通过将其右移 2 位,结果变为十进制的 63,二进制的 0011 1111,而不是 -1。我该如何解决这个问题?
任何帮助将不胜感激!
【问题讨论】:
-
可以使用arithmetic shift,它会向下舍入(如您指定)而不是向零(正常整数除法)舍入。
标签: image-processing data-structures hardware fpga signed