基于MATLAB的组合逻辑电路设计和仿真_第1页
基于MATLAB的组合逻辑电路设计和仿真_第2页
基于MATLAB的组合逻辑电路设计和仿真_第3页
基于MATLAB的组合逻辑电路设计和仿真_第4页
基于MATLAB的组合逻辑电路设计和仿真_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、matlab应用实践课程设计课程设计任务书学生姓名: 专业班级: 指导教师: 工作单位: 信息工程学院 题 目: 基于matlab的组合逻辑电路设计与仿真 初始条件: matlab 软件 微机要求完成的主要任务: 深入研究和掌握数字电路中组合电路的理论知识。利用matlab的强大的图形处理功能,符号运算功能和数值计算功能,实现组合逻辑电路的设计和仿真。一、 以编码器和译码器为例仿真下列波形1. 编码器输入输出波形(8线3线);2. 译码器输入输出波形(3线8线);3. 数据选择器输入输出波形(四选一数据选择器)二、 以译码器的级联为例实现系统的封装并仿真下列波形 译码器的输入输出波形(4线16

2、线) 三、 以七段数码管为例子完成数码管的图形输出显示时间安排:学习matlab语言的概况 第1天学习matlab语言的基本知识 第2、3天学习matlab语言的应用环境,调试命令,绘图能力 第4、5天课程设计 第6-9天答辩 第10天指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日imatlab应用实践课程设计目 录摘 要iabstractii绪 论iii1 matlab 简介11.1 matlab程序设计11.2 simulink 仿真11.2.1 simulink 启动11.2.2 simulink 模块库及模块操作21.3 子系统的创建与封装21.3.1 子系统的创建3

3、1.3.2 子系统的封装32 组合逻辑电路及其设计32.1 编码器32.2.2 显示译码器52.3 数据选择器63 基于matlab的组合逻辑电路仿真实现63.1以编码器和译码器为例的仿真63.1.1 8线3线编码器的仿真63.2.2 3线8线译码器的仿真83.3.3 4选1数据选择器的仿真93.2 以译码器的级联为例实现系统的封装并仿真103.2.1 3线8线译码器的封装103.2.2 4线16线译码器的仿真113.3 以七段数码管为例子完成数码管的图形输出显示13结束语15致谢16参考文献17matlab应用实践课程设计摘 要matlab是当今最优秀的科技应用软件之一,具有强大的科学计算与

4、可视化功能、简单易用、开放式可扩展环境。本文介绍了组合逻辑电路的matlab设计和仿真,在这种电路中,任意时刻的输出信号仅取决于当时的输入信号。具备这种逻辑功能特点的电路叫做组合逻辑电路。本次课程设计利用matlab中的m文件与simulink方式完成了对组合逻辑电路的设计与仿真,初步了解与掌握了这一技能。课程设计的主要内容包括了编码器、译码器、数据选择器的仿真及子系统的封装。关键词: matlab,simulink,组合逻辑电路abstractmatlab is the most outstanding of software technology application nowadays,

5、 it has strong scientific computing and visual function, and it is easy-to-use, it can be extend because of its extensible environment. this paper introduces the hardwave circuit design and simulation of matlab, in this circuit, arbitrary moment only depends on the input signal before,its current st

6、ate dose not matter. this kind of logic hardware is called combinational logic circuit.the purpose of our training is to strengthen the use of matlab to achieve the handling of the .m files and simulink, including analyzing ,designing and emulating combinational logic circuit.its content contains en

7、coder and decoder, data selector simulation and the encapsulation of the subsystems.keywords: matlab,simulink,combinational logic circuit绪 论matlab和mathematica、maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。matlab可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。本设计利用mat

8、lab及simulink仿真软件强大的图形处理功能,符号运算功能和数值计算功能,实现常见的组合逻辑电路如编码器、译码器、数据选择器等逻辑电路的设计及仿真。本设计通过simulink仿真软件使用常见的与、或、非等基本逻辑单元,延时信号、时钟信号等信号源和示波器完成以上各种逻辑电路的设计和仿真,同时通过matlab汇编语言实现以上各基本组合逻辑电路的逻辑表达式,并在给定输入信号的情况下完成并验证各基本组合逻辑电路的功能。14matlab应用实践课程设计1 matlab 简介1.1 matlab程序设计用matlab语言编写的程序,称为m文件。m文件有两类:命令文件和函数文件。两者区别在于:命令文件

