利用simulink实现8线3线编码器的设计仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用simulink实现8线3线编码器的设计仿真
1 问题描述(8线3线编码的设计的数学建模)
在数字电路中,编码器、译码器的应用极为广泛。所谓编码,就是在选定的一系列二值代码中赋予每个代码以固定的含义,执行编码功能的电路统称为编码器。
实现8线3线编码器,它的功能是对输入端的8个信号进行编码,输出三位二进制数。要求输入信号每次只有一个事0,其余7个是1。其中0值是待编码信号。我们将用MATLAB 的simulink软件包实现这种常用的数字组合逻辑电路,并进行仿真。
2. 系统模型及建模分析
根据前面介绍的8线3线编码器的功能,可列出下面得真值表:
有了真值表之后,就可以写出输入输出间的逻辑函数式如下:
在写出逻辑表达式之后,我们就可以用与非门来实现这个表达式。
3. 仿真实现;
在进行仿真时,将在8个输入端依次加一个低电平,然后用3个示波器观察3个输出波形。
用simulink实现这个数学电路系统一共分三个步骤:
第一步:添加模块,在MATLAB中运行simulink,打开模块浏览器,然后新建一个模型。接下来把本次仿真需要的模块添加到模型中。这里共需要三种模块:与非门4个,离散信号脉
冲源8个,示波器3个。与非门位于simulink模块库中的logocal operater,离散信号源脉冲位于simulink—sources—pulse generator,示波器位于simulink—sinks—scope。将这三种模块到拖到一个模型中。
点击与非门模块的名称,即写着Logical Operator 的区域,将名称改为Y0,接着点击选中与非门模块不要松开鼠标,按住Ctrl 键拖动这个模块到另一个位置,就会复制一个新的Y1模块。用同样的方法得到Y2,类似地将离散信号脉冲源模块名字改为J0,同样得到J0,J1…J7。最后将示波器复制三个。这样一来就将所有模块添加到模型中了。
第二步:修改模块参数
首先双击Y0,打开属性对话框,将操作(Operator)修改为“NAND”,输入节点数改为4,然后点击OK确定。Y1,Y2也做同样修改。
然后,通过双击示波器模块Scope,得到一个图形界面,在其工具栏上单击打印图标右边的Parameters图标,打开示波器属性设置对话框,将坐标轴改为3,同样地,将示波器Scope1,Scope2的坐标轴数改为4。
最后修改脉冲源的属性。双击离散脉冲源J0,将看到关于它的属性对话框,可以从对话框中看到5个参数设置,分别为:
Amolititude:方波信号的幅度;
Period:方波信号的周期;
Pulse width: 脉冲宽度;
Sample Time:采样时间长度,以秒为单位。
针对这个例子中的要求,我们需要J0到J7依次为低电平,所以将J0到J7的周期调整为8,脉冲宽度设为7,相位延迟为-7到0,幅度和采样时间用默认值。这样在零时刻,J0为低电平,其余输入为高电平;过一个采样时间,J1变为低电平。这样下去,到第七个采样时间,J7变为低电平。从而实现了设计要求。
第三步:联系及仿真
现在将各模块之间的连线上。根据输入输出的逻辑表达式,将J1、J3、J5、J7接到Y0的输入,将J2、J3、J6、J7接到Y1的输入,将J4、J5、J6、J7接到Y2 的输入。然后用示波器Scope监测Y2、Y1、Y0的输出,Scope1 用来监视J0到J3这4个波形,Scope2 用来监视J4到J7这4个波形。这样我们就完成了连线、
在最后进行仿真之前,先保存结果到自己的工作目录里。
仿真结束后,可以从示波器Scope1,Scope2 上看到编码器的8个输入端的波形,在示
波器Scope中看到编码器输出波形。
4. 实验过程中遇到的问题;
在初建立simulink模型时,我找不到simulink模块浏览器与题相匹配的仿真模块,开始以为是机房MATLAB版本太低,准备要放弃这个课题。后来通过对相似模块的研究发现,原题中需要的Discrete Pulse Generator 可以通过Pulse Generator 改变time 为Sample **就可以实现。在设置离散脉冲源信号的时候,没有依次将Phase dalay(相位延迟)设置为-7—0,只是随便设定了一个数字,后来波形出现混乱,无法出现预期效果。通过对8线3线编码器的研究和其逻辑功能的实现,我明白了其中的不妥,从而做出了改正。由于对Simulink开始的不熟悉,造成了在连线过程中出现很多阻挠,比如,改变输入输出端口数目的操作,改变输入输出端口方向的操作,设定示波器时间的操作,这样使我开始在连线时,将整个仿真图连得很乱,没有清晰地方向,不能一目了然,通过同学的帮助,和对相关书籍的学习,我基本掌握了Simulink中的基本操作。
在建模过程中,开始也是毫无头绪,虽然有了课题,但是还是无从下手,但是通过研究,结果并没有我想象中那么复杂,只是利用最基本的仿真模块就可以达到预期效果,这让我对Simulink这门技术产生了好感。
5. 仿真结果分析
8线3线编码器仿真后,当输入J0到J7依次以1为单位的相移变化时,示波器的波形跟着变化,如果J0为低电平,则的输出波形为低电平,表示0的二进制数,J4为低电平时,则Y0为低电平,Y1,Y2为高电平,表示4的二进制数,从而实现了编码的功能。
6. 总结
通过对具体模型的建立和利用Simulink的仿真实现,我体会到了实践的重要性,通常一个
模型的建立在开始的时候都是看似很难的,其实,在仔细研究过后,才发现只要认真分析其中的每个细节都能个个攻破,最后达到预想结果,当然,我的这个模型只是具体实际应用中的一个小环节,没有用到太多高功能的技术,但是,我想只要对实际问题认真分析,就能建立一个有利于各种现实问题的解决。通过对Simulink的学习,我对这门技术产生了兴趣,它能帮助我们更好的解决更多在现实中不可实现的仿真。