一款32位嵌入式CPU的定点加法器设计

发布者:浅唱清风最新更新时间:2010-09-05 来源: 电子技术应用 关键字:借鉴  改进  定点  加法器 手机看文章 扫描二维码
随时随地手机看文章
  从CPU的指令执行频率上看,算术逻辑单元、程序计数器、协处理器是CPU中使用频率最多的模块,而加法器正是这些模块的核心部件,几乎所有的关键路径都与之有关,因而设计一种通用于这些模块的加法器是整个CPU设计中关键的一步。为此,笔者根据32位CPU的400MHz主频的要求,结合CPU流水线结构,借鉴各种算法成熟的加法器,提出一种电路设计简单、速度快、功耗低、版图面积小的32位改进定点加法器的设计方案。
1 设计思路
  对于高性能CPU中使用的加法器,速度显然是第一位的,所以考虑采用并行计算的方法,并且在电路的设计上采用少量的器件来获得速度上的巨大提升。从面积角度出发,链式进位加法器(Ripple-Carry Adder)[1]的器件最少,面积最小,版图工作量也最小,可是由于加法器的高位进位要等待低位的运算结束后才能得到,所以没有办法在速度上达到要求。鉴于此,采用类似于链式加法器的结构。
  首先从进位选择加法器(Carry-Select Adder)[2]得到提示,将32位加法器一分为二,分为低16位加法器和高16位加法器,再将低16位加法器的进位输出作为选择信号,用于选择高16位加法器的和及第27位的进位输出(这个进位输出要在溢出逻辑判断中使用,而普通的加法器则不用产生进位)。通过这样的处理,将一个32位的加法器简化就成了两个16位的加法器,如图1所示。


  另外,从超前进位加法器(Carry-Look-Ahead Adder)[3]获得提示,在超前进位加法器中引入中间变量G和P用于加速进位链的速度。而G和P在逻辑表达式上与前一级的进位无关,只与每一级的操作数输入有关,而且它们又是构成本级进位的必要部分。在微处理器的数据通道上,数据传输是并行进行的,即两个32位操作数几乎同一时间到达加法器。所以,G和P不论是加法器的最低位还是加法器的最高位,几乎都可以在相同的时间内得到,因而在进位链上就可以借鉴这个特点加速进位的传递。以一个四位加法器为例,有如下的逻辑推导过程:
  
  令上式中P1P2P3P4为Pgroup,G1P2P3P4+G2P3P4+G3P4+G4为Ggroup,如果将32位加法器划分为若干的小块,则每一个小块都可以有自己相对应的Ggroup和Pgroup。由此可知对于整个加法器的时延来说,关键路径的时延总值可以由三部分组成:①产生Ggroup和Pgroup的时延;②进位传递逻辑上的器件时延;③加法器进位链上的导线时延。对于这三类时延,时延①与时延(②+③)存在重叠的部分,于是使这两类时延合理衔接,可以使得进位链上的逻辑级数最小,从而使得电路上的传输时延达到最小。
2 具体实现
2.1 4位加法器模块的实现
  在具体的电路设计中,先将32位数据通道划分成了高低两部分,然后以4位为单元划分成更小的模块。这些模块在结构上是基本一致的,但在功能上要完成本模块四组操作数(A[k:k+3]和B[k:k+3])与进位Ck的加法运算,并要产生模块的中间变量Ggroup和Pgroup的运算。
  对于单一的每一位,定义它的G和P分别为:Gi=AiBi, Pi=Ai⊕Bi,加法器的和SUMi=Ai⊕Bi⊕Ci-1=Pi⊕Ci-1,考虑到器件的实际驱动能力,结合加法器的另一个功能——减法运算,设计出如图2所示的带减法功能的一位加法器电路。


  设计的4位加法器进位链如图3所示,除C0外,输入(i和i)都是由图2的一位加法器产生的,所有4位进位链Ci都按超前进位加法器连接方式[3]直接接入相应位置。由此可以看出,进位信号到达各位的逻辑级数是相当的,只要在进位信号到达之前使所有的中间信号i和i都能及时产生,就能及时得到每一位的和(SUM)。


  图4是产生4位加法器块进位及块的Ggroup和Pgroup信号的电路。借鉴于超前进位加法器的传递逻辑电路[3],可知并不是所有的4位加法器都需要向它的下一个模块传送进位信号,而只要产生传递进位所需的Ggroup和Pgroup信号即可。而有些位置,由于进位链设计的实际需要,只需要利用4位加法器模块产生的进位信号,而不必采用传递逻辑产生的进位信号,具体的情况还是有区别的。为了充分利用图3中产生的相关信号的复用,在进位信号C4的产生电路部分,进位链方向上的逻辑级数只有两级,可以说还是比较简单了。可是,综合前面所谈到的4位加法器的电路,可以发现有一些中间信号(i和i)的负载是不均衡的,如2的负载比34要重很多。所以在设计的时候,如果考虑到尽量降低版图的复杂程度,就要在面积上做出适当的牺牲,尽量以最大负载进行考虑,使得器件的设计符合时延上的要求;同时还要充分考虑到在深亚微米工艺条件下导线的时延问题,即设计的电路不但要考虑到所承受的器件的负载,而且还要结合版图设计中实际的导线负载,定出上述电路的合理尺寸。