9、没有输入参数,也不返回输出参数;而函数文件可以输入参数,也可以返回输出参数。命令文件对matlab工作空间的变量进行操作,而且函数文件中定义的变量为局部变量,当函数文件执行完毕时,这些变量被清除。m文件可以使用任何编辑程序建立和编辑,而一般常用的是使用matlab提供的m文件窗口。首先从matlab命令窗口的file菜单中选择new菜单项,在选择m-file命令,将得到的m文件窗口。在m文件窗口输入m文件的内容,输入完毕后,选择此窗口file菜单的save as命令,将会得到save as 对话框。在对话框的file 框中输入文件名,再选择ok按钮即完成新的m文件的建立。然后在从matlab

10、命令窗口的file 菜单中选择open对话框,则屏幕出现open对话框,在open对话框中的file name 框中输入文件名,或从右边的directories框中打开这个m文件。在m文件所在的目录,再从file name 下面的列表框中选中这个文件,然后按ok按钮即打开这个m文件。在m文件窗口可以对打开的m文件进行编辑修改。在编辑完成后,选择file菜单中的save命令可以把这个编辑过的m文件报存下来。当用户要运行的命令较多或需要反复运行多条命令时,直接从键盘逐渐输入命令显得比较麻烦,而命令文件则可以较好地解决这一问题。我们可以将需要运行的命令编辑到一个命令文件中,然后再matlab命令窗口

11、输入该命令文件的名字,就会顺序执行命令文件中的命令。1.2 simulink 仿真simulink是matlab软件的扩展,它是实现动态系统建模和仿真的一个软件包,它与matlab语言的主要区别在于,其与用户交互接口是基于windows的模型化图形输入,其结果是使得用户可以把更多的精力投入到系统模型的构建,而非语言的编程上。1.2.1 simulink 启动simulink有四种启动方法: (1)在matlab命令窗口中输入simulink,结果是在桌面上出现一个称为simulink library browser的窗口,在这个窗口中列出了按功能分类的各种模块的名称;(2)在matlab命令窗

12、口中输入simulink3,结果是在桌面上出现一个用图标形式显示的library :simulink3的simulink模块库窗口;(3)可以通过单击matlab主窗口工具条上的simulink图标打开;(4)可以通过单击matlab主窗口菜单选择filenewmodel,弹出一个untitled的simulink模型窗口,再选择view show library browser,弹出simulink library brower模块库窗口。1.2.2 simulink 模块库及模块操作simulink模块库按照功能分类可以分为:连续模块、离散模块、查表模块和用户定义函数模块、数学模块、非线性

13、模块、信号通路模块、接收器模块、输入源模块、特别模块、其他常用方块组及工具箱。在模型窗口中,选中模块,则其4个角会出现黑色标记,此时可以对模块进行以下的基本操作:(1)移动:选中模块,按住鼠标左键将其拖曳到所需的位置即可。若要脱离线而移动,可按住shift键,再进行拖曳。(2)复制:选中模块,然后按住鼠标右键进行拖曳即可复制同样的一个功能模块。(3)删除:选中模块,按delete键即可。若要删除多个模块,可以同时按住shift键,再用鼠标选中多个模块,按delete键即可。也可以用鼠标选取某区域,再按delete键就可以把该区域中的所有模块和线等全部删除。(4)转向:为了能够顺序连接功能模块的

14、输入和输出端,功能模块有时需要转向。在菜单formatflip block旋转180度, formatrotate block顺时针旋转90度。(5)改变大小:选中模块,对鼠标移到角上出现,进行拖曳即可。(6)模块命名:先用鼠标在需要更改的名称上单击一下,然后直接更改即可。名称在功能模块上的位置也可以变换180度,可以用formatflip name来实现,也可以直接通过鼠标进行拖曳。hide name可以隐藏模块名称。(7)颜色设定: format foreground color改变模块的前景颜色,background color改变模块的背景颜色;而模型窗口的颜色可以通过screen c

