概述
在了解了这么多时序逻辑的抽象概念之后,我们来研究怎么把它们变成实际可操作的逻辑设计方法论。
一般来说,如果已经给出需求,时序逻辑设计有如下几步:
- 把自然语言描述的逻辑抽象化,确定电路状态数,画出状态转换图;
- 确定使用的触发器,列出三个方程:输出方程、驱动方程、状态方程;
- 设计具体电路。
直接从具体案例分析。现在的需求是:
设计一个自动售饮料机的逻辑电路。它的投币口每次只能投入一枚五角或一元的硬币。累计投入一元五角硬币后机器自动给一杯饮料;投入二元硬币后,在给饮料的同时退回一枚五角的硬币。 [1]
一、定义变量与状态
逻辑设计的过程和组合逻辑大致相同,首先要定义各个变量。此处有两个输入:投入五角硬币
-
:无投币;
-
:共投入了五角,等待继续投币;
-
:共投入了一元,等待继续投币;
可能在一开始,会觉得投入了一元五角和两元也是状态,但实际上它们并不是可维持的状态。比如当电路处于
二、状态转换图与状态编码
画状态转换图的过程,就是一个“从电路的角度思考”的过程。作为一个电路,我们以极快的频率(比如每秒10次)检测电路的输入,是
这张图一旦自己绘制过一遍,就非常容易理解它的逻辑。每一次投币导致了状态变化,并决定是否产生输出。有一个值得注意的:
接下来,把状态编码。由于只有三个状态,并且没有等价状态(也就是相同的输入会导致相同的输出和相同的次态),只要把它们顺序编码即可。我们先用最显然的
最后,我们可以把转换图抽象成更适合逻辑分析的卡诺图。
这样,我们就完成了逻辑抽象的步骤。
三、列出方程
再次回忆时序逻辑中的三组方程:
我们可以用和组合逻辑几乎一样的思路来得到这些方程,也就是真值表或卡诺图。由于时序逻辑往往有很多无关项(那些不可能出现的状态),卡诺图反倒更加常用。
第二节中给出的卡诺图是一张总图,同时出现了四个因变量(次态
这样就不难得到输出方程和状态方程。
但为了确定驱动方程,表示出内部输入
其中
我们要把
从而得到驱动方程:
而如果选用了D触发器,那么由于
可以看到,JK触发器得到的最终方程更简单。
四、画电路图
这是我们的电路图的抽象。
由于已经有了输出方程
我的文章中许多图表与电路图都是用LaTeX绘制的。因此用tex生成的pdf可能比起知乎更适合连贯的阅读。我已经把这一系列的tex与pdf版本都开源在了GitHub上,可以在这里查看:
digital-circuit-notesgithub.com我能不能骗点star和follow呢(期待.jpg)
参考
- ^数字电路与逻辑设计,张俊涛著,清华大学出版社2017版
最后
以上就是野性大米为你收集整理的用labview设计jk触发器_数字电路学习笔记(十二):时序逻辑设计的全部内容,希望文章能够帮你解决用labview设计jk触发器_数字电路学习笔记(十二):时序逻辑设计所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复