2.2 传递逻辑电路实现
  完成上述基本4位加法器的电路设计后,要构造一个完整的32位加法器还需借助于传递逻辑电路。传递逻辑电路可以对4位加法器模块的进位进行传递,也可以对由两个4位加法器模块组成的8位加法器模块的进位进行传递。对于8位加法器模块,由于低4位的进位可以表示为C4=C0Ggroup+Pgroup,则8位加法器模块的进位为:
  
  由此可以设计出如图5和图6所示的两种进位传递逻辑电路。


2.3 溢出逻辑电路实现
  设计中还采用了判断溢出的方法[4]。当两个有符号数进行加减法运算时,若最高的数值位向符号位的进位(本设计中的C30)值与符号位产生的进位(本设计中的C31)输出值不同,则表明加减运算产生了溢出。
  由上述可知,加法器时延的关键路径在进位链上,而进行溢出判断所需要的信息C30与C31都在这条路径上。于是采用类似于进位跳位加法器(Carry-Skip Adder)[2]的办法,使得低位的进位快速跳位到高位,使C30与C31快速产生。具体实现如下:
  ①溢出的逻辑表达式推导
  由于Overflow=(C30⊕C31)·Overflag(Overflag表示当前ALU加法器进行有符号运算),需要进行溢出判断(它是ALU控制模块在译码阶段产生的,在指令执行阶段起始段就输出到数据通道,所以它不在关键路径上)。
  
  显然,分式(1)是和进位链无关的一部分,可以在每一个流水线的指令执行阶段起始段很快得到,而分式(2)则是和进位链有关的部分,其具体逻辑值将取决于进位C27的值。分式(1)中高位的Gi和Pi都可以在进位C27到来之前预先得到,只要C27一到就可以进行逻辑判断,得到相应的逻辑。
  
  ②溢出逻辑电路实现
  根据式(3)的逻辑表达式,可设计出加法器溢出逻辑产生电路,如图7所示。


  设计得到的32位加法器在SMIC流片后,经测试,运算速度在400MHz以上,满足设计要求,为后续浮点加法器的设计提供了很好的铺垫。

关键字:借鉴  改进  定点  加法器 引用地址:一款32位嵌入式CPU的定点加法器设计

上一篇:单片机控制的网络交换机设计与实现
下一篇:一种带Cache的嵌入式CPU的设计与实现

推荐阅读最新更新时间:2024-03-16 12:30

CAN协议的错帧漏检率推导及改进过程简介
  当数据在传送中出错,且错帧被漏检时,就意味着错误的数据被送到应用层,除非应用层有额外的数据识别措施,这个数据就可能引起不可预测的结果。CAN协议声称有很低的错帧漏检率(4.7×10-11×出错率),有的宣传材料在一定条件下推出要1000年才有1次漏检,这是不正确的。错帧漏检率是一个十分重要的指标,很多应用就是看到Bosch CAN2.0规范上的说明才选用CAN的。但是对这个指标的来源仅有极少的公开资料,以及很少的讨论,使用户很难对它确认或验证,这给用户带来风险。本文采用了重构出错漏检实例的方法,导出了CAN的漏检错帧概率下限,它比CAN声称的要大几个数量级。在许多应用中,CAN已是可靠性和价格平衡下的不二选择,或者已被长期生产
[嵌入式]
μC/OS-II实时操作系统内存管理的改进
    摘要: 分析了μC/OS-II实时操作系统在内存管理上存在的不足,提出了改进方法,通过一个具体实例描述了该方法的实现。     关键词: 实时操作系统 内存管理 微处理器 链接器 μC/OS-II 是一种开放源码的实时操作系统,具有抢先式、多任务的特点,已被应用到众多的微处理器上。虽然该内核功能较多,但还是有不甚完善的地方。笔者在分析使用中发现,内核在任务管理(包括任务调度、任务间的通信与同步)和中断管理上是比较完善的,具有可以接受的稳定性和可靠性;但在内存管理上显得过于简单,内存分区的建立方式有不合理之处。 1 内存管理不足之处的分析 在分析许多 μC/OS-II 的应用实例中发现