15、olor来改变。(8)参数设定:用鼠标双击模块,就可以进入模块的参数设定窗口,从而对模块进行参数设定。或点击鼠标右键,选择block parameters 参数设定窗口包含了该模块的基本功能帮助。通过对模块的参数设定,就可以获得需要的功能模块。1.3 子系统的创建与封装在建立的simulink系统模型比较大或很复杂时,可将一些模块组合成子系统,这样可使1. 模型得到简化,便于连线;2. 可提高效率,便于调试;3. 可生成层次化的模型图表,用户可采取自上而下或自下而上的设计方法。将一个创建好的子系统进行封装,也就是使子系统象一个模块一样,例如可以有自己的参数设置对话框,自己的模块图标等。这样就使

16、子系统使用起来非常方便。 1.3.1 子系统的创建1.通过子系统模块来建立子系统在simulink库浏览器,有一个子系统(subsystems)的库模块(有的版本在signals & systems子库里),点击该图标即可看到不同类型的子系统模块。2.组合已存在的模块来建立子系统 如果现有的模型已经包含了需要转化成子系统的模块,就可以通过组合这些模块的方式建立子系统。步骤如下:确定需建立subsystem的模型(被选中的均标记有黑块);点击模型窗edit菜单下的create subsystem 命令,则所选定的模型组合自动转化成子系统;双击该图标,可打开该子系统窗口,改写输入输出符号;关闭子系

17、统编辑窗口,设置子系统标签。1.3.2 子系统的封装子系统可以建立自己的参数设置对话框,以避免对子系统内的每个模块分别进行参数设置,因此在子系统建立好以后,需对其进行封装。子系统封装的基本步骤如下:a. 设置好子系统中各模块的参数变量;b. 定义提示对话框及其特性;c. 定义被封装子系统的描述和帮助文档;d. 定义产生模块图标的命令。2 组合逻辑电路及其设计根据逻辑功能的不同,数字电路分为两大类:一类是组合逻辑电路,另一类是时序逻辑电路。在组合电路中,任意时刻的输出仅取决于该时刻的输入,与电路的原始状态无关。常见的组合逻辑电路有数据选择器、编码器、译码器、数据分配器、数据比较器等典型的中规模组

18、合逻辑器件。在时序电路中,任意时刻的输出不仅取决于该时刻的输入,而且与该时刻之前电路的状态有关。常见的时序电路有触发器、锁存器等中规模时序器件。组合逻辑电路的结构具有以下特点:输出输入之间没有反馈延迟通路;电路中不含有记忆功能的元件。2.1 编码器用文字、符号或数码表示特定对象的过程叫做编码。实现编码操作的电路就是编码器。按照编码信号的不同特点和要求,常用的编码器件有二进制编码器、二-十进制编码器、优先编码器之分。所谓优先编码器,就是按优先级别的高低进行编码的电路。至于级别的高低,完全由设计人员根据各个输入信号的要求决定。以8线3线优先编码器为例,其逻辑功能真值表如表2-1所示,从功能表中可以

