课题设计一个四位全加器.docx
《课题设计一个四位全加器.docx》由会员分享,可在线阅读,更多相关《课题设计一个四位全加器.docx(14页珍藏版)》请在冰豆网上搜索。
课题设计一个四位全加器
电子设计自动化课程实验报告
学号:
08291117
姓名:
图尔荪。
依明
班级:
电气0804
任课老师:
李景新
EDA第二次实验报告
第二次实验报告
2
EDA第二次实验报告
组合电路设计
(一)
课题:
设计一个四位全加器,进位输出是快速进位位
一、实验内容
设计一个四位的全加器,进位输出是快速进位位;
二、实验设计及过程
(1)设计思路
快速进位加法器,也就是超前进位加法器,其原理简单地说就是使各位的进位直接由加数和被加数来决定,即有如下逻辑表达式:
C?
AB?
AC?
BC?
AB?
(A?
B)C1i?
1i?
iiiiiiiii?
i1而不需要依赖低位进位。
逻辑表达式解释:
当第i位被加数A和加数B均为1时,有ii,由“或”的原理可知,不论低位运算结果1?
ABCB)(A?
ii1?
iii如何,本位必然有进位输出()。
当A和B中只有一个为1C?
iii且,因此时,有。
所以,四11?
B?
BA0A?
C?
Ciiii1ii?
位二进制全加器的“和”与“进位”相结合,可得到表达式:
3
EDA第二次实验报告
S?
A?
B?
C1iiii?
从而构成快速进位加法器。
(2)流程图
4
EDA第二次实验报告
(3)程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
ENTITYquanjiaqiIS
PORT(A0,A1,A2,A3,B0,B1,B2,B3,Ci:
INSTD_LOGIC;
S0,S1,S2,S3,Co:
OUTSTD_LOGIC);
ENDquanjiaqi;
ARCHITECTUREbethOFquanjiaqiIS
BEGIN
PROCESS(A0,A1,A2,A3,B0,B1,B2,B3,Ci)
VARIABLEU0,U1,U2:
STD_LOGIC;
BEGIN
S0<=(A0xorB0)xorCi;
U0:
=(A0ANDB0)OR((A0ORB0)ANDCi);
S1<=(A1xorB1)xorU0;
U1:
=(A1ANDB1)OR((A1ORB1)ANDA0andB0)or
((A1orB1)and(A0orB0)andCi);
5
EDA第二次实验报告
S2<=(A2xorB2)xorU1;
U2:
=(A2andB2)or((A2orB2)andA1andB1)or((A2or
B2)and(A1orB1)andA0andB0)or((A2orB2)
and(A1orB1)and(A0orB0)andCi);
S3<=(A3xorB3)xorU2;
Co<=((A3xorB3)and(A2xorB2)and(A1xorB1)and(A0
xorB0)andCi)or((A3xorB3)and(A2xorB2)and
(A1xorB1)andA0andB0)or((A3xorB3)and(A2
xorB2)andA1andB1)or((A3xorB3)andA2and
B2)or(A3andB3);
ENDPROCESS;
ENDbeth;
(4)仿真波形
波形解释:
6
EDA第二次实验报告
1、0——10ns:
1+1+1=3;
2、10——20ns:
6+10=16;
3、20——30ns:
1+10+5=16;
4、30——40ns:
1+15+15=31.
(注:
是借位位,是进位位,A与B是加数,为和)SCiCo由此可知,该仿真波形说明设计的正确性。
三、实验收获
本实验为简单逻辑组合电路,全加器设计,使用了最简单“xor”和“and”语句,初步了解了VHDL语言的使用和quarters软件的编程环境,为之后的学习打下很好的基础。
另外,对全加器中的快速进位有了深刻的了解,程序较逐步进位复杂难想,但可以使得程序执行起来快速,减少时间的损耗。
四,试验中遇到的问题及解决步骤
1、找不到合适的编写方式实现快速进位在数电课本上找到了全加器的资料,并且找到了合适的公式。
2、建立文件编写完之后无法申报文件。
应该把文件名与汇编语言中定义的名字一样。
7
EDA第二次实验报告
组合电路设计
(二)
课题:
用IF语句和CASE语句设计一个4-16译码器
一·实验目的及内容
1、熟悉4-16译码器的原理
2、熟悉VHDL语言的编程逻辑的构建。
3、掌握VHDL语言的基本结构及使用方法。
二·实验设计思路
1、使能端为E;当E=1时芯片开始工作.否者输出为111111*********1。
2、当输入端口abcd为:
0000时输出q=1111111111111110
0001时输出q=1111111111111101
0010时输出q=1111111111111011
0011时输出q=1111111111110111
0100时输出q=1111111111101111
0101时输出q=1111111111011111
0110时输出q=1111111110111111
0111时输出q=1111111101111111
1000时输出q=1111111011111111
1001时输出q=1111110111111111
8
EDA第二次实验报告
1010时输出q=1111101111111111
1011时输出q=1111011111111111
1100时输出q=1110111111111111
1101时输出q=110111111111111
1110时输出q=101111111111111
1111时输出q=011111111111111
高阻或无输出时输出q=xxxxxxxxxxxxxxxx
三、流程图
Y
N
….
.…
9
EDA第二次实验报告
四、源程序:
libraryieee;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYlshIS
PORT(a,b,c,d,E:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(15DOWNTO0));
ENDlsh;
architecturebehaveoflshis
signalindata:
std_logic_vector(3downto0);
begin
indata<=a&b&c&d;
process(indata,E)
begin
if(E='1')then
caseindatais
when
when
when0=>q<=I1111111111011;
when1=>q<=I1111111110111;
when0=>q<=I1111111101111;
10
EDA第二次实验报告
when1=>q<=I1111111011111;
when0=>q<=I1111110111111;
when1=>q<=I1111101111111;
when@0=>q<=I1111011111111;
when@1=>q<=I1110111111111;
whenA0=>q<=I1101111111111;
whenA1=>q<=I1011111111111;
whenH0=>q<=I0111111111111;
whenH1=>q<=H1111111111111;
whenI0=>q<=A1111111111111;
whenI1=>q<=1111111111111;
whenothers=>q<=XXXXXXXXXXXXXXXX;
endcase;
else
q<=I1111111111111;
endif;
endprocess;
endbehave;
五、仿真波形11
EDA第二次实验报告
当使能端E=0时,输出全为1
1,其余为=0(4)qE=1当使能端时,输入0100,输出为
实验收获一、
是假设有某种IF。
本次实验开始使用条件语句IF和CASE当假设条件比较多而且有一定规进而执行相应的程序;情况后,语句进行编程。
律时,就应该使用CASE12
EDA第二次实验报告
第三次实验报告
13
EDA第二次实验报告
时序电路设计
课题:
4位二进制同步加/减法可逆计数器
一·实验目的及内容
1.了解4位二进制同步加/减法可逆计数器原理。
2.熟悉VHDL语言的基本结构及使用方法。
二·实验设计思路
输入端口:
clr:
清零端(高电平有效,异步清零)
clk:
时钟脉冲
d3~d0:
4位二进制数输入端
updown:
加/减法控制信号(1——执行加;0——执行减)
输出端口:
q3~q0:
4位二进制计数输出
co:
进位输出
bo:
借位输出
运行过程:
clr为0时输出q3~q0为0000;
当clr为1是芯片开始工作;
load为1时输出为q3q2q1q0=d3d2d1d0;
当updown=1时为加法计数器co=0当q3q2q1q0=1111时给一个clk脉冲时co=1且q3q2q1q0=0000;
当updown=0时为加法计数器bo=0当q3q2q1q0=0000时给一14
EDA第二次实验报告脉冲时co=1且q3q2q1q0=1111个。
clk三、流程图
15
EDA第二次实验报告
四、源程序
libraryieee;
useieee.std_logic_1164.all;
entitylshis
port(clr,clk,load,updown:
instd_logic;
d:
inintegerrange0to15;