当前课程知识点:IC设计与方法 >  2、数字集成电路设计方法 >  c)时序逻辑电路(1) >  2-3时序逻辑电路的设计方法 (一)

返回《IC设计与方法》慕课在线视频课程列表

2-3时序逻辑电路的设计方法 (一)在线视频

2-3时序逻辑电路的设计方法 (一)

下一节:2-3时序逻辑电路的设计方法 (二)

返回《IC设计与方法》慕课在线视频列表

2-3时序逻辑电路的设计方法 (一)课程教案、知识点、字幕

我们上面讲完了

组合逻辑电路的设计方法

下面来看一下时序逻辑电路的设计方法

首先

再回顾或者说总结一下组合逻辑电路的内容

我们说组合逻辑电路内部不含记忆元器件

内部没有反馈电路

输出只跟当前的输入有关系

相对而言

时序逻辑电路内部有一个记忆元器件

它的输出不但跟当前的输入有关系

而且跟当前的内部状态有关系

我们作为电路设计人员就要去考虑

我们怎么才能去设计出一个时序逻辑电路

设计的时候

我们要用一种新的设计方法来设计

我们前面已经有组合逻辑电路的设计方法了

所以我们要考虑怎么在组合逻辑电路的基础上

去设计时序逻辑电路

这样就能够更有效地完成一个电路的设计

我们首先对比

时序逻辑电路它跟组合逻辑电路相比而言

从结构上来说

它多了一个记忆元器件

所以

我们就可以把时序逻辑电路分为两大块

一块是组合逻辑电路

另一块是用来保存当前状态的记忆元器件

然后通过这两块电路的组合

或者这两块电路一起来完成时序逻辑电路的功能

也就是说

输出电路

它不但根据记忆元器件记录的状态

还根据当前的输入

一起计算出或者说产生出我们电路的输出

这就是时序逻辑电路和组合逻辑电路的区别

或者说我们从设计人员角度考虑

怎么在组合逻辑电路的基础上

增加一个记忆元器件

增加相关的电路模块去实现时序逻辑电路的功能

具体记忆元器件用什么东西来做呢

记忆元器件根据我们本科所学的知识

我们可以用触发器

可能有RS触发器

可能有D触发器

然后有JK触发器

或者T触发器等等

这都是电路实现的一些细节了

总之

我们要在原来的组合逻辑电路的基础上

增加一小块电路去实现我们所需要的这个功能

用时序逻辑电路的方式去实现我们所需要的功能

按照刚才我们这样的想法

我们的时序逻辑电路就可以用这样一张图来总结

我们的时序逻辑电路在实现的时候分为两部分

一部分是组合逻辑电路

一部分是记忆元器件

或者说存储电路

存储电路记忆了当前电路的状态

组合逻辑电路部分

它的输入

有纯粹从外部进来的输入信号

也有记忆元器件给它的一个信号

作为整个组合逻辑电路的输入信号

这个组合逻辑电路

能够根据这两类输入信号

产生出我们电路的输出

以及产生出我们给记忆电路

或者给存储电路的另外一个存储电路的输入

这些功能

我们可以把它的逻辑功能分成三个方程来表述

一个是输出方程

根据电路的输入信号

以及根据存储电路的存的值

计算出我们电路当前的输出

这是输出方程

第二个是驱动方程

是根据电路的输入

以及根据(存储)电路当前的(状态)输出

计算出我们的存储器件的输入是什么

或者说用来驱动存储器件的信号

用来计算出它

我们称之为叫驱动方程

第三个是状态方程

状态方程是用来描述存储器件的变化的

用这三个方程可以表述出

我们的时序逻辑电路的内部的逻辑功能

从结构上来说

时序逻辑电路

大家记住这一点

结构上说

时序逻辑电路分为一小块组合逻辑电路

以及一小块用来存储内部状态的时序电路

时序电路具体的分类大概有两种分类

两大类分类

一类是根据电路的输出来进行分类

如果电路的输出只跟当前电路的状态有关

我们称之为叫Moore电路

另一类

是电路的输出不但跟当前状态有关

还跟当前的输入信号有关

我们称之为叫Mealy电路

