【发布时间】:2016-10-30 15:25:35
【问题描述】:
问题可以更精确: 在 5 输入 LUT 中可实现的 225 = 0x100000000 个不同功能中,是否可以通过两个级联的 4 输入 LUT 实现 0x3c1d3c82 功能?
背景
FPGA 中的标准构建块之一是 4 输入查找表。一张这样的表可以实现224个功能。构建任意 5 输入 LUT 的标准方法是使用三个具有两级逻辑的 4 输入 LUT,并将第二级 LUT 用作 2 对 1 多路复用器。任意函数 f5(i4,i3,i2,i1,i0) 可以表示为 ff5(i4,g4(i3,i2,i1,i0),h4(i3,i2,i1,i0)),如下所示。
___ ___
i3 ---|I3 | ---|I3 |
i2 ---|I2 | i4 ---|I2 |--- ff5
i1 ---|I1 |------- h4 ---|I1 |
i0 ---|I0_| +--- g4 ---|I0_|
___ |
i3 ---|I3 | |
i2 ---|I2 |---+
i1 ---|I1 |
i0 ---|I0_|
更紧凑的表示
但是,许多 5 输入函数可以由两个级联的 4 输入 LUT 表示,gg(hh4(j4,j3,j2,j1),j2,j1,j0) 其中 jn's 是 in 的排列(n 从 0 到 4)。从图形上看,这可以表示为:
lut1
___ lut2
j4 ---|I3 | ___
j3 ---|I2 |----hh----|I3 |
j2 ---|I1 | j2 ---|I2 |-- gg
j1 ---|I0_| j1 ---|I1 |
j0 ---|I0_|
结果,待验证
我写了一个蛮力程序来找出上面的构造可以表示多少个真正的5输入函数,我的结果是:
0 input lut...... : 0x2 0.0000% (Constant 0 and Constant 1)
1 input lut...... : 0xa 0.0000% (Buffered signal and inverted signal)
2 input lut...... : 0x64 0.0000%
3 input lut...... : 0x884 0.0001%
4 input lut...... : 0x4ed9a 0.0075%
Chained luts..... : 0x3c1d3c82 23.4821%
Uncovered : 0xc3ddccf0 76.5103%
Total :0x100000000 100%
5 输入函数是 4 输入函数的超集,我不计算那些可以在单个 LUT 中表示的 5 输入函数(或者根本没有 LUT,对于函数 0x00000000 和 @987654325 @,可以说是 0xffff0000, 0xff00ff00, 0xf0f0f0f0, 0xcccccccc, 0xaaaaaaaa)。
不知道有没有人做过同样的练习,得到了同样的结果?
【问题讨论】:
标签: mapping permutation lookup fpga combinatorics