【问题标题】:How many 5-input LUT functions are mappable to two cascaded 4-input LUTs?有多少个 5 输入 LUT 功能可映射到两个级联的 4 输入 LUT?
【发布时间】: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


    【解决方案1】:

    这并不能直接回答您的问题,但我的回答是,查看您的第一个 3-LUT 示例,当使用任何“现代”FPGA 器件(Xilinx Spartan 3、Altera Cyclone V、Lattice ECP2 或更新版本)实现时, “多路复用器”实际上并不使用另一个 LUT,而是专门用于创建更广泛的逻辑功能的专用多路复用器资源。

    这些多路复用器避免了使用第三个 LUT 作为多路复用器或使用第二个示例中的链式 LUT 所导致的任何路由延迟,因此生成的宽 LUT 应该在比链式 LUT 方法更高的频率下运行.它们本质上是“免费的”,因为它们通常只能用于与同一 ALM/Slice 中的相邻 LUT 相关联的逻辑。

    我还要说,即使 如果 链式 LUT 方法使用更少的逻辑资源,我仍然更喜欢使用更多 LUT 的简单编写的代码,而不是直接以这种方式实例化 LUT 的代码,以及它们关联的完全不可读的 LUT 初始化值。

    【讨论】:

    • 我同意你的所有事实。更重要的是,链式 LUT 对输入开关盒施加了严格的限制,并阻塞了路由。但是,正如你所说,这并不能回答我的问题。
    猜你喜欢
    • 2021-11-08
    • 2021-08-15
    • 2020-08-25
    • 2018-08-31
    • 2010-12-23
    • 2011-06-12
    • 1970-01-01
    • 2010-10-30
    • 2018-12-30
    相关资源
    最近更新 更多