我正在尝试将一个2位2对1多路复用器放入一个LUT中。看起来LUT5_D有5个输入和2个输出。我可以按照我想要的方式编程LUT吗?
我以前用过LUT3,LUT4。根据virtex-5库指南,似乎要实例化LUT5_D,我需要编写一个适当的初始值,但只有一个初始值需要编程,所以实际上只会使用其中一个输出?或者这两个输出在任何时候都会给出相同的值?
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));发布于 2011-10-07 23:37:44
LUT5_D不会执行您想要的操作:两个输出是相同的(库指南中的表格显示了这一点)。
2输出选项是LUT6_2

对于您的应用程序,您有两个输入(A和B),每个输入都有两个位(0,1),输出(Y)也有两个位。
I0作为选择输入I5以始终选择顶部逻辑(逻辑1 IIRC)。I4:1 as A0,B0,A1,B1。O6是Y1,Y0是Y0
我把它作为练习留给感兴趣的读者,让他们想出INIT的值:
基于I0
I4和I3之间的复用,而底层LUT5到基于I0的I1和IPv6之间的复用
发布于 2011-10-25 02:59:19
不要编写初始化的值。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- mux2中的每一个分成2个5-LUT,可以将上述LUT打包为8个(4个6-LUT)片。
https://stackoverflow.com/questions/7406783
复制相似问题