谈谈Xilinx UltraScale的6输入LUTS(查找表)和SLICE(二)
接着上一篇继续聊,Xilinx原来的LUT为4输入的,这个没有什么可说的,后来改成了6输入的。但是他是真的6输入吗?
仔细看看就会发现,他其实是两个5输入的结合。UltraScale 的UG里面只是有一些描述,但是我在Spartan6的UG里面发现了一张图。这不就是两个5输入加一个多路复选器吗,而且你要说他完全是2个5输入么又不完全是,因为他的A[5:1]是共用的。
所以Xilinx对于他的6输入LUT有如下的描述:
翻译过来的大致意思就是:如果要做两个5输入,那么两个LUT的5输入必须有共同的输入。另外如果一个3输入,一个2输入,也就是说两个LUT的输入总和小于等于5,这是可以完全独立。这也能理解,相当于每个LUT选用几个输入(总数小于5)。
那么赛灵思为什么要这么设计呢?
本人是这么理解的:
1、如果做成完全独立的6输入,那么即使你做1bit+1bit的时候,你也要消耗一个6输入LUT。你做同时两个1bit+1bit的运算,你要消耗两个6输入LUT。但是如果做成两个5输入的LUT,那么你只需要一个6输入的LUT。每个5输入LUT才占用2位。输出2位(O5,O6)。
2、如果做成完全独立的2个5输入,那么这会增加很多的,2个5输入的LUT对外的输入端口至少是10(5+5),这对于进行5bit以上的LUT运算时浪费,因为这5bit本来也要连起来的。
所以综合以上,Xilinx觉得这样的设计应该是一个最优解。但是只要认清一点就是我一个6输入的LUT能完全当做两个5输入来用就可以了。
以上是本人的一些见解,如有问题欢迎回复指正,共同交流。