基于MATLAB的组合逻辑电路设计和仿真.docx
《基于MATLAB的组合逻辑电路设计和仿真.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的组合逻辑电路设计和仿真.docx(13页珍藏版)》请在冰豆网上搜索。
基于MATLAB的组合逻辑电路设计和仿真
基于MATLAB的组合逻辑电路设计和仿真
摘要
MATLAB是一款功能强大的数学软件,在很多的领域都得到了广泛的应用。
本文在介绍了组合逻辑电路原理的基础上,结合了MATLAB中的SIMULINK进行仿真。
由于组合逻辑电路的输出信号只取决于当时的输入信号,本文用SINULINK的各个逻辑模块完成了电路图的搭建,并通过输入信号,观察输出信号时否符合该逻辑功能,进一步验证电路的正确性。
仿真结果表明,利用Matlab进行组合电路的设计、调试,结果直观、省时省力。
它不仅能用来仿真本论文中提到的电路,而且能广泛地应用于其它逻辑电路的仿真,是逻辑电路设计、调试的有效工具。
关键字:
MATLAB;SIMULINK;逻辑电路
1、概述
1.1关于MATLAB和SIMULINK
MATLAB是由MathWork公司开发的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括Matlab和Simulink两大部分。
MATLAB可以完成复杂的数学运算,精度较高,能完成高等数学中所有的计算,包括导数、极限、定积分、不定积分、微分方程,甚至人工不可能完成的运算,MATLAB也可以完成。
当然MATLAB最初是用在矩阵的运算。
MATLAB对数据有很友好的可视性,最主要的表现在于它的作图功能,能够在某段区间的任何函数,而且能够做出三维空间函数。
并且能够对数据进行拟合、差值。
所以,MATLAB经常被用在数据理论分析中。
SIMULINK是MATLAB中的组成部分,完成交互式仿真。
SIMULINK使用较为简单,能够完成概念模型的搭建,并通过仿真来验证模型的正确性。
SIMULINK应用十分广泛,如电力电子、DSP、运动控制、自动控制原理、电机拖动等课程中。
通过SIMULINK中的REAL-TIMEWorkshop可以生成在实物板上可以直接运行的代码,大大简化了设计工程师的工作量,弊端是生成的代码效率比较低,这点对于半导体技术的飞速发展已经不是难题了。
SIMULINK另一个优势就是完全使用图形,不需要要编写任何代码,容易初学者使用,使用也十分方便,结果显示直观。
模型搭建和理论框图十分接近,没人隔阂。
1.2关于组合逻辑电路
组合逻辑逻辑电路一个很大的特点就是输出信号完全取决于这一状态下的输入信号,和前时刻没有任何关系,这也是区别数学电路的主要区别。
数字信号由于输出有反馈到输入端,所以输出信号还取决于上一时刻的输出信号和这一个时刻的输入信号。
组合逻辑电路在实际中得到的大量的应用,其中较为人知的组合逻辑芯片有编码芯片74LS148、译码器芯片74LS138、数据选择器74LS153等等。
2、8线3线编码器及MATLAB实现
2.18线3线编码器
74LS148是具有优先级的编码器,在有效的情况下,某一时刻只有最高位数据被编码。
其真值表如表2-1所示。
表2-174LS148真值表
输入
输出
EI
I0
I1
I2
I3
I4
I5
I6
I7
A2
A1
A0
GS
EO
1
×
×
×
×
×
×
×
×
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
0
0
×
×
×
×
×
×
×
0
0
0
0
0
1
0
×
×
×
×
×
×
0
1
0
0
1
0
1
0
×
×
×
×
×
0
1
1
0
1
0
0
1
0
×
×
×
×
0
1
1
1
0
1
1
0
1
0
×
×
×
0
1
1
1
1
1
0
0
0
1
0
×
×
0
1
1
1
1
1
1
0
1
0
1
0
×
0
1
1
1
1
1
1
1
1
0
0
1
0
0
1
1
1
1
1
1
1
1
1
1
0
1
对于上表中的0表示逻辑低电平,而1表示逻辑高电平,正逻辑。
对于74LS148,典型的逻辑高电平电压为3.5V,而逻辑低电平电压为0.5V。
当然实际电路中逻辑电平会随环境发生微小的改变。
74LS148逻辑电路原理图如图2-1所示。
图2-174LS148原理图
具体数据请自行参考该芯片数据手册(74LS148.pdf)。
2.28线3线编码器MATLAB实现
Simulink是MATLAB中重要的组成部分,能够快速的完成模型的设计和仿真。
基于74LS148的真值表和内部原理图。
在Simulink中搭建模型如图2-2所示。
图2-274LS148编码器模型
设置合适的仿真时间和仿真算法,然后开始仿真,观察输入和输出波形,若仿真要等待很久,一般是算法选择不正确,选择其他算法就可以了,10s的仿真时间一般在一瞬间就可以完成。
仿真完成之后双击Scope就可以查看波形,关于波形图的保存,由于Scope中波形窗口的菜单默认的被隐藏掉了,并不建议用截图工具去截波形图,因为截图在WORD中显示会倾斜,所以需要在MATLAB命令窗口中输入相关命令才可以显示菜单栏,具体命令如下:
>> set(0,'ShowHiddenHandles','on');
>> set(gcf,'menubar','figure');
输入输出波形如图2-3所示。
图2-3(a)输入波形图2-3(b)输出波形
图2-3输入输出波形
由于图2-3中时间轴不一样,为了便于观察,所以在输出波形中只显示0-2s时间段内的波形,结合74LS148的真值表,可以明显的看各个情况下波形输入输出相互对应,所以该模型完成编码器74LS148的功能。
3、3线8线译码器及MATLAB实现
3.13线8线译码器
74LS138是一款被广泛使用的译码器,译码器应用较为普遍,尤其是在单片机系统中可以有效的减少单片机宝贵IO口的使用,使单片机设计更为高效。
74LS138是一款高速译码器,可以将3线-8线译码器级联成为4线-16线译码器,甚至是更高。
74LS138译码器的真值表如表3-1所示。
表3-174LS138译码器真值表
INPUTS
OUTPUTS
E1
E2
E3
A0
A1
A2
O0
O1
O2
O3
O4
O5
O6
O7
1
×
×
×
×
×
1
1
1
1
1
1
1
1
×
1
×
×
×
×
1
1
1
1
1
1
1
1
×
×
0
×
×
×
1
1
1
1
1
1
1
1
0
0
1
0
0
0
0
1
1
1
1
1
1
1
0
0
1
0
0
1
1
0
1
1
1
1
1
1
0
0
1
0
1
0
1
1
0
1
1
1
1
1
0
0
1
0
1
1
1
1
1
0
1
1
1
1
0
0
1
1
0
0
1
1
1
1
0
1
1
1
0
0
1
1
0
1
1
1
1
1
1
0
1
1
0
0
1
1
1
0
1
1
1
1
1
1
0
1
0
0
1
1
1
1
1
1
1
1
1
1
1
0
同样,若是正逻辑,“1”表示高电平,74LS138典型的高电平电压为3.5V,“0”表示低电平,74LS138典型的低电平电压为0.35V,最大不超过0.5V。
74LS138内部逻辑图如图3-1所示。
图3-174LS138内部逻辑图形
若是需要具体了解74LS138,请自行参阅74LS138.pdf。
3.23线8线译码器MATLAB实现
由于74LS138内部逻辑较为简单,所以在Simulink中搭建模型也相对于编码器更为简单,具体的模型如图3-2所示。
图3-2Simulink模型图
为了便于观察输出结果,在输入信号中只采用几种较为特殊的输入来验证模型的正确性,且便于查看,将使能、输入信号、输出信号分别显示。
其中使能的信号如图3-3所示。
图3-3信号使能信号
信号输入和输出信号如图3-4所示。
图3-4(a)输入端口信号图3-4(b)输出端口信号
图3-4输入输出信号
结合74LS138的真值表,可以发现输入输出完全对应,说明用Simulink可以有效的完成译码器的设计。
4、四选一数据选择器及MATLAB实现
本章将利用MATLAB来完成数据选择器的设计。
4.1四选一数据选择器
常用的四选一数据选择器是74LS153,数据选择器在设计中较为常用,其逻辑真值表如表4-1所示。
表4-174LS153真值表
选择端
数据输入端
输出
B
A
C0
C1
C2
C3
G
Y
×
×
×
×
×
×
1
0
0
0
0
×
×
×
0
0
0
0
1
×
×
×
0
1
0
1
×
0
×
×
0
0
0
1
×
1
×
×
0
1
1
0
×
×
0
×
0
0
1
0
×
×
1
×
0
1
1
1
×
×
×
0
0
0
1
1
×
×
×
1
0
1
74LS153的逻辑结构图如图4-1所示。
图4-174LS153逻辑图
74LS153典型的高电平电压为3.4V,低电平典型电压为0.35V,有的也会达到0.5V。
4.2四选一数据选择器MATLAB实现
Simulink在设计四选一数据选择器的时候也不算复杂,在model里面输入模型如图4-2所示。
图4-2四选一数据选择器模型图
运行搭建的模型,同样也是通过特殊的输入输出来验证模型的正确性,其使能端的输入如图4-3所示。
图4-3数据选择器使能端输入波形
数据选择器数据端口输入波形和输出模型如图4-4所示。
图4-4(a)数据选择器数据端口波形图4-4(b)输出端波形
图4-4数据选择器输入输出波形
结合数据选择器的真值表,可以明显的看到输入输出符合数据选择器的设计标准,这说明利用Simulink可以完成数据选择器的设计及仿真。
5、译码器级联MATLAB实现
在前面已经有过译码器的介绍,在此不在叙述。
在这里主要就是关于芯片的封装,又或者是说模块化设计理念。
将38译码器封装成单个的模块,在模块中组建模型就像是在模拟电子中学习的一样,具体模型如图5-1所示,模块内的模型见译码器模型。
图5-1译码器的级联
运行仿真模型,由于并没有所有的情况都有,所以只需要连接部分引脚就可以了,全部情况都列举出来,不仅浪费时间,同时也不利于观察效果。
其输入输出波形如图5-2所示。
5-2(a)输入部分波形5-2(b)输出波形
图5-2输入输出波形
结合译码器级联的相关知识,可以发现输入输出波形是对应,这说明这种芯片的封装方法在MATLAB中仿真运行时可以的。
6、总结
通过本次课题的制作,进一步强化了编码器、译码器、数据选择器的理论知识和设计方法。
利用MATLAB来仿真逻辑电路时完全可以。
并且Simulink仿真为逻辑电路设计带来了很大的方便,在设计初期,可以在Simulink中搭建模型,并且可以对模型进行仿真,进一步验证模型。