整数数据处理的硬件实现

时间:2013-11-29 04:24:07

标签: image-processing data-structures hardware fpga signed

我目前正在尝试实现一个数据路径,该路径处理以无符号整数0 - 255之间的灰度表示的图像数据。(仅供参考,我的目标是在FPGA中实现离散小波变换)

在数据处理期间,中间值也将具有负数。作为示例过程,其中一个计算是

result = 48 - floor((66+39)/2)

floor函数用于保证整数数据处理。对于上述情况,结果为-4,这是一个在0~255之间的范围之外的数字。

在提到上述情况后,我有一系列基本问题。

  1. 为了处理负中间数,我是否需要将所有数据表示为硬件设计中2的补码中的“等效无符号数”?例如-4 d = 1111 1100 b。

  2. 如果我将数据表示为带符号数的2的补码,我需要9位而不是8位吗?或者,我需要多少位来正确处理数据? (对于8位,在2的补码中,我不能代表128以上的任何数字。)

  3. 如果我使用逐位移位,负数除法如何工作?如果我想将结果-4除以4,将其右移2位,则结果为十进制63,二进制为0011 1111,而不是-1。我该如何解决这个问题?

  4. 任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

如果您可以选择使用VHDL,那么您可以使用fixed point library来表示您的数字并选择舍入模式,以及允许位扩展等。

在Verilog,好吧,我会三思而后行。我不是Verilogger,但混合有符号和无符号数据类型的算术规则似乎充满了拍摄机会。

另一个需要考虑的选项可能是MyHDL,因为它为您提供了一个非常强大的验证环境,并允许您根据自己的选择在后端吐出VHDL或Verilog。