6

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

4

3 回答 3

2

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

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

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

我可能完全错了。

于 2009-07-15T01:16:44.763 回答
1

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

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

祝你功课好运。(:

于 2009-07-17T18:36:04.357 回答
-5

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

于 2009-07-15T01:32:32.263 回答