用大白话从底层理解FPGA——进位链CARRY4

这篇具有很好参考价值的文章主要介绍了用大白话从底层理解FPGA——进位链CARRY4。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

讲完FPGA中的LUT6和FF后,接下来讲FPGA底层中进位链CARRY4,话不多说上干货,记重点,CARRY4本质用来实现FPGA运算中的加减法

看完这篇文章,你能收获到:

1. 理解我们经常在FPGA使用的加法减法,在FPGA底层中是如何实现的?引出半加器、全加器的概念

2. 在第一步基础上,理解FPGA中CARRY4的结构及功能

一、半加器

举个例子,在二进制中,两个1bit数相加只有4种情况:

0+0=0(结果位)

0+1=1(结果位)

1+0=1(结果位)

1+1=10(进位+结果位)

答案非常明显:

结果位=两个输入数字的异或(^)

进位=两各输入数字的相与(&)

假设两个加数为A+B,相加后当前位结果为S,产生进位用C表示,则

S=A^B

C=A&B

这个就是半加器的原理,半加器:两个输入数据位相加,输出一个结果位和进位,没有进位输入的加法器电路。映射到电路就是一个异或门+一个与门。

用大白话从底层理解FPGA——进位链CARRY4,从入门到理解FPGA底层逻辑,fpga开发,fpga

半加器门电路结构

二、全加器

再举例子:两个2bit数相加(逻辑有点多,可以多看几次)

用大白话从底层理解FPGA——进位链CARRY4,从入门到理解FPGA底层逻辑,fpga开发,fpga

最右边为最低位

对于最低位:用上面所述的半加器可知,结果位S为0,进位C为1。

对于第二位:需要接受由低位产生的进位,才能计算当前结果位,结果位=1^1^1=1。

假设两个加数为A+B,相加后当前位结果为S,产生进位用Cout表示,输入的进位用CIN表示

对于第二位,我们得出:S2=A2^B2^CIN2=1^1^1=1。

Cout2=A2&B2 | A2^B2&CIN2(保证A2,B2,CIN2中有两个或两个以上的1)

对于第三位,我们得出:S3=A3^B3^CIN3=0^0^1=1。

Cout3=A3&B3 | A3^B3&CIN3 = 0。(产生进位的条件是A,B,CIN中有两个或两个以上的1)

由于Cout3=0,因此最终结果位{S3,S2,S1}=110。

在数电中,我们用全加器来实现上述中第二位,第三位的带进位的加法操作。

全加器的概念如下:

全加器:可以理解成半加器的升级版,除了半加器的功能外,再加上前一级传进来的进位信号。

假设两个加数为A+B,相加后当前位结果为S,是否产生进位用C表示,上一级进位输入用Cin表示

S=A^B^Cin

C=(A&B)|(Cin&(A^B))

那这里问题来了,是不是每次做多位加法计算时,最低位都要用半加器?

答案是否定的,因为从半加器和全加器区别就知道,全加器只是比半加器多了个来自低位进位的功能而已,我们只需要将全加器CIN置0,可将全加器当作半加器来用,再与全加器级联即可做成多位加法器。

那问题又来了,如果我是两个8bit数相加,两个16bit数相加呢?一个全加器够用吗?

这里需要通过级联全加器的方法,实现多bit数的相加。

三、进位链CARRY4

那FPGA内部,是不是也用全加器,实现加减法呢?我们看CARRY4结构(是不是很复杂,没关系,看我圈红部分)

用大白话从底层理解FPGA——进位链CARRY4,从入门到理解FPGA底层逻辑,fpga开发,fpga

CARRY4结构

红圈部分本质上理解成一个全加器,一个CARRY4由4个全加器组成。其中

CIN:上一级进位输入,当在最低位时。

CYINIT:置0表示加法,置1表示减法。

S0=A0^B0(两个加数做异或)。

O0=S0^CIN(全加器中的S)。

DI0=A或者B。

还有MUX逻辑,当S=0,输出位左侧输入,S=1,右侧输出。

再举个例子

用大白话从底层理解FPGA——进位链CARRY4,从入门到理解FPGA底层逻辑,fpga开发,fpga

两个7bit数相加

用大白话从底层理解FPGA——进位链CARRY4,从入门到理解FPGA底层逻辑,fpga开发,fpga

综合后原理图

我们得到如下结论(靠左CARRY4称为进位链1,靠右CARRY4称为进位链2):

一、进位链1的CO[3:0]连到进位链2的CI[3:0],两者级联产生更大位宽的进位链。(若相加减数位宽越大,级联CARRY4越多,一个CARRY4能处理4bit数的加减。)

二、我们看LUT2原语INIT为6可知道,LUT2作用就是做异或操作,因此,蓝线意思代表两个加数的低四位异或后连入进位链1的S[3:0],两个加数的高四位异或后连入进位链2的S[3:0]。

