3位二进制编码器,8/3线二进制编码器,其输入端有8个,输出端有3个。
真值表如下图所示:
X0 |
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
X7 |
Z0 |
Z1 |
Z2 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
根据真值表可以直接写出逻辑表达式:
根据以上分析结果,可知需要选用以下模块:
*Pulse Generator(脉冲序列发生器)模块:
位于Simulink节点下的Source库中,用于产生所需的原始脉冲脉冲序列。复制8个PulseGenerator模块进入sy03.mdl文件中,将它们分别命名为。分别双击各个模块,对其参数进行调整。
在PulseGenerator打开的的参数对话框界面中进行相应的设置,在Pulse type选项中有Time based(默认选项)和Sample based两项。
如果选中Timebased项,模块按照时间参数输出脉冲序列;如果选中Sample based项,模块将根据设定的采样频率及其他相关参数输出序列。在此选择Sample based项。
对“BlockParameters”对话框进行设置:
“Amplitude”文本框:用于设定调整脉冲输出幅度,本例中设置为1即可。
“Period(numberof samples)”文本框:用于设定按照采样时间长度确定产生的脉冲序列周期,本例中设置为8。
“Pulse width(numberof samples)”文本框:用于设定按照采样时间长度确定产生的脉冲序列周期,本例中设置为1。
“Phase delay (number of samples)”文本框:用于设定每一个脉冲持续的时间长短(即电平为1的时间,以采样时间为单位),本例中X0~X7依次设置为0~7。
“Sample time’文本框:该文本框用于确定采样时间,单位是s(秒),本例中设置为1。
*Logical Operator(逻辑操作)模块
位于Simulink节点下的Logic and Bit Operator模块库中,用于实现逻辑表达式的运算
Logical Operator模块参数调整
* Scope(示波器)模块
位于Simulink节点下的Sinks模块库中,本例用到2个示波器。
设置示波器参数后单击Scope模块,可以看到Z2,Z1,Z0的输出波形,以及X0-X7的输入波形。
Simulink建模如下:
X0至X7产生的信号波形如下:
编码器输出波形图如下:
观察上图(从上往下依次为Z1、Z0、Z2)可以发现输出波形图为000、001、010、…111,这确实是十进制0-7的二进制编码,因而该模型符合实现8-3编码器功能的要求。
下面总结一下利用simulink搭建组合逻辑电路模型步骤:
在设计组合电路时,首先需要明确输入与输出之间的关系,然后根据该关系写出真值表,紧接着根据真值表得出输入输出间的逻辑表达式,最后根据该逻辑表达式建立模型。