八位二进制累加器的设计.docx
- 文档编号:5240022
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:47
- 大小:2.85MB
八位二进制累加器的设计.docx
《八位二进制累加器的设计.docx》由会员分享,可在线阅读,更多相关《八位二进制累加器的设计.docx(47页珍藏版)》请在冰豆网上搜索。
八位二进制累加器的设计
信息科学与技术学院
实
习
报
告
实习名称:
集成电路课程设计
学号:
2011****
姓名:
***
班级:
微电子1班
指导教师:
白天蕊
实习时间:
二O一四年七月
摘要
随着科学技术的发展,计算机不断地更新换代,给我们的生活带来越来越多的便捷,然而累加器作为计算机的重要组成部件,在运算器、中央处理器CPU中、汇编语言程序中都有各种不同的应用,因此很有必要了解其工作原理。
本次课程设计目的为DESIGNACMOS8-BITACCUMULATOR,八位累加器主要由两大模块组成:
八位加法器与八位寄存器。
首先DESIGNACMOSFULLADDER和DESIGNAMASTER-SLAVEFLIP-FLOP,然后再由它们构成八位加法器。
按定制设计流程设计各自原理图,确定参数,检验无误,即可进行原理图仿真及分析、逻辑功能验证、版图绘制、版图寄生电容提取、LVS验证及仿真分析。
通过选题,熟悉对cadence工具的应用,设计过程中运用模块化设计有助于整体的层次分明。
因此在学习了模拟电子技术,数字电子技术,模拟CMOS集成电路设计,数字集成电路设计等的基础上,由最底层的晶体管级别的电路连成更为复杂的电路,实现特定的功能。
关键词:
CMOS、ACCUMULATOR、全加器、触发器、累加器、版图、LVS验证、仿真、cadence、集成电路、模块化设计等。
目录索引
一、选题的背景及意义
二、整体思路
三、方案选择
1.八位加法器的选择
2.触发器的选择
3.最终方案
四、设计详细内容
模块一、DESIGNACMOSFULLADDER
1.1全加器介绍(包括工作原理,功能逻辑等)
1.2全加器原理图绘制
1.3全加器逻辑功能验证
1.4全加器延时及功耗分析
1.5全加器版图绘制与LVS验证
1.6全加器版图仿真
1.7小结
模块二、DESIGNAMASTER-SLAVEFLIP-FLOP
2.1触发器介绍(包括工作原理,功能逻辑等)
2.2D触发器原理图绘制
1.首先设计三输入与非门的原理图
2.对设计的三输入与非门创建符号
3.利用创建的三输入与非门符号设计主从触发器
4.对设计的主从触发器创建符号
2.3D触发器原理图仿真及分析
2.4D触发器逻辑功能验证
2.5D触发器版图绘制、LVS验证及仿真分析
1.主从触发器的版图
2.版图的提取
3.LVS验证
2.6小结
第三部分、DESIGNACMOS8-BITACCUMULATOR
3.1累加器介绍
3.2八位累加器原理图绘制
1.调用全加器与触发器的符号创建原理图
2.对设计的八位累加器创建符号
3.3八位累加器原理图仿真及分析
3.4八位累加器逻辑功能验证
3.5八位累加器版图绘制、LVS验证及仿真分析
1.版图绘制
2.版图寄生电容的提取
3.LVS验证
3.6小结
五、本次课程设计收获与心得
六、参考文献
一、选题的背景及意义
累加器在计算机组成部件当中具有重要的作用,是用来储存计算所产生的中间结果,是一种暂存器。
有各种不同的应用:
(1)在运算器中,累加器是专门存放算术或逻辑运算的一个操作数和运算结果的寄存器。
进行加、减、读出、移位、循环移位和求补等操作,是运算器的主要部分。
(2)在中央处理器 CPU 中,累加器 (accumulator)是一种暂存器,用来储存计算所产生的中间结果。
没有像累加器这样的暂存器,那么在每次计算(加法,乘法,移位等等)后就必须要把结果写回到内存,也许然后再读回来。
然而存取主内存的速度是比从算数逻辑运算单元(ALU)到有直接路径的累加器存取更慢。
(3)在汇编语言程序中,累加器——AX是一个非常重要的寄存器,但在程序中用它来保存临时数据时,最后将其转存到其它寄存器或内存单元中,以防止在其它指令的执行过程中使其中的数据被修改,从而得到不正确的结果,为程序的调试带来不必要的麻烦。
由于累加器在各种实际应用当中是必不可少的,而且实用性强。
因此很有必要了解其具体的工作原理,进一步加深对所学理论知识的灵活运用,并想办法将其电路进行优化,使运算速度更高,性能更好。
二、整体思路
累加器就是把一列的数字加起来。
一开始累加器设定为零,每个数字依序地被加到累加器中,当所有的数字都被加入后,结果才写回到主内存中。
首先设计一全加器,可以将两数字A和B及进位进行相加,由于触发器具有记忆功能,所以将它们所加的结果输入到触发器进行存储,然后将存储的结果作为全加器的其中一输入再次与输入数字相加,然后再进行存储,这样就可以实现累加的功能了。
ACOUT
BSUMOUT
CIN
累加器结构图
三、方案选择
八位二进制累加器主要由两大模块组成:
八位加法器与八位寄存器。
八位寄存器主要是由触发器组成的,八位加法器由一位全加器组成,所以最终归结到八位加法器的组成方式与各类触发器方案的选择。
1.八位加法器的选择:
(1)串行进位的并行加法器;
(2)并行进位的并行加法器;
a)组内并行,组间串行的进位链
b)组内并行,组间并行的进位链
它们的目的就是要进位信号的产生尽可能的快,因此产生了二重进位链或更高重进位链,显然进位速度的提高是以硬件设计的复杂化为代价来实现的。
(3)串行加法进位
串行加法进位从最低位进到最高位,即整个进位是分若干步骤进行的。
优点:
具有器件少、成本低、电路结构简单的优点。
缺点:
运算速度慢。
(4)超前进位
超前进位的所有位数进位是同时完成的。
一个CP脉冲就能完成整个进位过程。
优点:
运算速度快。
缺点:
电路复杂。
显然,串行进位方式的进位延迟时间太长了,要提高加法运算的速度,就要尽可能地减少进位延迟时间,也就是要改进进位方式,这就产生了并行进位方式和分组并行进位方式。
2.触发器的选择:
(1)正电平触发式触发器:
正电平触发式触发器的状态在CP=1期间翻转,在CP=0期间保持不变。
电平触发式触发器的缺点是存在空翻现象,通常只能用于数据锁存。
(2)主从触发器:
主从触发器由分别工作在时钟脉冲CP不同时段的主触发器和从触发器构成,通常只能在CP下降沿时刻状态发生翻转,而在CP其他时刻保持状态不变。
它虽然克服了空翻,但对输入信号仍有限制。
(3)边沿触发器:
边沿触发器只能在CP上升沿(或下降沿)时刻接受输入信号,其状态只能在CP上升沿(或下降沿)时刻发生翻转。
它应用范围广、可靠性高、抗干扰能力强。
3.最终方案:
综上所述,整体考虑,最终选择具有器件少、成本低、电路结构简单等优点的串行加法进位方式,触发器选用能克服空翻、可靠性高、抗干扰能力强的维持阻塞式边沿D触发器。
四、设计详细内容
模块一、DESIGNACMOSFULLADDER
1.1全加器介绍(包括工作原理,功能逻辑等)
全加器是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器。
一位全加器可以处理低位进位,并输出本位加法进位。
多个一位全加器进行级联可以得到多位全加器。
一位全加器的表达式如下:
Si=Ai⊕Bi⊕Ci-1
第二个表达式也可用一个异或门来代替或门对其中两个输入信号进行求和:
全加器晶体管级电路:
各MOS管参数:
1.2全加器晶体管级原理图绘制
注意:
Cin为关键信号(最后稳定信号),故靠近输出端,可以减小延时。
1.3全加器逻辑功能验证
全加器的逻辑表达式可表示为:
其真值表如下表所示:
输入
输出
A
B
Cin
Sum
Cout
0
0
0
0
0
0
0
1
1
0
0
1
0
1
0
0
1
1
0
1
1
0
0
1
0
1
0
1
0
1
1
1
0
0
1
1
1
1
1
1
1.4全加器延时及功耗分析
首先,对上面的全加器进行封装。
Design->Create->FromCellview,生成的封装symbol如图所示。
对上面的全加器原理图进行封装之后,建立如图所示的Full_Adder_test原理图,原理图主要用来分析全加器的延时以及功耗等。
由于要测量最坏情况下的延时以及功耗,所以首先应分析何时才是最坏的情况。
由全加器原理图图一可以看出,最长的MOS管链是输入A、B、Cin的三个MOS管,所以最大的延时就取决于这最长的MOS管链。
下面我们来分析该链最坏下降延时情况下的输入条件,如图所示
(a)输入B=0保持不变(b)输入B由0->1变化
由于节点寄生电容的存在,所以每一次充放电的过程中,都要对寄生电容C1及C2进行充放电,进而增加了传输延时。
如图所示,当Cin=1,A=1,B=0保持不变,即Cin、A输入的NMOS管导通,B输入的NMOS管截止,NMOS没有到地的通路,负载电容不会放电,然而不期望的是,Cin和A反而会对寄生电容C1及C2进行充电,使得寄生电容C1及C2存储电荷;当Cin=1,A=1,B由0->1变化时,即Cin、A、B输入的NMOS管均导通,有到地的通路,所以不仅负载电容Cload会放电,而且寄生电容C1及C2也要放电,所以增加了下降延时的时间。
由于B是最后稳定的信号(通常称为关键信号),所以经过上面的分析可以得出一个结论:
为了减小延时、提高速度,关键信号(最后稳定的信号)应该尽量靠近输出端。
也就是说,当Cin=1,A=1,B由0->1变化时,下降延时最大。
同理可以分析出,当Cin=0,A=0,B由1->0变化时,上升延时最大。
(1)最坏的上升延时分析
下面利用瞬态分析,测量Cin=1,A=1,B由0->1变化时的延时情况。
如下图所示,是该情况下的输入输出波形。
Cin=1,A=1,B由0->1时,输入输出波形
用计算器中的delay函数测得此时的最坏下降延时(对于Sum来说,此时相当于最坏的上升延时)如图所示。
由图可知,最坏的上升延时484.75ps
如图七所示,是利用计算器中的spectrerPower函数计算出的功耗波形。
由图可以看出,在静态时,电路消耗的功耗很微小(几乎为0);然而在动态时,相对静态而言,消耗的功耗就比较大。
然而,从整体上来说功耗还是很小的。
图七Cin=1,A=1,B由0->1时功耗的波形
(2)最坏的下降延时分析
下面利用瞬态分析,测量Cin=0,A=0,B由1->0变化时的延时情况。
如下图所示,是该情况下的输入输出波形。
图八Cin=0,A=0,B由1->0时,输入输出波形
用计算器中的delay函数测得此时的最坏上升延时(对于Sum来说,此时相当于最坏的下降延时)如图九所示。
由图可知,最坏的下降延时为528.98ps
如图十所示,是利用计算器中的spectrerPower函数计算出的功耗波形。
由图可以看出,在静态时,电路消耗的功耗很微小(几乎为0);然而在动态时,相对静态而言,消耗的功耗就比较大。
然而,从整体上来说功耗还是很小的。
图十Cin=0,A=0,B由1->0时功耗的波形
1.5全加器版图绘制与LVS验证
根据实验要求绘制该全加器的版图如图十一所示。
该全加器版图使用AMI0.6um工艺,栅长为600nm,NMOS和PMOS管的宽都以最小尺寸方向器作为标准进行放大。
下图就是提取出来的版图,可清楚的看到提取版图中的寄生电容。
提取版图之后,就进行LVS验证,其输出结果如下图所示。
节点完全匹配(Thenet-listsmatch.),所以可以知道原理图与版图完全一致。
原理图和版图网表中都有19个节点,7个端口以及14个PMOS和NMOS。
1.6全加器版图仿真
为进行版图仿真,同时比较版图仿真和原理图仿真结果,所以建立新的原理图,如图所示。
(1)首先为与非门创建一个configview。
然后,在AnalogEnvironment环境中,Setup->Design选择所要模拟的线路图Full_Adder_posttest,viewname选择config,然后按以前的方法进行仿真,仿真输入输出结果如图所示。
(2)不同的输入电压下延时与功耗
①最坏的上升延时分析(V=5V,Cin=1,A=1,B0->1)
输入电压V=5V时,当Cin=1,A=1,B由0->1变化时,用计算器中的delay函数测得此最坏下降延时(对于Sum来说,此时相当于最坏的上升延时)如图所示。
由图可知,Sum最坏的上升延时为484.14ps;而Sum_layout最坏的上升延时。
所以,版图仿真的最坏上升延时比原理图仿真的最坏延时小79.1ps。
②最坏的下降延时分析(V=5V,Cin=0,A=0,B1->0)
输入电压V=5V时,当Cin=0,A=0,B由1->0变化时,用计算器中的delay函数测得此时Sum和Sum_layout最坏上升延时(对于Sum来说,此时相当于最坏的下降延时)如图二十、二十一所示。
由图可知,Sum最坏的下降延时521.267ps;而Sum_layout最坏的下降延时447.76ps。
所以,版图仿真的最坏下降延时比原理图仿真的最坏下降延时小73.507ps。
输入的电源电压等于5V时,此时的功耗输出波形如下图所示。
由图可以看出,和前面的一样,在静态时,电路消耗的功耗很微小(几乎为0);然而在动态时,相对静态而言,消耗的功耗就比较大。
然而,从整体上来说功耗还是很小的。
③最坏的上升延时分析(V=3.3V,Cin=1,A=1,B0->1)
输入电压V=5V时,当Cin=1,A=1,B由0->1变化时,用计算器中的delay函数测得此最坏下降延时(对于Sum来说,此时相当于最坏的上升延时)如图二十四、二十五所示。
由图可知,Sum最坏的上升延时533.42ps;而Sum_layout最坏的上升延时457.95ps。
所以,版图仿真的最坏上升延时比原理图仿真的最坏延时小75.47ps。
④最坏的下降延时分析(V=3.3V,Cin=0,A=0,B1->0)
输入电压V=3.3V时,当Cin=0,A=0,B由1->0变化时,用计算器中的delay函数测得此时Sum和Sum_layout最坏上升延时(对于Sum来说,此时相当于最坏的下降延时)如图所示。
由图可知,Sum最坏的下降延时756.19ps;而Sum_layout最坏的下降延时641.69ps。
所以,版图仿真的最坏下降延时比原理图仿真的最坏下降延时小114.5ps
输入的电源电压等于3.3V时,此时的功耗输出波形如下图所示。
由图可以看出,和前面的一样,在静态时,电路消耗的功耗很微小(几乎为0);然而在动态时,相对静态而言,消耗的功耗就比较大。
然而,从整体上来说功耗还是很小的。
电源电压等于3.3V功耗输出波形:
结论:
由上表实验结果看出,版图仿真的延时比原理图仿真的延时要小。
在相同的输入情况下,Vdd=5V时的延时比Vdd=3.3V时的延时小。
但是,从图二十三和三十可以看出,Vdd=5V时的功耗比Vdd=3.3V时的功耗大很多。
1.7小结
对于标准的CMOS工艺,功耗-延时积为一常数(当负载电容和电源一定时)。
故可以通过降低电源电压来减小功耗。
由于功耗与Vdd平方成正比,所以减小Vdd是降低功耗最有效的办法。
但是,其代价是电路的速度会下降。
从上面的表格也可以得出相同的结论。
同时,减小有效电容,降低工作频率也可以减小功耗。
模块二、DESIGNAMASTER-SLAVEFLIP-FLOP
2.1触发器介绍(包括工作原理,功能逻辑等)
SD和RD接至基本RS触发器的输入端,它们分别是预置和清零端,低电平有效。
当SD=1且RD=0时(SD的非为0,RD的非为1,即在两个控制端口分别从外部输入的电平值,原因是低电平有效),不论输入端D为何种状态,都会使Q=1,Q非=0,即触发器置1;当SD=0且RD=1(SD的非为1,RD的非为0)时,Q=0,Q非=1,触发器置0,SD和RD通常又称为直接置1和置0端。
我们设它们均已加入了高电平,不影响电路的工作。
工作过程如下:
1.CP=0时,与非门G3和G4封锁,其输出Q3=Q4=1,触发器的状态不变。
同时,由于Q3至Q5和Q4至Q6的反馈信号将这两个门打开,因此可接收输入信号D,Q5=D,Q6=Q5非=D非。
2.当CP由0变1时触发器翻转。
这时G3和G4打开,它们的输入Q3和Q4的状态由G5和G6的输出状态决定。
Q3=Q5非=D非,Q4=Q6非=D。
由基本RS触发器的逻辑功能可知,Q=Q3非=D。
3.触发器翻转后,在CP=1时输入信号被封锁。
这是因为G3和G4打开后,它们的输出Q3和Q4的状态是互补的,即必定有一个是0,若Q3为0,则经G3输出至G5输入的反馈线将G5封锁,即封锁了D通往基本RS触发器的路径;该反馈线起到了使触发器维持在1状态和阻止触发器变为0状态的作用,故该反馈线称为置1维持线,置0阻塞线。
Q4为0时,将G3和G6封锁,D端通往基本RS触发器的路径也被封锁。
Q4输出端至G6反馈线起到使触发器维持在0状态的作用,称作置0维持线;Q4输出至G3输入的反馈线起到阻止触发器置1的作用,称为置1阻塞线。
因此,该触发器常称为维持-阻塞触发器。
总之,该触发器是在CP正跳沿前接受输入信号,正跳沿时触发翻转,正跳沿后输入即被封锁,三步都是在正跳沿后完成,所以有边沿触发器之称。
与主从触发器相比,同工艺的边沿触发器有更强的抗干扰能力和更高的工作速度。
状态转移图:
2.2D触发器原理图绘制
1.首先设计三输入与非门的原理图
2.对设计的三输入与非门创建符号
3.利用创建的三输入与非门符号设计主从触发器
4.对设计的主从触发器创建符号
2.3D触发器原理图仿真及分析
对上面的触发器原理图进行封装之后,建立如图所示的原理图,原理图主要用来分析触器的最大时钟频率和最大时钟歪斜
。
1.最大时钟频率分析
将CLR_L和PR_L全部置为1,即V1=5和V2=5,即在此处为了方便观察输出Q和CLK以及D之间的逻辑关系,使得清零端CLR_L和置1端PR_L无效,下面分别为CLK周期T=2n、1.5n以及1.3n时的输入和输出波形;
T=2ns
T=1.5ns
T=1.3ns
由上面三幅图可以看出,T=2ns和1.5ns时,输出正确,减小T即增大频率,当T=1.3ns时,输出波形在部分点输出已经不正确了,因此可以估算该触发器的最大时钟频率Fmax=1/1.5ns=0.667Ghz。
2.原理图仿真验证结果:
3.延时分析:
由图上可知上升延时为2.484ns-1.515ns=0.969ns,下降延时为4.605ns-4.005ns=0.600ns,Q的上升时间为3.010ns-2.173ns=0.837ns,下降时间为5.256ns-4.456ns=0.800ns。
2.4D触发器逻辑功能验证
仿真波形:
2.5D触发器版图绘制、LVS验证及仿真分析
(1)主从触发器的版图
(1)版图的提取
(2)LVS验证
2.6小结
对边沿D触发器归纳为以下几点:
1.边沿D触发器具有接收并记忆信号的功能,又称为维持-阻塞触发器;
2.边沿D触发器属于脉冲触发方式;
3.边沿D触发器不存在约束条件和一次变化现象,抗干扰性能好,工作速度快。
第三部分、DESIGNACMOS8-BITACCUMULATOR
3.1累加器介绍
累加器是用来储存计算所产生的中间结果,是一种暂存器。
累加器就是把一列的数字加起来。
一开始累加器设定为零,每个数字依序地被加到累加器中,当所有的数字都被加入后,得出结果。
在运算器中、在中央处理器cpu中、在汇编语言程序中都有其特定的作用,累加器在各种实际应用当中是必不可少的,而且实用性强。
3.2八位累加器原理图绘制
1.调用全加器与触发器的符号创建原理图
2.对设计的八位累加器创建符号
3.3八位累加器原理图仿真及分析
仿真结果:
计算延时:
3.4八位累加器逻辑功能验证
1.在QUARTUS软件中利用VERILOGHDL语言编写八位累加器:
八位二进制累加器代码:
moduleaccumulator8(Q,cout,A,cin,clk,clear);
output[7:
0]Q;
outputcout;
input[7:
0]A;
inputcin,clk,clear;
wire[7:
0]sum;
add8accadd8(sum,cout,Q,A,cin);
reg8accreg8(Q,sum,clk,clear);
endmodule
八位二进制全加器器代码:
moduleadd8(sum,cout,b,a,cin);
output[7:
0]sum;
outputcout;
input[7:
0]a,b;
inputcin;
assign{cout,sum}=a+b+cin;
endmodule
八位二进制寄存器代码:
modulereg8(qout,in,clk,clear);
output[7:
0]qout;
input[7:
0]in;
inputclk,clear;
reg[7:
0]qout;
always@(posedgeclkorposedgeclear)
begin
if(clear)qout=0;
elseqout=in;
end
endmodule
2.在QUARTUS软件中利用原理图方式创建八位累加器原理图:
3.仿真波形:
3.5八位累加器版图绘制、LVS验证及仿真分析
1)版图绘制
在一个版图编辑界面画出全加器与触发器的版图如下:
将它们进行连接得到一位累加器的版图如下:
进行复制后串联,就得到两位累加器的版图如下:
依次类推,可画出八位累加器的版图如下:
2)版图寄生电容的提取
3)
LVS验证
4)版图仿真
可知版图与底层原理图仿真结果较为理想。
3.6小结
累加器A(ACCUMULATOR)是一个最常用的具有特殊用途的二进制8位寄存器,又可记作ACC,专门用来存放操作数或运算结果。
在CPU执行某种运算前,大部分单操作数指令的操作数取自累加器;两操作数指令中的其中一个操作数也通常放在累加器A中,运算完成后累加器A中便可得到运算结果。
五、本次课程设计收获与心得
通过本次课程设计对八为二进制累加器的设计与实现,确实积累了不少经验,锻炼了我的独立工作和实际动手的能力,加深了对累加器工作原理的认识,提高了对复杂的综合性实践环节具有分析问题、解决问题、概括总结的实际工作能力,对涉及累加器项目的开发、设计过程有了初步的认识。
在这次短暂的课程设计中,使我学到了不少的道理,真正理解到,理论与实践之间还有很大的差距,这必将有利于我们以后的学习。
使我明白,在以后的学习中,要不断的完善自己的知识体系结构,注意理论与实践的结合,在整个设计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 八位 二进制 累加器 设计