用大白话从底层理解FPGA——进位链CARRY4,从入门到理解FPGA底层逻辑,fpga开发,fpga

LUT2原语

三、进位链1 O[3:0]连到输出的低4位,进位链2的O[3:0]连到输出的高4位。

这里注意下,进位链级联数越多,路径延迟就会越大,逻辑级数越高。所以在使用进位链时要综合考虑级联数与整个系统时钟的关系。特别在设计位宽较大计数器,最好选择用DSP替换。文章来源地址https://www.toymoban.com/news/detail-817574.html

到了这里,关于用大白话从底层理解FPGA——进位链CARRY4的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • des加密算法最简单的解释(更简单,大白话,读完就理解)

             目录 1、几个基本概念 第一个置换是:初始置换-终止置换-IP置换-初始置换IP 第二个置换:扩展置换(32位到48位) 第三个置换:压缩置换(S盒48位到32位) 第四个运算:循环左移(位数不变) 第五个置换:置换选择pc-1(64位到56位) 第六个置换:压缩置换pc-2(5

    2024年02月08日
    浏览(48)
  • 大白话解析LevelDB: VersionSet

    在 LevelDB 中, VersionSet 类是一个关键的内部组件,负责管理数据库的不同版本。这个类跟踪了所有的 SSTables(排序字符串表)和它们在数据库中的布局。每次对数据库进行修改时(如添加、删除数据),LevelDB 会创建一个新的 Version 对象,这个对象由 VersionSet 管理。 VersionSe

    2024年01月19日
    浏览(48)
  • 设计模式大白话——命令模式

    ​ 顾名思义,命令模式其实和现实生活中直接下 命令 的动作类似,怎么理解这个 命令 是理解命令模式的关键!!!直接说结论是很不负责的行为,因此我将会结合之后的例子来向你介绍它,来帮助你更好的理解,而不是仅仅死记硬背它。这样你会在以后需要的时候想起它

    2024年02月11日
    浏览(46)
  • 设计模式大白话——策略模式

    一、概述 ​ 从名字上来看,此设计模式的核心是 策略 二字,所谓策略,说白了就是能够针对不同的情况随机应变。接下来我将带你领略策略模式的魅力 二、场景举例 场景描述 ​ 现在有一个游戏,游戏中有各种各样的鸭子,有些鸭子是呱呱叫会用翅膀飞,有些鸭子是嘎嘎

    2024年02月16日
    浏览(44)
  • 大白话聊聊“深度学习”和“大模型”

    1950年图灵发表论文《计算机器与智能》( Computing Machinery and Intelligence),提出了“机器智能”(Machine Intelligent)的概念,并且提出了著名的“图灵测试”的方法来判断机器是否有智能。 1956年,达特茅斯会议,“人工智能”(Artificial Intelligent)概念被首次提出,人工智能作

    2024年02月02日
    浏览(61)
  • 用大白话举例子讲明白云计算

    前几天王坚院士在2023云栖大会上发表了关于云计算的演讲,听得我是热血沸腾,王院士称AI和云计算的结合是“云计算的第三次浪潮”,对此我深表认同。但是身边的很多朋友还不知道云计算是什么意思,有些人还认为百度云和百度云盘是一个东西,下面我用大白话举例说明

    2024年02月04日
    浏览(52)
  • 设计模式大白话——适配器模式

    ​ 适配器其实非常好理解,放到生活中来,我们身边处处都有这样的例子,最常见的是用的比较多的各种转接线(如:USB 转 Type-C),有了这个“适配器”,我们就能够将电脑和手机等设备相进行连接,而不需要改动电脑/手机的原有接口。 ​ 回到编程的世界中,假设我们的

    2024年02月10日
    浏览(49)
  • Lighting Network(闪电网络)大白话解析

    通道(Channel),通过在主网宣布通道建立,而后交易双方转至链下交易,把多次交易在链下完成,不占用主网资源,交易完成后在主网广播最终交易结果,无需更改主网机制即可实现吞吐量的提高。 “通道”是一个逻辑上的概念,实际使用过程中并没有“通道”,即使在数据传

    2024年02月04日
    浏览(44)
  • 用大白话举例子讲明白区块链

    什么是区块链?网上这么说: 区块链是一种分布式数据库技术,它以块的形式记录和存储交易数据,并使用密码学算法保证数据的安全性和不可篡改性。每个块都包含了前一个块的哈希值和自身的交易数据,形成了一个不断增长的链条。 区块链的特点包括: 分布式:区块链

    2024年02月04日
    浏览(57)
  • 别样的git学习--大白话学git

    希望用更加口语化的语言向大家讲述git 的魅力 1、Git-stash (贮存) 想象一下,你正在写一封重要的邮件,但突然你的老板告诉你需要立即处理另一个紧急任务。你还没完成邮件,不想丢失已写的内容,但你也需要一个干净的工作空间来处理新的任务。在这种情况下,Git 的

    2024年01月24日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包