【问题标题】:Circuit that counts the number of set bits in 15-bit input计算 15 位输入中设置位数的电路
【发布时间】:2010-11-10 20:39:23
【问题描述】:

如何构建一个面积有效的电路,该电路使用 4 输入 LUT(查找表)计算 15 位输入中的设置位数。输出显然是 4 位(计数 0-15)。有人声称可以使用 9 个 LUT。

【问题讨论】:

  • 硬件问题在这个论坛上通常不会得到很好的回应。
  • 尤其是当它们听起来像家庭作业问题时。
  • 这不是作业问题。我需要以优化的方式合成这个电路,但是 FPGA 合成工具使用了 20 个 LUT。它可以做得更好。
  • 我自己认为 FPGA 设计是一种编程形式。
  • 我想出了如何在 11 个 LUT 中做到这一点

标签: fpga lookup-tables circuit


【解决方案1】:

好吧,我会带你开始的。您的第一层查找表将如下所示:

0 0 0 0 = 00
0 0 0 1 = 01
0 0 1 0 = 01
0 0 1 1 = 10
0 1 0 0 = 01
0 1 0 1 = 10
0 1 1 0 = 10
0 1 1 1 = 11
1 0 0 0 = 01
1 0 0 1 = 10
1 0 1 0 = 10
1 0 1 1 = 11
1 1 0 0 = 10
1 1 0 1 = 11
1 1 1 0 = 11
1 1 1 1 = 00

将其中四个分布在您的 15 位输入中,获取输出并将它们传递给两个新的查找表,如下所示:

0 0 0 0 = 000
0 0 0 1 = 001
0 0 1 0 = 010
0 0 1 1 = 011
0 1 0 0 = 001
0 1 0 1 = 010
0 1 1 0 = 011
0 1 1 1 = 100
1 0 0 0 = 010
1 0 0 1 = 011
1 0 1 0 = 100
1 0 1 1 = 101
1 1 0 0 = 011
1 1 0 1 = 100
1 1 1 0 = 101
1 1 1 1 = 110

... 等等。当然,您将不得不解决所有零和在第一层产生相同输出的所有问题。

我可能完全错了。

【讨论】:

    【解决方案2】:

    这里有一些计算位数的 C 代码: C code to count the number of '1' bits。您必须将其转换为您的硬件。

    【讨论】:

      【解决方案3】:

      我可以在 10 内完成。这是第一个计数器阶段(4 个表),然后是一个带有进位的 2 阶段加法器(3 个和 3 个表)。

      我怀疑有一种方法可以做得更好,因为我没有完全使用每个 LUT,但有时一个简单的设计值得付出额外的代价。我尝试了其他方法,但仍然需要 10 个。

      祝你作业顺利。 (:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-20
        • 2014-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多