开学临近,本人查缺补漏,应对推迟的期末考试
同步时序逻辑设计,难度有所增加,本人欲通过110序列检测器来解决这一问题点:
设计步骤:
1.获取原始状态图与状态表--分析状态图表
2.最简化状态图表
3.状态编码
4.利用状态转移表与触发器特征设计触发器激励
5.卡诺图化简
6.电路实现
7.检查无关项
具体操作
获取原始状态图与状态表--分析状态图表
-
状态设定:
s0 --->初态:表示接收一位数据“0”
s1 --->“1”
s2 --->"11"
s3 --->"110" 此时输出 z = 1;其他情况 z = 0 -
分析状态转换情况:
原式状态图如下:
手写版:
- 原始状态表:
对其进行化简
发现s3与s0相同,删去s3
状态分配
有s0,s1,s2三种状态,所以要使用两个JK触发器或者D触发器
我们先以JK触发器为例:
-
设置编码
~~~ y2 y1 s0------------> 0 0 s1-------------> 1 0 s2-------------> 1 1 y1,y2分别为两个jk触发器的Q输出 ~~~
-
列真值表
利用JK触发器的特性,可写出J2,K2,J1,K1的高低电压情况,使y2,y1从现态变成次态
此真值表中的触发器的取值就是将现态转变为次态的J,K取值情况
JK触发器特性
J = K = 0 ---> D = Q ,保持
J = 0,K = 1 ---> D = 0,复位
J = 1,K = 0 ---> D = 1 ,置位
J = K = 1 ----> D = \(\bar{Q}\) , 反转,此时可以认为就是T触发器的效果
-
利用卡诺图化简:
要画五个卡诺图,分别是:J2,K2,J1,K1,Z
** 根据真值表中的值来画卡诺图**
可得:J2 = X
可得: J1 = X·Y2
K2= \(\bar{X}\)
K1 = \(\bar{X}\)
Z = \(\bar{X}\)·Y1
电路实现
根据 :J2 = X, J1 = XY2,K2= \(\bar{X}\),K1 = \(\bar{X}\),Z = \(\bar{X}\)*Y1来画电路
X为一个输入引脚,Z为输出引脚\
先画俩JK触发器:
再添电路:
检查无关项
思路:将未用到的“01”状态带入计算
利用JK触发器的次态方程 D = J\(\bar{Q}\) + \(\bar{K}\)Q
得: Y1n+1 = J1\(\bar{Y}\)1n + \(\bar{K}\)1Y1n = XY2n\(\bar{Y}\)1n + XY1n = X(Y1n + Y2n)
Y2n+1 = X\(\bar{Y}\)2n + XY2n = X
Y1
现在再将“ Y2 = 0, Y1= 1”带入
情况1:
Y2n+1 = 0Y1n+1 = 0(1+0) = 0
情况2;
Y2n+1 = 1(1+0) = 1
Y1n+1 = 1
检查无误,电路可以自启动,自此也就完成了
结尾补充
补充:
对于未用状态得2输出设置调整: 可以将其输出调整为无效即可
对于未用状态的次态设置调整:可以将未用状态的次态设置成初态或其编码最接近的工作状态 --例如:假设本题中的“01”未用状态,则可将其次态设置为“00”或“11”,这样列真值表时把他也考虑在内,在列卡诺图……等一系列操作
各位也可以根据这个思路,把JK触发器换成T触发器,总体步骤不变,列真值表时把jk换成T ,利用次态是否反转判断T的取值,列卡诺图……