我是靠谱客的博主 野性大米,最近开发中收集的这篇文章主要介绍用labview设计jk触发器_数字电路学习笔记(十二):时序逻辑设计,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在了解了这么多时序逻辑的抽象概念之后,我们来研究怎么把它们变成实际可操作的逻辑设计方法论。

一般来说,如果已经给出需求,时序逻辑设计有如下几步:

  1. 把自然语言描述的逻辑抽象化,确定电路状态数,画出状态转换图;
  2. 确定使用的触发器,列出三个方程:输出方程、驱动方程、状态方程;
  3. 设计具体电路。

直接从具体案例分析。现在的需求是:

设计一个自动售饮料机的逻辑电路。它的投币口每次只能投入一枚五角或一元的硬币。累计投入一元五角硬币后机器自动给一杯饮料;投入二元硬币后,在给饮料的同时退回一枚五角的硬币。 [1]

一、定义变量与状态

逻辑设计的过程和组合逻辑大致相同,首先要定义各个变量。此处有两个输入:投入五角硬币

、投入一元硬币
;有两个输出:给饮料
、找回五角硬币
。除此之外,时序逻辑除了输入输出,还要定义状态。我们的电路可能有几种状态?在一个完整的服务周期中,它可能处于以下几种状态:
  1. :无投币;
  2. :共投入了五角,等待继续投币;
  3. :共投入了一元,等待继续投币;

可能在一开始,会觉得投入了一元五角和两元也是状态,但实际上它们并不是可维持的状态。比如当电路处于

状态时,一旦再投入一元,就会立刻有输出(给饮料),然后回到“无投币”的基态。因此可以直接把这种情况视作由输入
导致的输出
,而不是一个瞬时的“投入两元”的状态。

二、状态转换图与状态编码

画状态转换图的过程,就是一个“从电路的角度思考”的过程。作为一个电路,我们以极快的频率(比如每秒10次)检测电路的输入,是

(无投币),
(投入五角)还是
(投入一元),然后根据自身状态决定次态和输出。我们从一个“基态”(比如
)出发,每次枚举所有可能的输入,研究它跳转到的状态以及同时给出的输出。画出如下的转换图:

ce3bd5db8c24e0caa7d55eff9625cef7.png

这张图一旦自己绘制过一遍,就非常容易理解它的逻辑。每一次投币导致了状态变化,并决定是否产生输出。有一个值得注意的:

虽然都表示“状态”,但它们不是等价的。
表示一个抽象的状态,下标表示状态的编号;
则是具象的,表示状态中的一个比特。比如可能有

接下来,把状态编码。由于只有三个状态,并且没有等价状态(也就是相同的输入会导致相同的输出和相同的次态),只要把它们顺序编码即可。我们先用最显然的

,这用2个触发器即可表达。

最后,我们可以把转换图抽象成更适合逻辑分析的卡诺图。

9e53df27cfc95833173d8d0f4c172821.png

这样,我们就完成了逻辑抽象的步骤。

三、列出方程

再次回忆时序逻辑中的三组方程:

我们可以用和组合逻辑几乎一样的思路来得到这些方程,也就是真值表或卡诺图。由于时序逻辑往往有很多无关项(那些不可能出现的状态),卡诺图反倒更加常用。

第二节中给出的卡诺图是一张总图,同时出现了四个因变量(次态

和输出
),但如果要用卡诺图合并同类项,我们就只能一次处理一个变量。因此把总图拆成四张子图:

e46b0150b4609d912d06f4f82b93028a.png
Q1*

3e4e2861fefe5726e8a0a011c3d225c0.png
Q0*

02b73490800bb7736b091cf5d67e9958.png
X

4badcf253ae3f1ac4d491defa86d4e4c.png
Y

这样就不难得到输出方程和状态方程。

但为了确定驱动方程,表示出内部输入

,我们要先决定用什么触发器。最常用的是JK触发器和D触发器。前者功能更加强大,后者则在设计时更简单,但很可能最终逻辑更复杂。回忆它们的特性方程分别是:

其中

等便是内部输入。比如,如果我们选用JK触发器设计电路,就可以将特性方程和状态方程作比较:

我们要把

对应的系数作为
。可以略微改写一下:

从而得到驱动方程:

而如果选用了D触发器,那么由于

,只要把对应的
改写成
即可:

可以看到,JK触发器得到的最终方程更简单。

四、画电路图

这是我们的电路图的抽象。

7330df3b4264859972d2149d662f2271.png

由于已经有了输出方程

和驱动方程
,分别是
,可以直接把它们的方程代入,画出电路。

我的文章中许多图表与电路图都是用LaTeX绘制的。因此用tex生成的pdf可能比起知乎更适合连贯的阅读。我已经把这一系列的tex与pdf版本都开源在了GitHub上,可以在这里查看:

digital-circuit-notes​github.com

我能不能骗点star和follow呢(期待.jpg)

参考

  1. ^数字电路与逻辑设计,张俊涛著,清华大学出版社2017版

最后

以上就是野性大米为你收集整理的用labview设计jk触发器_数字电路学习笔记(十二):时序逻辑设计的全部内容,希望文章能够帮你解决用labview设计jk触发器_数字电路学习笔记(十二):时序逻辑设计所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(82)

评论列表共有 0 条评论

立即
投稿
返回
顶部