基于Simulink的逻辑电路仿真-交通灯设计解剖.doc

基于Simulink的逻辑电路仿真-交通灯设计解剖.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Simulink逻辑电路仿真—交通灯设计 2014春季 Matlab系统仿真分析作业 完成日期 2014.04.29 目录 设计说明 1 设计思路 1 具体设计步骤 2 计数器的设计 2 计数器的仿真 10 交通灯电路设计。 15 交通灯仿真 17 设计说明 本文设计了一个简易的交通灯时序逻辑电路,该电路通过对输入时钟信号的分频,控制红黄绿三种交通灯的按顺序亮灭并循环,其中绿灯持续25s,黄灯持续5s,红灯持续35s。主要用到的器件为jk触发器,与门,与非门,或门,或非门。为了实现交通灯控制电路,首先设计并封装了4位计数器,在此基础上进一步搭建逻辑电路,实现交通灯的控制,并分别对这些模块进行了仿真。 设计思路 主要的设计思路是利用jk触发器串联的方式对输入的时钟进行分频,然后在相应的时刻产生控制脉冲信号,通过这个信号对信号灯的状态进行翻转。Jk触发器是一种边沿敏感器件,有对上升沿和下降沿敏感的两类,他们的符号如下: 其真值表如下: 在这个设计中,将jk触发器的j和k端都置1,从而Q端在每个时钟沿到来时进行翻转,然后将上一级的Q作为下一级的clk,这样达到对clk进行分频的目的。波形如下: 具体设计步骤 计数器的设计 打开matlab,这里使用的版本为R2014A.启动画面如下: 启动之后点击这里启动simulink 打开之后界面如下: 点击FileNewModel 打开界面如下: 下面的步骤为寻找仿真模型或原件,并摆放在上面的untiled文档中。首先将窗口切换到Simulink Library Browser窗口,展开Simulink ExtrasFlip Flops,左侧就会出现常用的触发器模型,其中就有jk触发器,用鼠标左键选中J-K Flip-Flop并拖到untiled文档中 一个jk触发器可以对时钟2分频,2个串联可以4分频,这里6个才能满足需求,但是为了便于扩展应用,这里将4个jk触发器作为一组串联起来。untiled文档中已经有一个,鼠标右键拖动这个jk触发器即可复制。调整四个jk触发器的位置,如图: 该窗口左上角标题右侧的*表示该文档有改动并且未保存。该窗口中按下鼠标滚轮键鼠标会变成手状,这时可以拖动整个视图,滚动鼠标滚轮可以放大缩小视图,左键选中模型按del键可以删除模型。模型中端口上的箭头表示信号流动方向,连线的时候必须按照箭头的方向进行,不能使信号流动方向和箭头方向相反,否则仿真时可能会报错。连线时为了在一条线上引出分支,可以用鼠标右键点击分支处即可引出。两个线相交的地方有黑点表示电气相连,没有黑点表示相交但不相连。 在前面的分析中提到这里要将jk出发器的jk端置1,这需要常量和数据类型转换模块,因为在matlab中大部分模型的输出是数值型的,比如为float或者double型的,这样如果输出了1,它可能是double或者int类型的,而逻辑电路中的1是一种逻辑电平,这两者的含义是不同的,因此如果要给触发器输入1,需要将一个常量1转换为逻辑1,这就是Data Type Conversion的作用,常量1的输出通过Constant实现,他们在Commonly Used Blocks中,如图,分别拖放两个模型到untiled文档中。 现在untitled文档中的模型如下: 双击Data Type Conversion1可以打开它的属性对话框,我们需要关心的是转换的类型,这个可以通过Output data type后面的下拉框来设置,其中就有boolean这种类型。默认为Inherit: Inherit via back propagation方式输出,意思为从输出端反向继承数据类型,也就是说输出端连接的端口需要什么类型就转化为相应的类型。这里需要改为boolean就可以实现给触发器输入高电平。 调整他们的位置并按下面的样子完成连线: 然后按ctrl+s保存文档,如下: 下面对这个模块进行封装,按下ctrl+A选中所有模型,再通过下面的方式进行封装(快捷键Ctrl+G) 封装之后变成这个样子: 双击进入该模块内部,可以看见自动为输入和输出添加了连接点并编号,如下: 上面这幅图片中出现了很多double,这是由于Data Type Conversion输出没有改成boolean而又进行了仿真造成的,如果不改也能仿真,但是数据类型不是逻辑电平,如果修改了就不会出现上面的那些字符。这里面部分端口不使用,摆放位置也比较乱,可以选中之后进行修改,修改之后如下: 然后按下ctrl+s进行保存,点击下面的位置返回到顶层视图 此时封装的模块变成了下面的样子: 我们可以双击模块下面的名称来改变它,因为这个模块可以进行0

文档评论(0)

123****6648 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档