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

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

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

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

下一节:讲课视频

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

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

这个新的设计方法是什么呢

我们首先要来看一下元器件

在刚才的这种传统的设计方法里面

我们在实现状态转移图的时候

我们说可以用D触发器

也可以用JK触发器

也可以用T触发器来实现

这三类触发器

或者这些触发器各自的功能都有一些差异

我们在新的这种同步电路

我们叫做基于全同步电路的设计方法里面

用硬件描述语言来做设计

我们的设计模型是采用D触发器

为什么呢

因为D触发器的功能非常的简洁

采用D触发器以后

电路的状态方程就变得非常的简单

因为D触发器的功能是什么

是在时钟的上升沿

把当前的输入直接打到输出端

这样

它的功能传递相当于是

没有值的变化的一个直接传递的过程

这样就可以简化电路设计

所以

在讲具体的设计方法之前

我们先来回顾一下D触发器的功能

一个标准的D触发器

有这么几个信号端

时钟端

数据输入端 复位端

输出有同相输出Q

和反相输出/Q端

从逻辑功能角度来说

其实有3个信号就足够了

时钟

输入数据D和输出信号Q

就能够描述这个D触发器的功能

对于描述D触发器的功能

我们可以用三句话来描述

一个是复位信号

通常来说

D触发器的

或者说触发器的复位信号的优先级最高

所以我们第一句话就是描述说

当复位信号有效

有可能是高电平有效

也有可能是低电平有效

只要复位信号有效

触发器的输出端就会被强制设置成一个电平

也可能是1也可能是0

要取决于到底是什么类型的D触发器

这是第一句话

描述复位信号的功能

第二句话是时钟信号

D触发器动作的时候

只在时钟的有效沿工作

所以第二句话就是说

当时钟信号的有效沿到来的时候

把输入数据D的值

打到输出端Q去

这是第二句话

第三句话

在其他时候

什么是其他时候

就是说

复位信号是无效的

时钟的有效沿也没有到来的时候

D触发器的输出端

保持它的值不变

这是我们描述D触发器功能的三句话

我想大家上完一门课以后

可能什么东西都可能忘掉

但是这个一定要记下来

直接说这三句话

直接死记这三句话

可能稍微有点不够直观

我们再来看一下D触发器的时序图

是这样一个时序图

在这张时序图上就比较明显

当D触发器的复位信号

也就是低电平信号到来的时候

触发器的输出端被强制的置为一个固定电平

比如说是一个低电平的复位信号

输出端被置为低电平有效的复位信号

输出端的Q端被制为0

第二个就是说

当复位信号无效的时候

如果时钟的有效沿来到的时候

把输入的D的值传递到输出的Q端

第三句话

在其他任何时刻

只要没有时钟的有效沿

只要没有复位信号到来的时候

不管输入的数据信号怎么变化

输入的Q端都保持不变

这张波形图完美的表示了D触发器的三个功能

利用这样一个D触发器

去构造我们的时序逻辑电路的时候

我们可以看出

我们的电路可以用这样一张图给它表示出来

这张图

类似于前面的幻灯片

我们说时序逻辑电路

是在组合逻辑电路的基础上

增加了一个记忆元器件去实现

在前面的一页幻灯片

或者前面的图上

只有两个模块

在这里面

我们把前面

电路里面的组合逻辑电路分成了两部分

按照功能来说

分成了两部分

所以

在这个电路里面

一共有两个组合逻辑电路

和一个D触发器或者说一组D触发器

在这里面

D触发器是用来记住电路的当前的状态的

组合逻辑电路1

按照它的功能

可以把它称之为状态计算逻辑

它是根据电路的当前状态以及电路的当前输入

计算出电路的下一个状态是什么

这是组合逻辑电路1

组合逻辑电路里面

我们把组合逻辑电路的另一部分功能分解出来

然后用组合逻辑电路2来表示

组合逻辑电路2的功能是什么呢

它是根据电路的当前状态以及电路的当前输入

计算出电路的输出

我们称之为叫输出计算逻辑电路

可以起这么个名字

这里面我们可以看到

从当前输入到组合逻辑电路2是一条虚线

为什么是条虚线呢

大家想一下

这就要跟我们时序逻辑电路的类型有关了

我们说时序逻辑电路有可能是Moore状态机

也有可能是Mealy状态机

如果是摩尔状态机

我们说它的输出只跟电路的当前状态有关

在一个状态内

电路的输出是保持不变的

所以这条虚线就不存在了

输出计算逻辑

也就是组合逻辑电路2

输出计算逻辑这块电路

它只跟电路的当前状态有关系

而跟输入信号是没有关系的

就没有这条虚线

这样也就带来了一个好处

我们的输出信号在一个状态周期内

一个时钟周期内是始终保持固定不变的

如果是Mealy状态机

根据定义

或者说根据Mealy状态机功能的描述

Mealy状态机的输出

不但跟当前的状态有关系

还跟当前的输入有关系

所以

Mealy状态机的上面这条虚线就变成了实线

如果是Mealy状态机

也就是说

这个输出计算逻辑

不但要根据电路的当前状态

还要根据电路的当前输入

才能够计算出电路的输出

如果是画成实线以后

我们可以看到

即使电路的当前状态不变

处在当前状态这个时钟周期内

只要输入信号上有变化

哪怕是一个毛刺

我们电路的输出也可能会有一个毛刺输出

所以

我们这里面就又可以

从这张结构图又可以看出来

如果你设计一个电路

希望电路的输出是一个非常干净的信号

那就意味着你在设计电路的时候

不能够采用或者说要慎重采用Mealy状态机

还是要尽可能采用Moore状态机去实现

这里我们可能还要再插一句话

既然Mealy状态机有这样的缺点

我们为什么还用Mealy状态机呢

我们应该在所有的电路里面

都采用Moore状态机

原因是对于同样的功能需求

在实现电路的时候

通常Moore状态机所需要的状态数

会比Mealy状态机多一个

这是一方面

第二方面

同样的电路如果用Moore状态机的时候

动作响应的速度

比Mealy状态机会稍微慢一点

有时候

会慢一个时钟周期

所以

在某些对电路性能要求非常高

对电路的实现规模要求也非常高的情况下

我们会优先考虑Mealy状态机

下面我们再仔细看一下这张电路图

在这里面

我们对信号都起了一些名字

特别是电路的内部信号

我们关注一下两个内部信号

一个是current state当前状态

一个是next state下一状态

我们的组合逻辑电路1的作用

是用来根据当前的状态计算出(下一个状态)

以及当前的输入X

计算出下一个状态next state

然后D触发器在时钟有效沿到来的时候

把next state打入到D触发器

变成新的current state

这是两个功能

输出计算逻辑是根据current state

也就是根据当前状态

计算出当前的输出

所以这是我们

在用这种结构实现时序逻辑电路的时候

内部的信号

它所代表的意义

大家要详细的去理解这个意义

如果有必要

可以自己去画一张时序图

去看出这些next state

current state以及这些输入信号

和输出信号之间的时序上的关系

为什么呢

因为在我们设计电路的时候

哪怕是像我

设计很多电路以后

有时候脑子一糊涂

会把当前状态和下一状态在时钟上就搞混了

或者会错开一个时钟周期

导致电路的功能上出错

我们来看一下这张图,应该说是需要我们

还是有点像我这个前面说的一句口头禅

我们学完一门科以后

1年后 2年后 3年后甚至10年后

你可以把所有东西都忘的干干净净

但是

D触发器 这张电路的结构图永远不要忘掉

这张图是我们学完这门课以后一定要记下来的图

为什么呢

因为这张图是我们后面所有设计的基础

我们所有设计的工作都是基于这张图来完成的

我们可以看到

在这张图里面有两个组合逻辑电路

有一个D触发器

如果它分开以后

变成不管是什么类型的时序逻辑电路

它一定是有两个组合逻辑电路

加上一个或者是一堆D触发器来完成的

所以换句话说

我们的时序逻辑电路设计

就变成是你要设计两个组合逻辑电路

以及设计一个D触发器

然后把它们连接起来就可以了

D触发器不需要我们再去设计了

D触发器原来是什么样子就是什么样子

所以

时序逻辑电路设计

就转换成了设计一个组合逻辑电路

然后

把它用这张图给连接起来

就完成了时序逻辑的电路设计

说的有一点点绕口

所以就是说

我们的这种新的方法学

如果是基于这张图或者是这种架构

我们的时序逻辑电路

实际上就是一个组合逻辑电路的设计

我们要把时序逻辑电路设计的需求

转变成这样两个组合逻辑电路

然后把电路描述出来就可以了

我们来看一下

最终时序逻辑电路设计变成一个什么设计流程

前面的① ②还是跟最初的是一样的

确定好输入输出信号

确定好什么是状态

几个状态以及它们之间怎么转移

这都是我们设计人员要做的工作

这些事情做好了以后

第三步我们说是画出电路示意图

这个示意图就是刚才所说的这张图

不管是什么类型的时序逻辑电路

我们画的都是这张图

然后

我们所描述的

这张图里边的组合逻辑电路1

或者叫状态计算逻辑以及组合逻辑电路2

或者叫输出计算逻辑

把它们俩的内容用代码描述出来

这两部分跟我们前面

所说的组合逻辑电路设计是完全一样的

对应到的时序电路的代码就是下面这段代码

在描述的时候

根据不同人的设计风格

可能实际上会有多种描述方式

我们后面在讲

真正的电路设计的时候会详细的去说

这里面

我们可以看到红色部分的代码

红色圆圈里面的代码描述的是D触发器

大家也可以看到

D触发器的描述好像非常的简单

这段代码非常的直观

在时钟的上升沿的时候

把next state送给current state

这样就描述了D触发器

然后

另外一个框里面描述的组合逻辑电路

这里面和前面组合逻辑电路

设计描述的手段是完全一样的

最后我们再看一下按照新的设计方法学以后

我们的设计方法变成了什么呢

时序逻辑电路设计方法

第一步

确定输入输出信号

第二步确定状态机

简单的说就是确定状态机

这就是我们的设计思路或者设计构思

然后

第三步 第四步是画电路结构图

根据刚才所说的大家已经知道了

将来不管你的电路是什么样子

你的电路结构图都是两个组合逻辑电路

加上D触发器这张图

所以

我经常会让我学生画上几十遍 几百遍

做一次电路就画一遍

我的想法就是

当你学完这门课之后

刚才这张图你会画上几十遍 上百遍

所以

即使一年后 十年后

我想这张图你也不会忘掉的

最后是写代码

这也是一个机械的工作

所以

作为我们设计人员而言

我们的工作量

从原来的(工作量)

大家回想一下

传统设计方法的工作量

现在就缩减到了

只要去完成前面的状态转移图的设计

我们的思路全部放在这个地方

从设计的角度来说

有些同学在选我这门课之前

可能自己或多或少都接触过硬件描述语言

大家回想一下

按照我们的方法回想一下

我在这里面

虽然我们后面会去讲怎么用硬件描述语言

去实现第三步和第四步

但是

我在这里面又要贬低硬件描述语言

真正的设计工程师

你的工作是体现在第一步和第二步

只有刚刚入行的工程师

才会去做第三步和第四步

将来你到公司里边成为一个项目经理

或者成为一个公司的主要技术负责人

你干的工作永远是第一步 第二步

甚至在第一步第二步之前的

第零步产品的需求定义

这是一个高层次设计人员所做的事情

只有公司的蓝领工作人员

甚至刚刚入行的新手才会去做

第三步和第四步

所以

有时候我拿到一个工程师或者一个学生简历

说我能够熟练使用硬件描述语言

或者说我熟悉硬件描述语言

等你懂了真正设计方法以后

你会发现这句话你都不好意思写上去

当然

真正做事情之前

我们不但要抬头看天

我们还得低头看路,要埋头做事

我们这些基础的东西还是必须学会的

除了前面的一 二 三 四这四步之后

我们还要做一件事情

还差最后的真正的一件事情

前面是我们设计人员所干的事

计算机还没开始干活呢

所以

我们最后还要把我们所写完的代码送给EDA软件

EDA软件会自动的帮我们

把最终电路产生出来

产生出类似的电路

对于复杂电路来说

我们看具体电路图已经没有任何意义了

因为这张图上可能什么都看不出来

所以一般来说

看这张图只是有一个工程上的意义

觉得你看到电路了

实际上没有什么太大意义

最后小结一下我们在这一节里面所讲的内容

我们一开始先回顾了

数字系统实现的时候都有哪三种手段

另外

总结了数字电路的两种分类

组合逻辑电路和时序逻辑电路

以及针对这两种电路

我们都应该采用

什么样的流程去完成它们的设计

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时序逻辑电路的设计方法 (二)笔记与讨论

也许你还感兴趣的课程:

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