FPGA 进位链介绍

前言

搁置很久,最近才开始学习相关理论基础。为完整阐述相关内容,部分图文来自参考文献,所有引用的参考博文附录在文章最后。

本文从半加器、全加器、CARRY4电路结构开始介绍;在了解进位连的硬件电路结构之后,再对TDC相关理论进行阐述。

 

1、半加器/全加器

半加器(half adder)的功能是将两个一位二进制数相加。它具有两个输入和两个输出,两个输入分别为 A、B,代表着等待相加的两个数,输出为 Sum、Carry;Sum代表加的结果,Carry 代表进位逻辑;

半加器的真值表为:

ABSum(加的结果)Carry(进位)
0000
1010
0110
1101

加法器电路主要的构成元件由 XOR(异或门)构成;一个半加器可以由一个异或门和一个与门组成

半加器的简化图为:

全加器(full adder)将两个一位二进制数相加,并根据接收到的低位进位信号,输出和、进位输出。全加器的三个输入信号为两个加数 A、B 和低位进位 Cin

全加器真值表为:

ABCinSum(输出和)Cout(进位)
00000
10010
01010
11001
00110
10101
01101
11111

全加器的逻辑电路为:

全加器的简化图为:

 

2、XILINX Carry4结构介绍

XILINX 7 系列提供的 CLB 中的 SLICE 资源,每个 SLICE 包含了一个 CARRY4 进位逻辑。举例说明MUXCY的作用,下图中的MUXCY,当S1=0时,选择DI1作为进位CO1的输出;S1=1时,选择CO0作为进位CO1的输出。

整理出输入输出,如下所示

端口信号定义如下:

CI是上一个 CARRY4 的进位输出,位宽为1;
CYINT进位的初始化值,位宽为1;
DI [3:0]是数据的输入(两个加数的任意一个),位宽为4;
SI [3:0]是两个加数的异或,位宽为4;当SI=4'b1111时,CYINT的值会从CO0逐步传递到CO3
O  [3:0]是加法结果输出,位宽为4;
CO[3:0]是进位输出,位宽为4;

TDC主要利用CYINT、SI、CO端口,因此需要着重理解该端口定义及功能作用。

FPGA中利用Carry Chain实现加法的原理,比如两个加数分别为 a = 4'b1000和 b=4'b1100,结果应该是 8+12=20


a = 4'b1000;
b = 4'b1100;
 
S = a ^ b = 4'b0100;
D = b = 4'b1100;          //D取a也可以
CIN = 0;                  //没有上一级的进位输入
CYINIT = 0;               //初始值为0
// 下面为CARRY4的计算过程,具体的算法跟上图中过程一样
S0 = 0;                  //S的第0位
O0 = S0 ^ 0 = 0 ^ 0 = 0;
CO0 = DI0 = 0;            //上图中的MUXCY,S0为0时,选择1,也就是DI0,S0为1是选择2
S1 = 0;
O1 = S1 ^ CO0 = 0 ^ 0 = 0;
CO1 = DI1 = 0;
S2 = 1;
O2 = S2 ^ CO1 = 0 ^ 1 = 1;
CO2 = CO1 = 0;
S3 = 0;
O3 = S3 ^ CO2 = 0 ^ 0 = 0;

在上面的计算中可以看到,只有当SIn=1的时候,COn=COn-1,也就是下一级的进位才等于上一级的进位值。

当SI=4'b1111的时候,进位结果会从CO0一级一级传递到CO3,表示如下:
      CO3=CO2=CO1=CO0

当SI=4'b1111时,进位会从CO0传递到CO3,TDC也正是利用基于这种进位的传输来计算时间相关参数。

 

加法最终的输出结果为:

a = 4'b1000;

b = 4'b1100;

{O3,O2,O1,O0}=4’b0100

{CO3,CO2,CO1,CO0}=4’b1000

最终结果:{CO3,O3,O2,O1,O0} = 5’b10100 = 20

 

3、进位链在TDC中的应用

 

 

 

 

 

 

 

 

 

参考文献

作者博客
1weivid_wang浅谈XILINX FPGA CLB单元 之 进位逻辑链(CARRY4原理分析,超前快速进位逻辑结构)
2一种基于FPGA进位链的Vernier型TDC电路的制作方法
3XILINX FPGA 7系之 Carry Chains
4、Jasper兰FPGA从入门到精通(5) - 进位链
  

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值