实验报告组合电路设计.docx
- 文档编号:16917863
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:16
- 大小:71.47KB
实验报告组合电路设计.docx
《实验报告组合电路设计.docx》由会员分享,可在线阅读,更多相关《实验报告组合电路设计.docx(16页珍藏版)》请在冰豆网上搜索。
实验报告组合电路设计
电子设计自动化课程实验报告
学号:
08291117
姓名:
图尔荪。
依明
班级:
电气0804
任课老师:
李景新
第二次实验报告
组合电路设计
(一)
课题:
设计一个四位全加器,进位输出是快速进位位
一、实验内容
设计一个四位的全加器,进位输出是快速进位位;
二、实验设计及过程
(1)设计思路
快速进位加法器,也就是超前进位加法器,其原理简单地说就是使各位的进位直接由加数和被加数来决定,即有如下逻辑表达式:
CiAiBiAiCi1BiCi1AiBi(ABi)Ci1
而不需要依赖低位进位。
逻辑表达式解释:
当第i位被加数A和加数B均为1时,有AiBi1,由“或”的原理可知,不论低位运算(ABi)Ci1结果如何,本位必然有进位输出(ci1)。
当A和B中只有一个为1时,有AiBi0且AiBi1,因此CiCi1。
所以,四位二进制全加器的“和”与“进位”相结合,可得到表达式:
(3)程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;\
USEIEEE.STD_LOGIC_ARITH.ALL;\
ENTITYquanjiaqiIS
PORT(AO,A1,A2,A3,BO,B1,B2,B3,Ci:
INSTD_LOGIC;
SO,S1,S2,S3,Co:
OUTSTD_LOGIC);
ENDquanjiaqi;
ARCHITECTUREbethOFquanjiaqiIS
BEGIN
PROCESS(AO,A1,A2,A3,BO,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);
S2v=(A2xorB2)xorU1;
U2:
=(A2andB2)or((A2orB2)andA1andB1)or((A2orB2)and(A1orB1)andA0andB0)or((A2orB2)and(A1orB1)and(A0orB0)andCi);
S3<=(A3xorB3)xorU2;
Co<=((A3xorB3)and(A2xorB2)and(A1xorB1)and(A0xorB0)andCi)or((A3xorB3)and(A2xorB2)and(A1xorB1)andA0andB0)or((A3xorB3)and(A2xorB2)andA1andB1)or((A3xorB3)andA2andB2)or(A3andB3);
ENDPROCESS;
ENDbeth;
(4)仿真波形
波形解释:
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.
(注:
Ci是借位位,Co是进位位,A与B是加数,S为和)
由此可知,该仿真波形说明设计的正确性。
三、实验收获
本实验为简单逻辑组合电路,全加器设计,使用了最简单
“xor”和“and”语句,初步了解了VHDL语言的使用和quarters
软件的编程环境,为之后的学习打下很好的基础。
另外,对全加
器中的快速进位有了深刻的了解,程序较逐步进位复杂难想,但
可以使得程序执行起来快速,减少时间的损耗。
四,试验中遇到的问题及解决步骤
1、找不到合适的编写方式实现快速进位在数电课本上找到了全加器的资料,并且找到了合适的公式。
2、建立文件编写完之后无法申报文件。
应该把文件名与汇编语
言中定义的名字一样。
组合电路设计
(二)
课题:
用IF语句和CASE语句设计一个4-16译码器
一•实验目的及内容
1、熟悉4-16译码器的原理
2、熟悉VHDL语言的编程逻辑的构建。
3、掌握VHDL语言的基本结构及使用方法。
二•实验设计思路
1、使能端为E;当E=1时芯片开始工作.否者输出为
1111111111111111。
2、当输入端口abed为:
0000时输出q=111111*********0
0001时输出q=111111*********1
0010时输出q=111111*********1
0011时输出q=111111*********1
0100时输出q=111111*********1
0101时输出q=111111*********1
0110时输出q=111111*********1
0111时输出q=111111*********1
1000时输出q=111111*********1
1001时输出q=111111*********1
1010
时输出q=111110*********1
1011时输出q=111101*********1
1100时输出q=111011*********1
1101时输出q=110111*********
1110时输出q=101111111111111
1111时输出q=011111111111111
高阻或无输出时输出q=xxxxxxxxxxxxxxxx
四、源程序:
libraryieee;
USEIEEE.STD_LOGIC_1164.ALL;\
USEIEEE.STD_LOGIC_UNSIGNED.ALL;\ENTITYIshIS
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"0000"=>qv="1111111111111110";
when"0001"=>q<="1111111111111101";
when"0010"=>q<="1111111111111011";
when"0011"=>q<="1111111111110111";
when"0100"=>q<="1111111111101111";
when"0101"=>qv="1111111111011111";
when"0110"=>qv="1111111110111111";
when"0111"=>q<="1111111101111111";
when"1000"=>qv="1111111011111111";
when"1001"=>qv="1111110111111111";
when"1010"=>qv="1111101111111111";
when"1011"=>qv="1111011111111111";
when"1100"=>qv="1110111111111111";
when"1101"=>qv="1101111111111111";
when"1110"=>qv="1011111111111111";
when"1111"=>qv="0111111111111111";
whenothers=>qv="XXXXXXXXXXXXXXXX";endcase;
else
qv="1111111111111111";
endif;
endprocess;
endbehave;
五、仿真波形
啊曲ImTirri:
116.0
re寸卜[FcH-y1.79ns1外ei7-n+Z1n*SbarrOpaEM「10us
A
mu.
I-B.i
jpsID?
M
A
h
屯
UP1
I
軋
1:
DM
4
%
8
o乜
d[25E
f[ZS5]&S5J
岳
5
•■讥巧]
良
5
h
JI
“安
llisl
a.
5
U'fj
d
口心
-UH-J
a
-J3-I
4
“生
IL-I
ft
U]2t
*■l[B]
h
dd
出
口仔
j■i
&
许]
K
t>n
■rJ*J
a
*38
a
c*39
- h 1 x < * 当使能端E=0时,输出全为1 l&QftsjtjFHr血I.IZjisIrtpvti: •Ifl-BSn? 5W; Q»fInd 0粧 A 5 A 4 EC i A < ) 片」 J I ft T I 忆 T i T &5 s斗 ks (ggjjgH -归] 03. 06 * -q,L: 4] J -■pag i 5 1112] ) q[>l] j 093 -q[30] Ji L问 J t>J£ q同 j □3-1 qE > 015 at^J .* a O】T : qfe] J 2怡 ) j < > 1 < > 当使能端E=1时,输入0100,输出为q(4)=0,其余为1 一、实验收获 本次实验开始使用条件语句IF和CASE。 IF是假设有某种情况后,进而执行相应的程序;当假设条件比较多而且有一定规律时,就应该使用CASE语句进行编程。 第三次实验报告 时序电路设计 课题: 4位二进制同步加/减法可逆计数器 一•实验目的及内容 1.了解4位二进制同步加/减法可逆计数器原理。 2.熟悉VHDL语言的基本结构及使用方法。 二•实验设计思路 输入端口: clr: 清零端(高电平有效,异步清零) elk: 时钟脉冲 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 四、源程序 libraryieee; useieee.std_logic_1164.all; entityIshis port(clr,clk,load,updown: instd_logic; d: inintegerrange0to15; count: outstd_logic; q: bufferintegerrange0to15); endlsh; architectureoneoflshis begin process(clk,clr,d,load,updown) begin ifclr='0'thenq<=0; elsif(clk'eventandclk='1')then ifload='1'thenq<=d; elsifupdown='0'thenq<=q+1; ifq=15thencount<='1';endif; elseq<=q-1; ifq=0thencount<='0';endif; endif; endif; endprocess; endone; 五、仿真波形 使能端clr为0时,输出始终为0 ・・Putsr hh-ival A Hsr-v MlO fXIe /L A CiXUlI A■ Lld k& ifM -g A 严 Ai A.< U*-T L丄R] A. A 亦 BQ ASi WI。 Ai a: i ■ d■ 3LZ -1[L) A. &竹' 7』 A■ 1*Hl •H94m *1 W-dEifinre=3- 1QDn> "■严! □■33fl«E3D 1D.C u r f 1时 tt'1 二isi- J 340fl 使能端为1,置数load=1时,在脉冲的作用下,输出q=输入 d 使能端为1,置数load=0时,实现如图所示计数功能 六、实验中遇到的问题及解决步骤 问题: 编写程序时,由于过多使用elsif等语句,导致编写的逻 辑有点不太清晰,endif语句有时候没有一一对应清楚,在编译 时出现错误。 解决方法: 尝试过过取消elsif语句,把所有的情况都用if列些出来,虽然程序逻辑上不会混乱,但是程序显得比较冗长,为了使程序更精练,我们调整了程序的结构,让endif与相应的if语句对其,让程序读起来更有逻辑性,条理性。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告 组合 电路设计