【问题标题】:Hardware implementation for integer data processing整数数据处理的硬件实现
【发布时间】:2013-11-29 19:54:34
【问题描述】:

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

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

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

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

提到了上面的案例,我有一系列的基本问题。

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

  2. 如果我将数据表示为有符号数的 2 的补码,我需要 9 位而不是 8 位吗?或者,我需要多少位才能正确处理数据? (用 8 位,我不能用 2 的补码表示任何超过 128 的数字。)

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

任何帮助将不胜感激!

【问题讨论】:

  • 可以使用arithmetic shift,它会向下舍入(如您指定)而不是向零(正常整数除法)舍入。

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-11-25
    • 2016-03-18
    • 2020-03-31
    • 1970-01-01
    • 2012-03-25
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多