设计一个串行数据检测电路. 当连续出现4个和4个以上的1时, 检测输出信号为1, 其余情况下的输出信号为0(设计1111序列检测电路)

 题目: 设计一个串行数据检测电路. 当连续出现4个和4个以上的1时, 检测输出信号为1, 其余情况下的输出信号为0.

分析: 

        从题目的表述中, 我们获取到信息, 连续出现4个或4个以上的1时, 输出信号为1, 否则为0: 实际上是让我们设计一个1111序列检测电路. 对于问题的转换十分重要, 若此处不能将问题转换为设计1111序列检测电路, 那电路的设计难度将会很大.

        既然已经将问题转化为1111序列检测电路的设计, 那我们进入到设计序列检测电路的设计模板中来:

①确定状态个数: 

        1111序列检测电路至少需要5个状态, 我们先将这5个状态设为S0、S1、S2、S3、S4.

②根据1111序列检测的特性, 绘制原始状态图(此处读者不要过多思虑, 只需要按照感觉设计即可).

设计一个串行数据检测电路. 当连续出现4个和4个以上的1时, 检测输出信号为1, 其余情况下的输出信号为0(设计1111序列检测电路)

③将原始状态图转换为原始状态表.

设计一个串行数据检测电路. 当连续出现4个和4个以上的1时, 检测输出信号为1, 其余情况下的输出信号为0(设计1111序列检测电路)

④从原始状态表中寻找等价状态, 并化简原始状态表.

        从原始状态表中, 我们可以看出, S3、S4为等价状态, 则将S4行删除, 并将剩下部分出现S4的地方用S3代替.

设计一个串行数据检测电路. 当连续出现4个和4个以上的1时, 检测输出信号为1, 其余情况下的输出信号为0(设计1111序列检测电路)

⑤根据化简后的状态表, 绘制状态图:

设计一个串行数据检测电路. 当连续出现4个和4个以上的1时, 检测输出信号为1, 其余情况下的输出信号为0(设计1111序列检测电路)

⑥对状态变量进行编码.

        经过状态化简后, 共有S0、S1、S2、S3四个状态, 需要2位二进制变量对其编码: S0 -> 00, S1->01, S2->10, S3->11.

⑦根据编码后的状态, 绘制状态表.

设计一个串行数据检测电路. 当连续出现4个和4个以上的1时, 检测输出信号为1, 其余情况下的输出信号为0(设计1111序列检测电路)

⑧选择D触发器, 绘制状态激励表.

设计一个串行数据检测电路. 当连续出现4个和4个以上的1时, 检测输出信号为1, 其余情况下的输出信号为0(设计1111序列检测电路)

⑨用74151或74153或合适的逻辑门实现D1和D0的逻辑表达式.

        此处若以电路设计的简单性作为第一要求, 那么就选择2片74151分别直接实现D1和D0的逻辑表达式. 若考虑到实际的设计成本, 又想兼顾电路设计的简单性, 那就选择1片双4选1数据选择器74153实现D1和D0的逻辑表达式. 若以练习基础的电路设计为第一要求, 那就不用中规模集成电路芯片, 而是选择合适的逻辑门来实现D1和D0的逻辑表达式.

⑩绘制电路逻辑图:

设计方案1(D触发器+2片74151):

设计一个串行数据检测电路. 当连续出现4个和4个以上的1时, 检测输出信号为1, 其余情况下的输出信号为0(设计1111序列检测电路)

设计方案2(D触发器+1片双4选1数据选择器74153):

设计一个串行数据检测电路. 当连续出现4个和4个以上的1时, 检测输出信号为1, 其余情况下的输出信号为0(设计1111序列检测电路)

设计方案3(D触发器+若干合适的逻辑门):

设计一个串行数据检测电路. 当连续出现4个和4个以上的1时, 检测输出信号为1, 其余情况下的输出信号为0(设计1111序列检测电路)