64位加法器设计解析.docx
- 文档编号:6912637
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:16
- 大小:387.30KB
64位加法器设计解析.docx
《64位加法器设计解析.docx》由会员分享,可在线阅读,更多相关《64位加法器设计解析.docx(16页珍藏版)》请在冰豆网上搜索。
64位加法器设计解析
六十四位全加器的设计
一、实验目的:
设计一个64位的全加器实现加法功能。
二、实验要求:
用两种方法实现64位全加器。
第一种:
用Sedi画出64位全加器电路图,并生成网表,然后进行功能验证,最后将电路图生成版图。
第二种:
用VHDL语言写出64位全加器的程序表达式,并进行功能验证,最后将程序语言转换成电路图。
三、实验过程
3、1分析
一次画出64位全加很有难度,但考虑到全加器的结构,我们可以用4个16位的全加器组成一个64位的加法器。
同样,一个16位的全加器可以由4个4位全加器组成,一个4位全加器可以由4个一位全加器组成。
一位全加器又可以由三个半加器或两个半加器与一个或门组成。
所以整个设计思路可以简化为:
半加器一位全加器四位全加器十六位全加器六十四位全加器
3、2功能设计与验证(画图法)
3、2、1半加器设计
半加器实现加法,输入A、B,输出C、S(C为进位,S为本位);
半加器真值表如下:
A
B
C
S
0
0
0
0
0
1
0
1
1
0
0
1
1
1
1
0
分析真值表得出:
C=AB;
所以得出半加器的电路图为:
半加器符号图:
(
)(
)(
)
与非门或非门非门
3、2、2一位全加器设计
一位全加器可由三个半加器组成电路图如下:
一位全加器的电路图符号如下:
3、2、3四位全加器的设计
四位全加器可由四个一位全加器组成,四位全加器电路图如下:
四位全加器符号图如下:
网表输入如下:
1、添加工作电压;
VvddvddGND5
2、添加模型文件;
.include"D:
\iceda\TannerPro9\TSpice7.0\models\ml2_125.md"
3、添加输入信号;
VA0A0GNDPULSE(0505n5n50n100n)
VA1A1GNDPULSE(0505n5n100n200n)
VA2A2GNDPULSE(0505n5n150n300n)
VA3A3GNDPULSE(0505n5n120n240n)
VB0B0GNDPULSE(0505n5n50n100n)
VB1B1GNDPULSE(0505n5n100n200n)
VB2B2GNDPULSE(0505n5n150n300n)
VB3B3GNDPULSE(0505n5n120n240n)
VCiCiGNDPULSE(0505n5n50n100n)
4、添加参数设置;
.paraml=0.5u
5、输出设置;
.printtranv(A0)v(A1)v(A2)v(A3)v(B0)v(B1)v(B2)v(B3)v(Ci)v(S0)v(S1)v(S2)v(S3)v(C)
6、设置分析;
.tran/op1n400nmethod=bdf
总网表如下
.include"D:
\iceda\TannerPro9\TSpice7.0\models\ml2_125.md"
VvddvddGND5
VA0A0GNDPULSE(0505n5n50n100n)
VA1A1GNDPULSE(0505n5n100n200n)
VA2A2GNDPULSE(0505n5n150n300n)
VA3A3GNDPULSE(0505n5n120n240n)
VB0B0GNDPULSE(0505n5n50n100n)
VB1B1GNDPULSE(0505n5n100n200n)
VB2B2GNDPULSE(0505n5n150n300n)
VB3B3GNDPULSE(0505n5n120n240n)
VCiCiGNDPULSE(0505n5n50n100n)
.paraml=0.5u
.tran/op1n400nmethod=bdf
.printtranv(A0)v(A1)v(A2)v(A3)v(B0)v(B1)v(B2)v(B3)v(Ci)v(S0)v(S1)v(S2)v(S3)v(C)
(由于步骤相同,以此为例,后面网表添加均简写)
仿真结果:
(四位全加器仿真图)
3、2、4十六位全加器的设计
十六位全加器可由四个四位全加器组成,十六位全加器电路图如下:
十六位全加器符号图如下:
网表输入:
仿真图如下:
3、2、5六十四位全加器的设计
六十四全加器可由四个十六位全加器组成,六十四位全加器电路图如下:
六十四位全加器符号图如下:
网表添加如:
六十四位全加器仿真图:
六十四位全加器生成版图:
1、加压焊块
将设计好的六十四位全加器的电路图例化进新的module中,然后引用PAD模块和端口。
六十四位加法器电路的每一个输入输出端都要加上输入输出压焊块,在库模块文件(d:
\iceda\TannerPro9\Sedit8.1\tutorial\schematic\lights.tdb)中已经有绘制好的压焊块模块,主要包括PadGnd、PadVdd、IPAD、OPAD。
加好压焊块后如图;
2、输出tpr文件。
3、Ledit参数重置。
4、输出版图:
六十四位全加器的版图
四、第二种方法实现六十四位全加器
设计思路和第一种方法类似,只不过是用VHDL语言实现。
主要程序代码如下;
4、1或门程序
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityhuomenis
Port(a:
instd_logic;
b:
instd_logic;
c:
outstd_logic);
endhuomen;
architectureBehavioralofhuomenis
begin
c<=aorb;
endBehavioral;
或门电路图
4、2半加器程序;
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entitybanjiais
Port(a:
instd_logic;
b:
instd_logic;
s:
outstd_logic;
c:
outstd_logic);
endbanjia;
architectureBehavioralofbanjiais
begin
c<=aandb;
s<=axorb;
endBehavioral;
半加器电路图:
4、3一位全加器程序;
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityquanjia_1is
Port(a:
instd_logic;
b:
instd_logic;
ci:
instd_logic;
c1:
outstd_logic;
s1:
outstd_logic);
endquanjia_1;
architectureBehavioralofquanjia_1is
componentbanjia
Port(a:
instd_logic;
b:
instd_logic;
s:
outstd_logic;
c:
outstd_logic);
endcomponent;
componenthuomen
Port(a:
instd_logic;
b:
instd_logic;
c:
outstd_logic);
endcomponent;
signalD,E,F:
std_logic;
begin
u1:
banjiaportmap(a=>a,b=>b,c=>D,s=>E);
u2:
banjiaportmap(a=>ci,b=>E,c=>F,s=>s1);
u3:
huomenportmap(a=>F,b=>D,c=>c1);
endBehavioral;
一位全加器电路图:
一位全加器电路图:
(四位与十六位加法器程序类似,此处略去。
)
4、4四位全加器程序;
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityquanjia_4is
Port(a4:
instd_logic_vector(3downto0);
b4:
instd_logic_vector(3downto0);
ci4:
instd_logic;
c4:
outstd_logic;
s4:
outstd_logic_vector(3downto0));
endquanjia_4;
architectureBehavioralofquanjia_4is
componentquanjia_1
Port(a:
instd_logic;
b:
instd_logic;
ci:
instd_logic;
c1:
outstd_logic;
s1:
outstd_logic);
endcomponent;
signalD,E,F:
std_logic;
begin
u1:
quanjia_1portmap(a=>a4(0),b=>b4(0),ci=>ci4,s1=>s4(0),c1=>D);
u2:
quanjia_1portmap(a=>a4
(1),b=>b4
(1),ci=>D,s1=>s4
(1),c1=>E);
u3:
quanjia_1portmap(a=>a4
(2),b=>b4
(2),ci=>E,s1=>s4
(2),c1=>F);
u4:
quanjia_1portmap(a=>a4(3),b=>b4(3),ci=>F,s1=>s4(3),c1=>c4);
endBehavioral;
四位全加器电路图:
4、5十六位全加器程序:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityquanjia_16is
Port(a16:
instd_logic_vector(15downto0);
b16:
instd_logic_vector(15downto0);
ci16:
instd_logic;
c16:
outstd_logic;
s16:
outstd_logic_vector(15downto0));
endquanjia_16;
architectureBehavioralofquanjia_16is
componentquanjia_4
Port(a4:
instd_logic_vector(3downto0);
b4:
instd_logic_vector(3downto0);
ci4:
instd_logic;
c4:
outstd_logic;
s4:
outstd_logic_vector(3downto0));
endcomponent;
signalD,E,F:
std_logic;
begin
u1:
quanjia_4portmap(a4(3downto0)=>a16(3downto0),b4(3downto0)=>b16(3downto0),s4(3downto0)=>s16(3downto0),ci4=>ci16,c4=>D);
u2:
quanjia_4portmap(a4(3downto0)=>a16(7downto4),b4(3downto0)=>b16(7downto4),s4(3downto0)=>s16(7downto4),ci4=>D,c4=>E);
u3:
quanjia_4portmap(a4(3downto0)=>a16(11downto8),b4(3downto0)=>b16(11downto8),s4(3downto0)=>s16(11downto8),ci4=>E,c4=>F);
u4:
quanjia_4portmap(a4(3downto0)=>a16(15downto12),b4(3downto0)=>b16(15downto12),s4(3downto0)=>s16(15downto12),ci4=>F,c4=>c16);
endBehavioral;
十六位全加器电路图:
4、6六十四为加法器程序;
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityquanjia_64is
Port(a64:
instd_logic_vector(63downto0);
b64:
instd_logic_vector(63downto0);
ci64:
instd_logic;
c64:
outstd_logic;
s64:
outstd_logic_vector(63downto0));
endquanjia_64;
architectureBehavioralofquanjia_64is
componentquanjia_16
Port(a16:
instd_logic_vector(15downto0);
b16:
instd_logic_vector(15downto0);
ci16:
instd_logic;
c16:
outstd_logic;
s16:
outstd_logic_vector(15downto0));
endcomponent;
signalD,E,F:
std_logic;
begin
u1:
quanjia_16portmap(a16(15downto0)=>a64(15downto0),b16(15downto0)=>b64(15downto0),s16(15downto0)=>s64(15downto0),ci16=>ci64,c16=>D);
u2:
quanjia_16portmap(a16(15downto0)=>a64(31downto16),b16(15downto0)=>b64(31downto16),s16(15downto0)=>s64(31downto16),ci16=>D,c16=>E);
u3:
quanjia_16portmap(a16(15downto0)=>a64(47downto32),b16(15downto0)=>b64(47downto32),s16(15downto0)=>s64(47downto32),ci16=>E,c16=>F);
u4:
quanjia_16portmap(a16(15downto0)=>a64(63downto48),b16(15downto0)=>b64(63downto48),s16(15downto0)=>s64(63downto48),ci16=>F,c16=>c64);
endBehavioral;
仿真结果:
符号图如下:
生成六十四位全加电路图;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 64 加法器 设计 解析