第二种分类方法是根据时序电路的一些特征

时序动作的特征来决定的

我们分为同步时序逻辑电路和异步时序逻辑电路

同步时序逻辑电路顾名思义

就是电路的内部的动作都是同步的

因为在我们电路内部

可能存在不只一个时序逻辑器件

比如说一个电路内部

可能存在几十个甚至几百个D触发器

如果这些D触发器的时钟端

全部连在同一个时钟信号上

我们就称之为叫同步电路

因为当一个时钟有效沿到来以后

所有这些触发器都在同一时刻动作

所以

顾名思义

我们把它称之为叫同步时序逻辑电路

第二种是异步时序逻辑电路

或者异步电路

异步电路从结构上来说

就有几大类结构

举个例子

一个就比如说我们的电路内部都是用RS触发器

或者说锁存器来设计的

对于这样的电路

它的每一个时序元器件动作的时刻

可能是完全错开的

并不在同一时刻动作

这是一个例子

第二个

有一些比如说电路里面虽然用的都是D触发器

D触发器是边沿型动作的

但是D触发器的时钟信号

用的又不是同一个时钟信号

而是各用各的时钟信号

总之

各个D触发器动作的时候

也不在同一时刻动作

那像这类电路

我们称之为异步时序逻辑电路

早期的设计方法

在大家都用基本的门器件

门电路

用画原理图的方式去进行设计的时候

在英特尔设计4004这样的处理器的时候

那时候

由于工艺的限制

大家要考虑对设计人员的要求

或者公司老板对设计人员的要求就是

你用尽可能少的门把电路设计出来

这样的话

芯片的成本是最低的

老板说你可以多用一个月的时间

多用两个月的时间

但是一定要把门数给降到最低

在这时候

大家会更多的去采用异步电路

因为同样的功能

如果用异步电路去实现

它的等效门数相对来说比较低

电路的性能会更好

随着集成电路技术的快速发展

到现在

我们在一个芯片上已经能够去实现

几十万门 几百万门 几千万门了

这时候

老板关心的

或者说公司所关心的是

你怎么才能够尽量快的

最好明天就能够把电路设计出来

那怎么办呢

这时候异步电路就没有优势了

我们如果用同步电路

现在有一套设计方法

能够保证大家用尽量短的时间

就能够把电路做出来

所以这时候我们就牺牲电路的面积

牺牲它的一些性能

但是可以用尽量少的时间

把功能实现

这就是同步电路的优势

我们来回顾一下

本科期间所学的传统的时序逻辑电路的设计方法

大致可以分为五步

也可以说分为四步

或者说分为六步

根据各个教科书的说法不同

可能分法有点不太一样

首先第一步

应该说前几步

跟组合逻辑电路的设计方法是相类似的

首先作为电路设计

我们第一步确定电路有哪些输入和哪些输出

这个也是我们说过

非常关键的

如果输入输出定义的不好

将来产品做出来以后

要么就是用起来会非常的麻烦

要么就是产品的性价比

相对来说会低一些

第二步

时序逻辑电路

它有一个内部的状态

所以我们要确定把什么东西来当作状态

我们后面结合一个具体的例子来看

把什么东西作为状态

以及我们电路内部需要几个状态

以及这些状态之间

根据输入信号的不同

状态之间是怎么进行变化的

具体这一步在做的时候

是我们作为设计人员要动脑筋的地方了

我们刚才所说的三个因素

什么作为状态

状态的数量

以及状态是怎么转移的

这三个要素是我们作为设计人员需要考虑的

这也是我们电路90%的工作量

都在这个地方

那么具体在表示这个状态的时候

我们可以用状态转换图

或者是状态转换表等等各种方法

把设计思路给它描述出来

通常当我们一个电路的功能相对来说比较简单

状态的个数比较少的时候

我们会用状态转换图

把这张图给它表示出来

当状态数比较多的时候

比如说你设计的是一个处理器

这个处理器的指令转换有几十个状态

这个时候如果用图去表示这张状态转移过程

这个图会特别特别的零乱

这时候

我们会把它用一种

叫状态转换表的方式给他整理出来

