当前位置 博文首页 > 摆渡沧桑:浅谈XILINX FPGA CLB单元 之 进位逻辑链(CARRY4原理
浅谈XILINX FPGA CLB单元 之 进位逻辑链(CARRY4原理分析,超前快速进位逻辑结构)
CLB可配置逻辑块是指实现各种逻辑功能的电路,是xilinx基本逻辑单元。下图给出了一个 SLICEM 的内部结构。
其中包含4个6输入LUT、进位链、多路复用器和8个寄存器
在Xilinx FPGA中,每个可配置逻辑块(CLB)包含2个Slice。每个Slice 包含查找表、寄存器、进位链和多个多数选择器构成。而Slice又有两种不同的逻辑片:SLICEM和SLICEL。SLICEM有多功能的LUT,可配置成移位寄存器,或者ROM和RAM。逻辑片中的每个寄存器可以配置为锁存器使用。今天写这篇文章的目的主要是为了让我们搞清楚FPGA重要资源CLB、Slice、LUT。
学习的主线是根据XILINX 官方文档“ug474_7Series_CLB.pdf”,官方下载地址
关于具体的CLB中各模块,如查找表(LUT)、存储单元、Distributed RAM、移位寄存器、Multiplexers、进位逻辑(Carry Logic)、可以参考这边博客:
本节主要针对进位逻辑(Carry Logic)部分进行详细的介绍。
CARRY4的原理过程:
1)端口S[3:0]是要求数据的异或输入;
2)端口DI[3:0]是数据的输入(a,b都可以),通过选择器判断是否是进位标志;
3)MUXCY选择器作为向下一级输出标志的选择端口;
对于一个全加器
具体的原理可以参考之前的一篇博客: 数字电路基础知识(四) 加法器-半加器、全加器与超前进位加法器
基本的进位标志和输出如下。
对于CARRY4,端口S端其实是已经做过亦或处理的输入了。
即:
S=a@b //(@表示异或)
端口D可以任选a、b输入当中的一个,如选择b
输出端:
那么O端即表示输出端:O = S@cin = a@b@cin
进位端:
CO=(a@b)'b +(a@b)cin //利用多路复用器:y=s’b+scin
=(a’b+ab’)‘b+(a@b)cin
=(a’b)’(ab’)‘b+(a@b)cin
=(a+b’)(a’+b)b+(a@b)cin
=(ab+b’b)(a’+b)+(a@b)cin
=ab(a’+b)+(a@b)cin
=(a@b)cin+ab
所以此CARRY4结构能够实现快速超前进位加法器。
如下面的一个例子,两个加数分别为0100,0101: