【问题标题】:Can I program the LUT5_D in virtex-5 FPGA with 2bit 2-to-1 mux functions?我可以在 virtex-5 FPGA 中使用 2 位 2 对 1 多路复用器功能对 LUT5_D 进行编程吗?
【发布时间】:2011-10-25 02:59:19
【问题描述】:

我正在尝试将 2 位 2 对 1 多路复用器装入一个 LUT。 LUT5_D 似乎有 5 个输入和 2 个输出。我可以根据需要对 LUT 进行编程吗?

我以前用过LUT3LUT4。从 virtex-5 library guide 看来,要实例化 LUT5_D,我需要编写一个适当的 init 值,但只有一个 init 值可以编程,所以实际上只会使用其中一个输出?或者任何时候两个输出都会给出相同的值?

LUT5_D #(
.INIT(32'h55550f0f),
) LUT5_D_inst
(.O(O), // General LUT output (1-bit)
.LO(LO), // Local LUT output (1-bit)
.I0(I0), // LUT input (1-bit)
.I1(I1), // LUT input (1-bit)
.I2(I2), // LUT input (1-bit)
.I3(I3), // LUT input (1-bit)
.I4(SEL));

【问题讨论】:

  • 切片中已经有一个 2 对 1 多路复用器,为什么不使用它呢? (看看 FPGA 编辑器)。当你实现上面的代码时会发生什么?据我所知,你总是会得到 1 的输出。
  • 如何准确地使用那个 2 对 1 多路复用器?

标签: fpga xilinx


【解决方案1】:

LUT5_D 不会做你想做的事:两个输出是相同的(库指南中的表格显示了这一点)。

第二个输出选项是LUT6_2:

对于您的应用程序,您有两个输入(A 和 B),每个输入有两个位 (0,1),一个输出 (Y) 也有两个位。

  • 使用I0 作为选择输入
  • 连线 I5 以始终选择顶部 LUT5(逻辑 1 IIRC)。
  • I4:1 连接为A0,B0,A1,B1
  • O6Y0O5Y1

我把它作为练习留给感兴趣的读者来提出 INIT 值:

  • 根据I0 导致I4I3 之间的顶部LUT5 到MUX
  • 根据I0 导致底部LUT5 到I2I1 之间的MUX

【讨论】:

    【解决方案2】:

    不要对 INIT 值进行编程。 LUT_MAP 更容易维护:

    (* LUT_MAP="yes" *)
    module mux2(sel, a, b, o);
        input  sel;
        input  a;
        input  b;
        output o;
    
        assign o = (~sel&a) | (sel & b);
    endmodule
    

    使用公共 sel 输入信号,通过将四个 6-LUT 中的每一个拆分为 2 个 5-LUT,可以将上面的 mux2 打包为 8 个(四个 6-LUT)切片。

    【讨论】:

    • 您提供的 LUT 映射似乎是 2 对 1 多路复用器。你的意思是a和b都是2位吗?我没有看到 8 个 2 对 1 多路复用器在放置和布线后被打包成一片。
    • 如果在 mux2 的 8 个实例上放置 (* RLOC="X0Y0" *) 约束,映射器会将生成的 8 个 LUT3 打包到一个切片中。 (我刚刚验证了这一点。)
    猜你喜欢
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多