表是一个非常规则的一种表示方式

整理成状态转换表

会让我们的设计显得特别整齐

而且不容易出错

因为你可以在表里面去检查所有的逻辑关系

是不是符合互补的要求

完成第二步以后

下面就是

设计人员要做的比较繁琐的工作了

我们要把刚才这张图里边的状态转移关系

整理清楚、做状态简化

并且完成状态分配等等这些工作

第四步

是要结合我们所选定的具体的触发器

到底是用D触发器

还是锁存器

还是JK触发器

结合这些触发器

把具体的电路进行化简

把输出方程 驱动方程 状态方程等

三个方程给它确定下来

把这些确定下来以后

我们的设计工作基本上就算做完了

最后就是把电路图画出来

刚才我们抽象地把

时序逻辑电路的设计方法整理了一遍

下面我们来结合一个具体的例子

来看一下这个方法是怎么应用的

我估计好多同学上完本科的课程之后

具体的方法都有点忘的差不多了

我们以这个实例来整理一下这个方法

注意

在这个过程里面

我们并不是真正的去关心电路的设计细节

比如说方程是怎么列出来的

方程怎么优化

我们要关注的是设计方法

也就是说这个时序逻辑电路

到底是怎么一步一步的设计出来的

为什么要关注这个方法呢

我们要从这个方法里面去考虑

在这个方法里面

哪些是作为我们设计人员必须要做的事情

哪些是我们设计人员虽然做了

但是这些事情又可以

在将来利用现在计算机的计算能力

把这件事让计算机去做

从而把设计人员的设计能力释放出来

让我们真正关注在

我们作为设计人员真正必须考虑的问题上

话说得有点罗嗦

大致的意思就是说

让我们设计人员的精力

放在你能够创新的地方

其他那些琐碎的工作

尽可能让计算机去帮你完成

那么

我们来看这个具体的例子

我们要设计一个串行数据的检测电路

它能够检测三个或三个以上连续的1

一旦检测到这样的特征串以后

就输出一个标记

比如说输出一个“1”

检测不到就输出一个“0”

这样的电路

看起来非常简单

但实际工程应用里面非常的多

几乎所有的通信类的电路也好

或者说数据处理的电路也好

都有类似这样的需求

就是完成一个特征串里面的某个特征的检测

比如说

通信电路里边

对于同步电路

我们总会先发一个同步信号

表示通信的开始

所以我们就要在电路收到的串行的数据流里面

去检测一个特定符号

这个符号表示我们通讯数据就要开始了

再举个例子

比如说卫星导航

我们前面讲过

咱们国内比较有名的成就就是北斗导航系统

在卫星导航系统里面

天上有20多颗卫星

一直在往我们地面的接收站(发射信号)

比如说我们每个人手机里面都有GPS接收机

有北斗接收机

这个接收机会收到来自20多个卫星的卫星信号

对接收到的信号

接收机做的第一件事

就是要从信号流里面识别这些信号

卫星发下来的信号是什么呢

你可以想象出

它就是一串随机数

一串在不断重复的随机数

当然这个重复周期比较长

以GPS为例

这个随机数的码长大约是1000个比特

它每隔1000个比特就会重复一次

所以我们就要有一个同步电路

或者说有一个序列检测电路

去检测这1000个比特

这1024个比特是不是特定的数据

如果是特定的数据

表示你捕捉到了卫星的信号

这就是序列检测器

在各个领域里面都有特殊的应用

再举个例子

在生物医药领域里面

大家都知道

现在有DNA的序列检测

DNA检测也是一样的问题

在我们采集到的DNA序列里边

我们要去搜索特定的序列串

这就是序列检测

怎么进行序列检测呢

第一步我们按照这样的需求

或者说题目的需求来做

第一步确定我们电路都有哪些输入和输出信号

输入的都是串行输入的一比特的数字信号

然后输出

当检测到特定序列以后

我们输出一个比特信号就行了

第二个是要设定有多少个状态

因为我们现在要检测的序列的串

大概长度是三

因为我们只要检测三个连续的 “1”

所以我们的状态

大概用3个比特就够了

可以用3个比特状态

具体在实现的时候

可以用8个状态也行

或者用3个状态也可以

以刚才的GPS为例

一共序列长度1024

你设计的状态机

可能需要1024个状态

也可能设计的好一点

可能用10个比特去表示 2 的10次方

表示1024也就够了

所以这跟具体设计方法有关系

这就是第二步

我们确定电路用什么东西来作为状态

以及需要几个状态

然后第三小步

我们要确定状态的转移关系

细节我们就不对着这张图

去说怎么去确定转移关系了

总之就是说

比如以这道题或者是这个需求为例

当收到第一个 1 的时候

进入到某一个状态

连续收到两个1

进入到某个状态

连续收到三个1

进入到某一个状态

并且输出一个检测标志

否则又回到原始状态

从而

类似这种经过一个复杂的思考过程

把我们电路的状态转移图确定下来

在确定状态转移图的时候

其实还有另外一件事

就是要确定我们这个电路

到底是用Moore状态机的方式

还是Mealy状态机的方式

去表现出来

去设计出来

从体现形式来看

在状态图上就体现出,如果是Moore状态机

因为电路的输出在当前状态始终是保持不变的

所以意味在状态机的这个圈里面

我们不会说只画一个当前状态

而是在圈里面会写成

上面是状态

下面是当前状态的输出的这种方式

在我们这个例子里面我们用的是Mealy状态机

所以这个电路的输出是在状态的转移条件上

在状态转移条件上我们有一个斜杠

把电路的输入跟输出分开

表示在不同的输入情况下

它的输出是会发生变化的

当我们把状态转移图构造完了以后

下面我们还要用一些手段

用一些逻辑分析的手段

对状态转移图去进行化简

比如说某些状态需要合并

要做一些优化工作

优化完了以后

应该说电路前期的设计工作

基本就到此为止了

因为

电路的状态转移图一旦确定以后

基本上我们电路的设计部分就完了

后几部分的工作

主要就是电路的实现部分

也就是说

我们要用一个什么样的电路结构

什么样一种电路方式

去实现我们刚才所说的这样一个设计的构思

实现的时候

我们首先就要考虑触发器的这个选型

我到底是用D触发器

JK触发器还是T触发器来实现这个电路

由于这三种触发器是完全可以互换的

都有一种互换的原则

所以我们可以选用任一种触发器

或者说一些触发器的组合

对于某个状态我们用JK触发器

某个状态用T触发器这也是可以的

但是从设计人员方便的角度考虑

我们一般只选用一种触发器来实现这个电路

以我们这个例子为例

我们选了这个JK触发器

选好触发器以后

下面我们就要根据这个触发器的类型

以及根据我们的状态转移图

列出我们的输出方程

状态方程以及驱动方程

把状态转移图里面的转移条件

整理成输出方程

驱动方程和状态方程里边的逻辑函数

我们就可以画出

这些逻辑函数及它们所对应的卡诺图

然后

大家回想一下

一(谈)到卡诺图

这就跟我们前面所说的组合逻辑电路

是不是就一样了

所以

一旦把我们的状态转移图变到这一步以后

下面的工作

这部分的工作就和组合逻辑电路的设计工作

就是完全一样的

我们把初始的逻辑方程确定出来

确定好了以后

然后画出卡诺图

然后用卡诺图优化的方式

或者说逻辑函数优化的方式

去化简

就完成了这一部分的设计工作

在前面

我们先完成前两个方程的优化工作

在这儿又完成驱动方程的优化工作

具体怎么优化我们就没必要去一一的讨论了

因为

我们回顾一下组合逻辑电路的设计方法

优化工作不应该由我们手工来做

优化工作应该由计算机去做

这里面虽然给出了一个优化的过程

但是这里面

列出的是传统的组合逻辑电路设计的方法

按照新的设计方法

我们只要把这个方程列出来

我们的设计工作就做完了

优化工作可以扔给计算机去做

优化工作做完以后

最后一步要干什么

我们把电路

因为我们设计电路

所以还要把电路画出来

这里面

我们就不去看复杂的完整的详细电路了

我们只看其中的一个信号的输出电路

我们可以看到在电路里边有几个触发器

是用来保存电路的当前状态的

还有几个门

最终电路优化完了之后

非常简单

就剩下几个门了

这些门是根据当前的电路输入

以及当前的内部状态来计算出电路的输出信号

这样就完成了一个时序电路的设计

我们回顾一下

刚才的设计过程

一个五步的设计过程

我们可以看到

作为对设计构思的表述

到第二步,也就是说

我们画出状态转移图或者说状态转移表以后

我们的设计构思就已经做完了

后面三步是设计的实现过程

也就是说用一种比较机械的方式

什么方式呢

也就是说优化逻辑方程

以及根据优化完的逻辑方程画出电路

这些过程都是一个很机械(重复)的过程

或者说一个很八股的过程

只要是机械(重复)的过程

都可以用软件来实现

所以

我们就可以提出一种新的设计方法

或者说基于硬件描述语言的设计方法

我们把代码写出来以后

剩下这三步

就完全可以由计算机去完成了

当然

前提条件是我们这个设计方法

是一种新的设计方法

IC设计与方法课程列表:

课程准备:Quartus II软件的下载

-软件下载说明

--Quartus II软件下载教程

1、集成电路的发展

-a) 集成电路的应用及市场

--1-1集成电路应用及市场

-a) 集成电路的应用及市场--作业

-b)集成电路的制造过程

--1-2 集成电路的制造过程

-b)集成电路的制造过程--作业

-c)从CPU的发展看IC的进展

--1-3从CPU的发展看IC的进展

-c)从CPU的发展看IC的进展--作业

-d)从行业的发展看IC的进展

--Video

-d)从行业的发展看IC的进展--作业

-e)从ISSCC看IC的发展方向

--讲课视频

-e)从ISSCC看IC的发展方向--作业

2、数字集成电路设计方法

-a)数字系统的实现方法 (ASSP/FPGA/ASIC的对比)

--讲课视频

-a)数字系统的实现方法 (ASSP/FPGA/ASIC的对比)

-b)组合逻辑电路

--Video

-2、数字集成电路设计方法--b)组合逻辑电路

-c)时序逻辑电路(1)

--2-3时序逻辑电路的设计方法 (一)

-d)时序逻辑电路(2)

--2-3时序逻辑电路的设计方法 (二)

-2、数字集成电路设计方法--d)时序逻辑电路(2)

3、Verilog语法

-a)Verilog的历史和学习要点

--讲课视频

-b)端口、信号及数据类型

--讲课视频

-b)端口、信号及数据类型--作业

-c)逻辑电平及数据操作

--讲课视频

-3、Verilog语法--c)逻辑电平及数据操作

-d)Assign 语句

--3-1-4assign语句

-e)Assign 举例

--3-1-5 Assign 举例

-f)Always

--3-1-6 Always

-f)Always--作业

-g)阻塞与非阻塞赋值

--Video

-3、Verilog语法--g)阻塞与非阻塞赋值

-h)D触发器的描述

--Video

-i)时序电路的设计

--Video

-i)时序电路的设计--作业

-j) 面向测试的Verilog语法(1)

--3-3-1面向测试的Verilog语法(1)

-k) 面向测试的Verilog语法(2)

--3-3-2 面向测试的Verilog语法(2)

-k) 面向测试的Verilog语法(2)--作业

4、电路设计实例

-a)电路设计实例1

--Video

-b)电路设计实例2

--讲课视频

-b)电路设计实例2--作业

-c)电路设计实例3

--讲课视频

5、Modelsim仿真工具

-Modelsim仿真

--Modelsim仿真

6、Quartus工具

-a)综合及相关基本概念

--Video

-a)综合及相关基本概念--作业

-b)综合及优化

--Video

-c)门级仿真

--门级仿真

-d)Quartus综合及分析(1)

--讲课视频

-e)Quartus综合及分析(2)

--讲课视频

-e)Quartus综合及分析(2)--作业

-f)Quartus综合及分析(3)

--Video

-g)Quartus综合及分析(4)

--Video

-g)Quartus综合及分析(4)--作业

2-3时序逻辑电路的设计方法 (一)笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。