MATLAB之Simulink(三)全加器

##matlab之Simulink(三)
##全加器

今天给大家分享的是利用simulink搭建一个全加器,首先来认识一下全加器:

两个多位二进制数相加时,除了最低位外,每一位都应考虑来自低位的进位,即将两个对应位的加数和来自低位的进位三个数相加,这种运算称为全加,实现全加运算的电路成为全加器。

还有一点需要注意的是它与半加器的区别,半加器是将两个一位二进制数相加,所以只考虑两个加数本身,并不需要考虑由低位来的进位的运算。

在全加器中,通常用A和B分别表示加数和被加数,用Ci表示来自相邻低位的进位数,S表示全加器的和,Co表示向相邻高位的进位数。

接下来我们来列出真值表:
在这里插入图片描述

这里要注意的是,在实际应用中,Ci为前一位运算的向高位的进位,并不是人为控制输入。

根据真值表,我们来写出表达式
在这里插入图片描述在这里插入图片描述
在分析完之后,接下来就开始建立模型了:
首先新建一个空白编辑界面,步骤不再多说
在这里插入图片描述
接下来放置模块。
从表达式中我们可以知道,我们需要的运算模块有与门、或门和异或门。
拖动一个逻辑运算原件到编辑界面即可。
在这里插入图片描述这里有一个逻辑运算原件需要大家认识,XOR,就是异或。
在这里插入图片描述因为我们需要输入二进制数,所以我们还要一个可以产生周期矩形波的元件,在库中搜索"pulse"即可。
在这里插入图片描述连接电路图:
在这里插入图片描述
连接好之后,我们需要调整输入波形,并且用示波器进行验证。
首先来看输入波形的调整方法:
双击pulse
在这里插入图片描述
这里需要知道的是各个参数表示的意义:
Amplitude——振幅
Period——周期
Pulse Width——脉冲持续时间
Phase delay——相位

这里我们假设输入数据为000,001,010,011,100,101,110,111。
那么对应的设置为:
在这里插入图片描述接下来将示波器设置为三个输入,分别与三个矩形波相连,查看结果:
不会使用示波器的朋友请看我的上一篇文章https://blog.csdn.net/weixin_44936771/article/details/107885568
在这里插入图片描述
可以看出在A的一个周期内,从上往下,数据分别为000,001,010,011,100,101,110,111,符合我们的目的。

接下来再使用一个示波器与两个输出连接。
在这里插入图片描述

进行仿真,查看仿真结果:
在这里插入图片描述在这幅图中,上面是Co,下面是S,可以看出在一个周期内,输入和输出的数据与真值表相吻合,这说明我们成功了。

##以上就是本节的全部内容,后续内容会逐渐上传,相关源码也会统一上传,也可以到公众号私聊我要。
##不足之处请及时指出,相互学习
##不懂得小伙伴可以到我的公众号"歌者X"私信我,看到后会回复的,欢迎交流学习!
下面是我的公众号
在这里插入图片描述

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,无法确定具体的加法器类型。但是Simulink中有多种加法器,例如普通加法器、积分器、微分器等等。下面以普通加法器为例进行介绍。 在Simulink中,可以使用Sum模块来实现加法器。具体步骤如下: 1. 打开Simulink模型,在左侧工具栏中找到Sum模块并将其拖入模型中。 2. 连接Sum模块的输入端口。Sum模块有两个输入端口,分别为“+”和“-”,分别对应加数和被加数。可以使用Constant模块来提供输入信号。 3. 连接Sum模块的输出端口。Sum模块的输出为两个输入信号的和。 4. 可以通过双击Sum模块来打开其参数设置界面,设置加法器的具体参数,例如是否启用溢出检查等。 下面是一个简单的Simulink模型,实现了两个常数的相加操作: ```matlab % Simulink模型 % 两个常数相加 % by AI助手 model = "AdderExample"; open_system(new_system(model)); % 添加常数模块 const1 = add_block('simulink/Sources/Constant', [model '/Constant1']); const2 = add_block('simulink/Sources/Constant', [model '/Constant2']); % 添加加法器模块 adder = add_block('simulink/Math Operations/Sum', [model '/Adder']); % 添加输出模块 scope = add_block('simulink/Sinks/Scope', [model '/Scope']); % 设置常数值 set_param(const1, 'Value', '2'); set_param(const2, 'Value', '3'); % 连接模块 add_line(model, 'Constant1/1', 'Adder/1'); add_line(model, 'Constant2/1', 'Adder/2'); add_line(model, 'Adder/1', 'Scope/1'); % 设置模块位置 set_param(const1, 'Position', [50, 50, 100, 100]); set_param(const2, 'Position', [150, 50, 200, 100]); set_param(adder, 'Position', [250, 50, 300, 100]); set_param(scope, 'Position', [350, 50, 400, 100]); % 打开模型 open_system(model); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值