[嵌入式]
基于dsPIC的PV逆变器的一种改进结构及其实现
0 引言 PV系统作为一种便捷和前景广阔的可再生能源,与风能等其他形式的可再生能源相比,PV能源系统具备许多优势。如能够为单块面板和整个系统提供最佳转换效率,更低的安装成本等。但是目前大多数PV系统的核心都采用单级全桥逆变器结构,这种结构不能有效使用较宽的输入PV电压,而且变压器磁芯体积较大,实际使用中会产生较大的交流纹波。为适应大的输入电压范围,通常使用两级拓扑,但是尤其是对于单PV电池板系统而言,两级拓扑会使系统变得成本高昂且复杂。为了简化系统,本文提出并实现了一种采用并联耦合的单级拓扑结构,实际证明采用这种改进型结构可以有效的解决上述矛盾。 1 系统原理 本文设计采用反激式转换器来产生与电网同相和同步的正弦输出电压和电
[单片机]
基于dsPIC的PV逆变器的一种<font color='red'>改进</font>结构及其实现
基于IQmath库的定点DSP算法设计
引言 DSP数字信号处理器分为定点和浮点两种基本类型,它们之间最大差异在于浮点DSP比定点DSP具有更强大的计算能力和更大范围的动态精度。浮点DSP内部设有专门支持浮点运算的硬件单元,对浮点格式的数据可以直接通过代码加入硬件运算中,因此运算速度很高。而定点DSP没有定点运算单元,它对浮点格式的实数必须通过软件才能实现,这样就增加了指令代码,间接地使得定点DSP运算速度低于浮点DSP,典型的浮点处理器,如TI公司的C6000系列,几乎所有的嵌入式微控制器都为定点处理器,如TI公司的C2000系列。因为浮点DSP的价格更加昂贵,因此定点DSP仍然有其巨大的优势。但是任何算法都需要进行浮点运算,因此如何提高在定点DSP上进行的浮点
[嵌入式]
社会责任强担当 艾迈斯半导体改进COVID-19快速检测
随着后疫情时代的到来,精准防控、科学防控、常态化防控成为重点,在这过程中,如何快速、低成本地进行抗体检测,是扭转防疫局面的关键措施之一。因此,医疗市场上对能够高效、精准地检测抗体的设备需求越发迫切。为了助力疫情防控工作,打赢这场世界范围内的“战疫”,近日,艾迈斯半导体(以下简称ams)与合作伙伴Senova开发出了全新的解决方案,旨在通过创新的试验成果与技术解决方案来应对医疗市场不断增长的抗体检测需求。 ams通过手机、汽车等领域的光学器件或者传感器产品被大众所熟知。特别是在今年上半年ams完成了对于Osram的收购,未来将延续光学照明和图像传感器的全球领导地位。今年上半年ams集团收入9.69亿美元,同比增长了22%,这是因
[医疗电子]
社会责任强担当 艾迈斯半导体<font color='red'>改进</font>COVID-19快速检测
Waymo与DeepMind合作改进AI算法
谷歌母公司Alphabet 旗下自动驾驶子公司Waymo的自动驾驶汽车与引导普通汽车的“大脑”有一些共同之处:其智能都由进化推动发展。目前,Waymo的工程师就正与DeepMind(也是Alphabet旗下子公司,专注于AI)的研究人员合作,寻找一种更加高效的方法,培训和调整Waymo的自动驾驶算法。 研究人员们采用了一种称为“基于群体进行训练”(PBT)的技术,此前DeepMind研发了该技术,以提升视频游戏的算法。PBT技术的灵感来自于生物进化,通过让候选代码从算法群中抽取“最合适”的样本(最有效执行给定任务的样本),加速选出特定任务中用到的机器学习算法和参数。 以此种方式改进AI算法可帮助Waymo获得优势。随着自动
[嵌入式]
LabVIEW 8.2程序框图的改进
  LabVIEW 8.2对程序框图及相关功能进行了很大的改进,主要突出体现在以下几个方面。   1.默认颜色的更改   程序框图上错误簇的连线和终端显示为暗黄色而不再是粉红色。   强制转换点默认为红色而不再是灰色。选择 工具 选项 ,并从 类别 列表中选择 颜色 ,即可更改强制转换点的颜色。若取消勾选 使用默认颜色 复选框,并点击 强制转换点 对应的颜色盒,即可选择一种不同的颜色。   2.从VI层次结构中删除断点   在Ⅵ的前面板或程序框图窗口中,从菜单栏中选择 编辑 从层次结构中删除断点 ,可以删除Ⅵ层次结构中所有的断点。对于动态调用的Ⅵ或被静态Ⅵ引用函数引用的Ⅵ,必须手动删除断点。  
[测试测量]
改进型PID神经元控制算法在APF控制中的应用
1.引言 并联型有源电力滤波器是一种补偿电力系统谐波的电力电子装置,其主要的结构分为谐波检测,PWM信号生成,直流侧电压控制及主电路4部分,其中,直流侧的电压控制的效果将直接影响到APF的补偿结果。传统的控制方法是采用PI控制器,因其结构简单,调整方便,目前已经得到广泛的应用。但是随着控制技术的不断发展,利用新的控制技术以使APF获得更好的效果已成为大势所趋。具有自学习适应能力的基于单神经元网络的PID控制算法,结构简单,且能够适应环境的变化,鲁棒性强,近年来成为研究的热点。本文针对并联型APF的特点,对基于单神经元网络的PID控制算法进行一定的改进并通过仿真,证实了其在并联型APF中应用的可行性和优越性。 2.并联型APF的传统
[电源管理]
<font color='red'>改进</font>型PID神经元控制算法在APF控制中的应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved