MATLAB期末设计作业.docx
《MATLAB期末设计作业.docx》由会员分享,可在线阅读,更多相关《MATLAB期末设计作业.docx(19页珍藏版)》请在冰点文库上搜索。
MATLAB期末设计作业
基于MATLAB的组合逻辑电路设计和仿真
【作者】马金龙
【摘要】应用MATLAB语言设计数字电路的技巧和方法。
本设计介绍了matlab/simulink仿真软件的功能,叙述了相关的“数字电路”,并以8线3线编码器、3线8线译码器、数据选择器等为例对其进行了仿真和分析。
同时通过matlab汇编语言实现各逻辑电路的逻辑表达式,在给定输入信号的情况下验证各基本逻辑电路的功能。
【引言】利用MATLAB及Simulink仿真软件强大的图形处理功能,符号运算功能和数值计算功能,实现常见的组合逻辑电路如编码器、译码器、数据选择器等逻辑电路的设计及仿真。
本设计通过Simulink仿真软件使用常见的与、或、非等基本逻辑单元,延时信号、时钟信号等信号源和示波器完成以上各种逻辑电路的设计和仿真。
【方法】以Simulink仿真系统中的基本逻辑元件、时钟信号和示波器为核心进行编码器、译码器、数据选择器及七段数码管的输入输出波形的设计和仿真,并且通过3线8线译码器的元件封装和级联完成4线16线译码器输入输出波形的设计和仿真。
同时以MATLAB汇编语言和各种基本组合逻辑电路的逻辑表达式为基础实现逻辑电路的设计并验证其逻辑功能。
在已创建的M文件下进行代码验证。
如:
8线3线编码器的验证码:
3线8线译码器的验证码:
4选1数据选择器验证码:
七段数码管的程序码验证:
【结果展示】simulink的仿真
注释:
(1)仿真界面“Simulink”
(2)窗口“Untitled”
1.8线3线编码器的设计和仿真
进入Simulink仿真界面后,按照8线3线编码器的逻辑表达式逐一拖入所需的原件并进行连接如图1-1所示:
1-18线3线编码器原理图
仿真结果:
1-28线3线编码器输出波形
1-38线3线编码器输入波形
根据以上波形可以看出,8线3线编码器在给定出入的情况下,均可得到相应的正确的输出。
说明:
建立一个新的M文件,并对其命名为cqf83.m。
根据8线3线编码器的逻辑表达式,编写其程序见附录。
在commandwindow窗口中输入M文件名,按Enter键后在弹出的语句后面输入[10000000],再按Enter键后输入EI的值为1,按Enter键后就会显示数组的值为:
111。
同理输入不同的初始值会得到相应的输出数据,过程如图所示:
2.3线8线译码器的设计及仿真
建立一个新的M文件,命名为cqf38.m。
根据3线8线译码器的逻辑表达式,编写其程序见附录。
在commandwindow窗口中输入cqf38.m,按Enter键后在弹出的语句后面输入[111],再按Enter键后输入EI的值为1,按Enter键后就会显示数组的值为:
01111111。
同理输入不同的初始值会得到相应的输出数据,过程如图2-1所示:
图2-13线8线译码器程序验证
进入Simulink仿真界面后,按照3线8线译码器的逻辑表达式逐一拖入所需的原件并进行连接如图2-2所示:
2-23线8线译码器原理图
仿真结果如图2-3和2-4所示:
2-33线8线译码器输入波形
3线8线译码器输出波形
根据以上波形可以知道,3线8线译码器在不同的输入下,可以得到相应的输出。
3.数据选择器的设计及仿真
建立一个新的M文件,命名为cqf41.m。
根据4选1数据选择器的逻辑表达式,编写其程序见附录。
在commandwindow窗口中输入cqf41.m,按Enter键后在弹出的语句后面输入[1000],再按Enter键后输入[00],按Enter键后就会显示数组的值为:
1。
同理输入不同的初始值会得到相应的输出数据,过称如图3-1所示:
图3-14选1数据选择器程序验证
进入Simulink仿真界面后,按照4选1数据选择器的逻辑表达式逐一拖入所需的原件并进行连接如图3-2所示:
3-24选1数据选择器原理图
仿真结果:
3-34选1数据选择器输入输出波形
4.七段数码管的设计及仿真
建立一个新的M文件,命名为cqf7.m。
根据七段数码管的逻辑表达式,编写其程序见附录。
在commandwindow窗口中输入cqf7.m,按Enter键后在弹出的语句后面输入[1000],按Enter键后就会显示数组的值为:
1111111。
同理输入不同的初始值会得到相应的输出数据,过程如图3-1所示:
图3-1七段数码管程序验证
3-2七段数码管原理图
仿真结果:
3-3七段数码管输入波形
3-4七段数码管输出波形
根据以下波形可以看出所设计的七段数码管,在给不同输入的情况下均可得到相应的正确的输出,即该设计符合设计要求。
具体应用如下:
1.18线3线编码器
1.1.1逻辑真值表:
输入
输出
EI
A7
A6
A5
A4
A3
A2
A1
A0
B2
B1
B0
0
×
×
×
×
×
×
×
×
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
1
×
×
×
×
×
×
×
1
1
1
1
0
1
×
×
×
×
×
×
1
1
0
1
0
0
1
×
×
×
×
×
1
0
1
1
0
0
0
1
×
×
×
×
1
0
0
1
0
0
0
0
1
×
×
×
0
1
1
1
0
0
0
0
0
1
×
×
0
1
0
1
0
0
0
0
0
0
1
×
0
0
1
1
0
0
0
0
0
0
0
1
0
0
0
1.1.2逻辑表达式:
B2=EI&(~((~A7)&(~A6)&(~A5)&(~A4)));
B1=EI&(~((~A7)&(~A6)&(A5+A4+(~A3))&(A5+A4+(~A2))));
B0=EI&(~((~A7)&(A6+(~A5))&(A6+A4+(~A3))&(A6+A4+A2+(~A1))));
2.13线8线译码器
2.1.1逻辑真值表:
输入
输出
EI
A2
A1
A0
B7
B6
B5
B4
B3
B2
B1
B0
0
×
×
×
1
1
1
1
1
1
1
1
1
0
0
0
1
1
1
1
1
1
1
0
1
0
0
1
1
1
1
1
1
1
0
1
1
0
1
0
1
1
1
1
0
1
1
1
0
1
1
1
1
1
1
0
1
1
1
1
1
0
0
1
1
1
0
1
1
1
1
1
1
0
1
1
1
0
1
1
1
1
1
1
1
1
0
1
0
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
2.1.2逻辑表达式:
B7=EI&(~(A2&A1&A0));B6=EI&(~(A2&A1&(~A0)));
B5=EI&(~(A2&(~A1)&A0));B4=EI&(~(A2&(~A1)&(~A0)));
B3=EI&(~((~A2)&A1&A0));B2=EI&(~((~A2)&A1&(~A0)));
B1=EI&(~((~A2)&(~A1)&A0));B0=EI&(~((~A2)&(~A1)&(~A0)));
3.14选1数据选择器
3.1.1逻辑真值表:
输入地址
输出
S1
S0
Y
0
0
I0
0
1
I1
1
0
I2
1
1
I3
3.1.2逻辑表达式:
Y=((~S2)&(~S1)&I0)|((~S2)&S1&I1)|(S2&(~S1)&I2)|(S2&S1&I3)
4.1七段数码管
4.1.1七段数码管的译码电路真值表:
4.1.2七段数码管译码电路逻辑表达式:
4.1.3七段数码管使用的译码电路:
【结论】在数字电路中,通过设定输入信号就可以得到相应的正确的输出波形。
通过利用matlab/simulink仿真工具,不仅建模简单,而且更改参数方便,仿真图形直观。
此次设计中,没有更改相应的参数而进行验证仿真,尤其在simulink仿真环境下作图困难较大,而且对其封装极为不熟,这是本次设计实验中存在的疑惑之处。
参考文献
[1]陈怀琛,matlab及在电子信息课程中的应用[M].北京:
电子工业出版社,2003
[2]廖常初,S7-300/400PLC应用技术[M].北京:
机械工业出版社,2005
[3]张志涌.精通MATLAB6.5版(第一版).北京:
北京航空航天大学出版社,2003.03.
[4]蒙以正.MATLAB5.X应用与技巧.北京:
科学出版社,1999.
[5]阮沈勇、王永利.MATLAB程序设计.北京:
电子工业出版社,2004.01.
[6]陈怀琛.MATLAB及在电子信息课程中的应用.北京:
电子工业出版社,2003.07.
[7]黄忠霖、黄京著.MATLAB符号运算及其应用.北京:
国防工业出版社,2004.01.
[8]康华光.电子技术基础数字部分(第五版).高等教育出版社,2005.7.
【致谢】
作为我个人,非常感谢老师提供的此次设计报告的机会,让我从中吸取了丰富的只是,感受颇深。
同时也感谢那些私下帮我寻找资料、相关文献的同学们。
老师课堂上的授业,同床好友的支持和帮助,是我完成此次设计报告的主要原因。
在设计过程当中,很直白的就能发现自己在这一方面的欠缺,以后更加要补其不足,努力学好相关的课程。
最后,再一次感谢帮助过我的良师益友。
【附录】
1.8线3线编码器源程序:
a=input('pleaseinputa7a6a5a4a3a2a1a0:
');
EI=input('pieaseinputEI:
');
a7=a
(1);a6=a
(2);
a5=a(3);a4=a(4);
a3=a(5);a2=a(6);
a1=a(7);a0=a(8);
b2=EI&(~((~a7)&(~a6)&(~a5)&(~a4)));
b1=EI&(~((~a7)&(~a6)&(a5+a4+(~a3))&(a5+a4+(~a2))));
b0=EI&(~((~a7)&(a6+(~a5))&(a6+a4+(~a3))&(a6+a4+a2+(~a1))));
b=[b2b1b0];
disp(b);
2.3线8线译码器源程序:
a=input('pleaseinputa2a1a0:
');
a2=a
(1);a1=a
(2);a0=a(3);
EI=input('plleaseinputEI:
');
b7=EI&(~(a2&a1&a0));
b6=EI&(~(a2&a1&(~a0)));
b5=EI&(~(a2&(~a1)&a0));
b4=EI&(~(a2&(~a1)&(~a0)));
b3=EI&(~((~a2)&a1&a0));
b2=EI&(~((~a2)&a1&(~a0)));
b1=EI&(~((~a2)&(~a1)&a0));
b0=EI&(~((~a2)&(~a1)&(~a0)));
b=[b7b6b5b4b3b2b1b0];
disp(b);
3.4选1数据选择器源程序:
s=inout('pleaseinputI0I1I2I3:
');
I0=s
(1);I1=s
(2);
I2=s(3);I3=s(4);
S=input('pleaseinputS2S1:
');
S2=S
(1);S1=S
(2);
I=((~S2)&(~S1)&I0)|((~S2)&S1&I1)|(S2&(~S1)&I2)|(S2&S1&I3);
disp(I);
4.七段数码管源程序:
Q=input('pleaseinputQ:
');
A=Q
(1);B=Q
(2);C=Q(3);D=Q(4);
a=(B&C)|((~A)&C)|((~B)&(~D))|((~A)&B&(~C)&D)|(A&(~B)&(~C))|(A&B&(~C)&(~D));
b=((~A)&(~B))|((~B)&(~D))|(A&D&(~C))|((~A)&(~C)&(~D))|((~A)&C&D);
c=(A&(~B))|((~A)&B)|((~C)&D)|((~A)&C&D)|((~A)&(~C)&(~D));
d=(A&(~C))|((~B)&C&D)|((~A)&(~B)&(~D))|(B&(~C)&D)|(B&C&(~D));
e=(A&B)|(A&C)|((~B)&(~D))|(C&(~D));
f=(A&(~B))|(A&C)|((~C)&(~D))|((~A)&B&(~C))|(B&C&(~D));
g=(A&(~B))|(A&D)|(C&(~D))|((~A)&B&(~C))|((~A)&(~B)&C);
abcdefg=[abcdefg];
disp(abcdefg);
【个人说明】尊敬的杨老师,您好!
本次设计报告中由于未曾接触过仿真环境下的具体操作,我也尝试过多次的操作,但未能实现在“untitled”下电路原理图的连接,所以留下了不堪的一面,望杨老师见谅。