19、看出,该编码器有8个信号输入端,3个二进制输出端,输入和输出均以高电平作为有效电平,而且输入优先级别的次序依次i7 、i6 、i 5 、i 4 、i3 、i 2 、i 1 、i 0 。此外为方便多个芯片连接起来扩展电路的功能,还设置了高电平有效地输入使能端ei。 当ei=1时,编码器工作;而当ei=0时,禁止编码器工作,此时不论8个输入端为何种状态,3个输入端均为低电平。功能表中1和0分别表示高、低电平,画出8线3线编码器的卡诺图并推导出各输出端的逻辑表达式:a2=ei&(i7)&(i6)&(i5)&(i4);a1=ei&(i7)&(i6)&(i5+i4+(i3)&(i5+i4+(i2);a0

20、=ei&(i7)&(i6+(i5)&(i6+i4+(i3)&(i6+i4+i2+(i1); 表2-1 8线3线优先编码器真值表输入输出eii7 i6i5i4i3i2i1i0a2a1a0hzzzlhhhhhhhhzzzllllllhlllhhhhllhllhhhllhhlhhhhlhlllhhhhhlhlhlhhhhhhlhhllhhhhhhhlhhh2.2 译码器译码是编码的逆过程,它的功能是将具有特定含义的二进制编码进行分辨,并且转换成控制信号,具有译码功能的逻辑电路称为译码器。常用的译码器件有二进制译码器、3线-8线译码器、4线-16线译码器、bcd译码器、七段显示译码器件等。2.2.1

21、二进制译码器常见的集成二进制译码器有cmos和ttl的定型产品,两者在逻辑功能上没有区别,只是电性能参数不同,用74x137表示两者中的任意一种。74x139是双线译码器,两个独立的译码器封装在一个集成片中。下面主要介绍74hc137的逻辑功能及应用。功能表中1和0分别表示高、低电平,画出3线8线译码器的卡诺图并推导出各输出端的逻辑表达式:matlab应用实践课程设计y7=ei&(a2&a1&a0); y6=ei&(a2&a1&(a0); y5=ei&(a2&(a1)&a0); y4=ei&(a2&(a1)&(a0);y3=ei&(a2)&a1&a0); y2=ei&( (a2)&a1&(a0

22、);y1=ei&(a2)&(a1)&a0); y0=ei&( (a2)&(a1)&(a0);74hc137是3线8线译码器,其功能表如表2-2所示。表2-2 3线8线译码器真值表输入输出eia2a1a0y7y6y5y4y3y2y1y0lhhhhhhhhhlllhhhhhhhlhllhhhhhhhlhhlhlhhhhhlhhhlhhhhhhlhhhhhllhhhlhhhhhhlhhhlhhhhhhhhlhlhhhhhhhhhhlhhhhhhh2.2.2 显示译码器数码显示器就是用来显示数字、文字或符号的器件。七段显示器有两种,共阴极和共阳极电路,共阴极电路中,七个发光二极管的阴极连接在一起接低电

23、平。共阳极显示器的驱动则刚好相反。为了是数码管能显示十进制数,必须将十进制数的代码经译码器译出,然后经驱动去点亮对应的段。译码器的功能就是,对应于某一段数码输入,相应的几个输出端有有效信号输出。常用的七段显示译码器有两类,一类译码器输出高电平有效信号,用来驱动共阴极显示器,另一类输出低电平信号,以驱动共阳极显示器。下面介绍一种常用的cmos七段译码器,其真值表如表2-3所示。表2-3 共阴极七段译码器真值表数值输入输出abcdabcdefg0llllhhhhhhl1lllhlhhllll2llhlhhlhhlh3llhhhhhhllh4lhlllhhllhh5lhlhhlhhlhh6lhhlh

24、lhhhhh7lhhhhhhllll8hlllhhhhhhh9hllhhhhhlhhahlhlhhhlhhhbhlhhllhhhhhchhllhllhhhldhhlhlhhhhlhehhhlhllhhhhfhhhhhlllhhh2.3 数据选择器数据选择器又称多路选择器(mux)。每次在地址输入的控制下,从多路输入数据中选择一路输出,其功能类似于一个单刀双掷开关。常用的数据选择器有2选1、4选1、8选1、16选1等。数据选择器的电路结构一般由与或门阵列组成,也有用传输门开关和门电路混合而成的。下面以4选1数据选择器为例进行分析,其真值表如表2-4所示。当输入地址为00时,输出信号为d0;当输入

25、地址为01时,输出信号为d1;当输入地址为10时,输出信号为d2;当输入地址为11时,输出信号为d3。根据功能表可以写出输出信号y的表达式:y=(s2)&(s1)&d0)|(s2)&s1&d1)|(s2&(s1)&d2)|(s2&s1&d3);表2-4 4选1数据选择器功能表输入地址输出s1s0ylld0lhd1hld2hhd33 基于matlab的组合逻辑电路仿真实现3.1以编码器和译码器为例的仿真3.1.1 8线3线编码器的仿真进入simulink仿真界面后,按照8线3线编码器的逻辑表达式逐一拖入所需的原件,先摆置好基本位置,然后进行连接,最后得到的8线3线编码器的原理图如图3-1所示。然

26、后,设置好各输入脉冲后,点击进行仿真,然后分别点击查看输入输出信号的示波器查看波形,可观察得到8线3线编码器的输入输出波形如图3-2所示。根据波形可知所设计的8线3线编码器,在一定输入的情况下均可得到相应的正确的输出,即该设计符合设计要求。图3-1 8线3线编码器组合逻辑原理图图3-2 8线3线编码器输入输出仿真波形3.2.2 3线8线译码器的仿真进入simulink仿真界面后,按照3线8线译码器的逻辑表达式逐一拖入所需的原件并进行连接如图3-3所示,设置好输入脉冲后,再仿真,然后分别点击查看输入输出信号的示波器查看波形,如图3-4所示,根据以下波形可以看出所设计的3线8线译码器,在给不同输入

27、的情况下均可得到相应的正确的输出,即该设计符合设计要求。图3-3 3线8线译码器原理图图3-4 3线8线译码器输入输出仿真波形3.3.3 4选1数据选择器的仿真进入simulink仿真界面后,按照4选1数据选择器的逻辑表达式逐一拖入的原件先摆置好基本位置,然后进行连接,最后得到的4选1数据选择器的原理图如图3-5所示。图3-5 4选1数据选择器原理图设置好输入时钟脉冲后,点击进行仿真,然后分别点击查看输入输出信号的示波器查看波形,如图3-6所示,其中信号d3是高电平信号,信号d2为周期是2的脉冲信号,信号d1是低电平信号,信号i0为周期是0.5的脉冲信号。 根据以下波形可以看出所设计的4选1数

28、据选择器,在给不同输入的情况下均可得到相应的正确的输出,即该设计符合设计要求。图3-6 4选1数据选择器输入输出仿真波形图3.2 以译码器的级联为例实现系统的封装并仿真3.2.1 3线8线译码器的封装在设计完3线8线译码器后为了完成4线16线的设计,需要对3线8线译码器进行封装,下面将详细介绍,首先在3线8线译码器原理图上选中需要封装的部分,然后选择edit菜单下的create subsystem。在创建好一个新的系统后需要对其进一步封装,设置其有关属性,首先选中创建好的系统后选择edit菜单下的mask subsystem命令,这是就会出现一个对话框:mask editor,将这个对话框设置

29、好,模块就封装成功了。首先需要在icon页设置封装模块的图标,在最顶部的是封装类型,中间的编辑框是用来写如图标绘制命令,这里可以填写matlab的绘图命令,但更常用的是显示文本的命令:disp、text、fprintf和port-label。设置icon页后还需要设置documentation页,在该页中的三个编辑框可以分别为封装模块设置封装类型、秒数文件和帮助文件,封装类型我们已经设置好了,它将作为模块的标题出现在对话框的顶部,在模块的描述编辑框中,我们可以填入对模块的描述文本。设置好documentation页后对该模块点击ok键就可以看到封装后的模块了,如图3-7所示,模块的中间是输出了

30、我们设置的文本,然后双击该模块,这次看到的不再是子系统的电路了,而是一个模块对话框,封装后的子系统如图3-7所示。图3-7 封装后的3-8译码器3.2.2 4线16线译码器的仿真 4线16线译码器可以用2片3线8线译码器和一个反相器级联而成,其原理图如图3-8所示,图3-8 4线16线级联原理图设置好输入时钟脉冲后,点击进行仿真,然后分别点击查看输入输出信号的示波器查看波形,如图3-9、图3-10和图3-11所示,根据以下波形可以看出所设计的4线16线译码器,在给不同输入的情况下均可得到相应的正确的输出,即该设计符合设计要求。图3-9 4线16线译码器输入波形 图3-10 低8位输出波形 图3

31、-11 高8位输出波形3.3 以七段数码管为例子完成数码管的图形输出显示进入simulink仿真界面后,按照七段数码管的逻辑表达式逐一拖入所需的原件并进行连接如图3-12所示。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);设置好输入时钟脉冲后,点击进行仿真,然后分别

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论