当前课程知识点:IC设计与方法 >  3、Verilog语法 >  h)D触发器的描述 >  Video

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

Video在线视频

Video

下一节:Video

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

Video课程教案、知识点、字幕

前面我们讲了组合逻辑电路设计所需要用到的

一些Verilog语法知识以及Verilog语法要素

下面我们再来看一下时序逻辑电路的设计

时序逻辑电路设计所用到的Verilog语法要素

和组合逻辑电路设计的几乎完全一样

所需要的唯一不同的

就是赋值语句上稍微有一些差异

以及always语句敏感表的写法有一点点差异

我们来看一下幻灯片

在用always块来设计时序逻辑电路的时候

右边这两段代码

上面这段代码是组合逻辑电路设计

它的敏感表都是直接用各个信号去或一下

在时序逻辑电路设计的时候

always块的敏感表变成是posedge

或者是negedge的某个信号

表示由某一个信号

通常就是时钟信号的有效沿来触发always块

对于这样的描述就是一个时序逻辑电路设计

组合逻辑电路的特点

是敏感表里面可能有一大堆信号

对于复杂的组合逻辑电路可能会有几个

十几个甚至几十个信号

时序逻辑电路的敏感表里面

通常只有一个或是两个信号。一个是时钟信号

另外一个是复位信号

在讲具体的时序逻辑电路设计之前

我们又要回过头来看一下D触发器

因为D触发器是时序逻辑电路设计的基础

我们来看一下D触发器

通常D触发器有时钟端、数据输入端

异步的置位或者是复位端以及数据输出

同向输出及反向输出

D触发器的工作时序

大家应该还记得

我们可以用大约三句话

来描述D触发器的功能

第一个是当异步的置位信号

或者是复位信号有效的时候

D触发器被强制设置成固定的0或者是1状态

完成一个置位或者是复位

当置位、复位信号无效

或者说置位复位信号被释放(release)以后

在时钟的有效沿到来的时候

D触发器会把输入的数据打到输出端去

送到输出端去

这是第二个功能

第三个是在时钟信号的有效沿之后的其他时候

异步和复位信号也是无效的时候

D触发器的输出保持原来的值不变

这是D触发器的功能

我们时序逻辑电路的设计

都是在D触发器的模型上进行的

所以

我们可以先来看一下

描述最简单的D触发器

我们用什么样的代码来描述?

上面这段代码是一段Verilog代码

描述的D触发器

下面这段代码

是VHDL的语言描述的D触发器代码

仅供大家参考

或者说对比

可以看出来

Verilog语言描述D触发器的代码

看起来更简洁一些

always块后面@的是posedge的clock

表示这个D触发器

是在时钟信号的上升沿有效(动作)的D触发器

是一个上升沿

上升沿(触发的)D触发器

在时钟上升沿来到的时候

把输入的数据信号D打到Q端

所以

它描述的是

D触发器的数据输入端的信号叫D

D触发器的输出叫做Q

这段代码

三行代码表述了这个D触发器

我们来看一下

我们来看一下

这段代码和D触发器的

刚才的功能上的3个要素去对比一下

因为这里面

描述的是最简单的D触发器

没有异步的置位端和复位端

所以

这里面就没有异步置位和复位信号了

对D触发器功能的描述也只剩两句话

第一个是时钟的有效沿

时钟的有效沿来到的时候

这是always块的敏感表

就是说只有当这个条件满足的时候

才会把数据D送给Q

隐含的就是说有效沿不存在的时候

没有到来的其它时刻

输出信号Q保持原来的值不变

所以这段代码完美的跟D触发器的功能

能够一致起来

下面我们再来看一个完整的D触发器

一个带有低电平

复位端的D触发器

对于异步复位信号

我们对它命名的时候

异步复位信号通常有两类

一类是高电平有效

一类是低电平有效

如果复位信号是低电平有效的话

我们在信号命名的时候

后面会加一个N

方便我们在看到代码的时候

就知道它的电平的有效性

到底是高电平还是低电平

其它部分都是类似的

我们来看一下实际的代码

首先always的敏感表里面发生了一点点变化

以前

只有一个关于时钟沿的判断

现在

增加了一个复位信号(reset信号)的判断

如果是低电平有效

如果信号是低电平有效的话

对于复位信号的判断

我们就要换成是negedge

如果是高电平有效的话

这个地方就是posedge

第二个,对于代码的描述

原来只有一个把D赋给Q的过程

表示只要时钟沿到来

就把D赋给Q

现在

发生了一点点变化

因为复位信号的优先级更高

复位信号的优先级更高

所以

我们要首先判断是不是复位信号有效

因为reset是低电平

所以

这里我们加一个感叹号

表示是一个低电平信号

或者说是reset的非

当这个条件有效的时候

把D触发器清零

否则

把D送给Q

什么意思呢

首先在敏感表执行的过程中

不管是时钟的有效沿来到了

还是reset的有效沿(来到了)

因为是低电平信号

也就是说

当reset进入低电平的时候

一定是它的下降沿

会导致这个进程被激活

对吧

这两个信号都有可能触发进程内部的运行

进入到(进程)内部以后

我们判断一下到底是哪个条件触发的

如果是reset触发的

我们就清零

如果是时钟沿触发的

我们执行下面一句话

所以这样的进程

对应的就是我们D触发器的三句话

低电平的reset信号到来的时候把它清零

其它情况我们看一下

如果是时钟沿到来了

数据被送到输出端

其它情况输出保持不变

这样的进程

正好对应了我们的标准的D触发器

我们在写代码的时候

要适当的检查一下

如果是低电平的reset信号

这里是negedge对应的这个地方

有一个感叹号

判断低电平信号

如果是高电平的信号的话

这个地方是posedge对应的地方

就没有感叹号了

下面我们还要再看一下复位信号

在电路里,复位号是一个很重要的问题

复位信号有刚才所说的

低电平或高电平

还有同步和异位等等各种区别

对于D触发器而言

比如当低电平的reset信号到来的时候

触发器的输出端被强制置零

不管这时候是不是有时钟沿到来

输出都是被置零

当reset信号不存在的时候

在这些时刻

从这儿到这儿的这些时刻

每一个时钟沿到来的时候

时钟沿到来的时候

输入的数据信号就会被送到输入端

也就是说D触发器的状态会发生变化

在这个时钟沿输入信号1会被送到输出端

也就是D触发器会被从0反转到1

反转到1以后

在下一个时钟上升沿之前

整个这一段

我们说整个时钟周期内

D触发器的输出都是保持不变

不管输入信号是不是发生了变化

在这个时钟沿输入信号又被打到输出端

D触发器又从1反转到了0

然后一直保持不变

在工程设计里

通常置位信号跟复位信号

这两个信号不会被同时使用

只会使用其中的一个

刚才我们看的是

我们称之为异步复位的D触发器

带有异步复位的D触发器

实际上我们电路设计的时候

有时候还会用同步复位的方式来进行复位

就像右边这段电路

右边这段代码所对应的电路

首先在敏感表里

只有时钟信号,表示D触发器本身

没有异步复位信号

在代码里面

我们又判断了复位信号

如果有复位信号的话

D触发器的值被清零

否则

是把输入信号送给reset

从这段代码和敏感表的结合

我们就可以判断出来

只有在时钟上升沿到来的时候

电路才会去检查复位信号是不是有效

从而去改变D触发器的输出值,是不是清零

这种方式

这种复位方式

我们称之为同步复位

其实从某个角度来说

这个复位

已经是D触发器内部电路中的一部分了

并不一定是D触发器本身

自己具备的复位功能叫同步复位

为什么我在这里花这么长时间

去强调异步复位或者是同步复位呢

这跟我们实际电子产品的结构

是有很大的关系的

异步复位

我们有什么要求呢?

我们是要求异步复位的

整个异步复位电平期间

或者说异步复位电平释放时刻

跟时钟的上升沿是要错开的

对吧

因为在D触发器的功能定义里

如果异步复位信号的释放和时钟上升沿

同时到达的时候

电路的行为没有定义

这时候是什么情况?

就会导致电路的内部状态不确定

对吧

所以为了解决实际电子产品的可靠性问题

我们就要采用各种技术

来解决同步复位和异步复位的问题

我们的一些低端电子产品

通常会采用异步复位的方式

因为这样比较简单

在电路上只要接一个外置的电阻或者电容

就能够完成异步复位的功能了

但是这种简单的异步复位电路

通常没法保证异步复位端

和时钟信号之间的时序关系

就有极小的可能性

造成复位不可靠

具体表现就是一些低端电子产品

有可能你塞上电池

它不能正常工作

屏幕花了

或者是类似的情况

把电池、电源关掉重开就好了

或者说把电池拔掉重新加上就好了

这时候

我们通常就可以猜测出

复位电路设计的不是很可靠

怎么增加可靠性

要么就是把复位方式

从异步复位改成同步复位

要么就是要做一个特殊的复位同步电路

让异步复位信号的时序

跟时钟信号的有效沿能够错开

这是工程产品或者工业产品里面

必须要做的一件事

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)--作业

Video笔记与讨论

也许你还感兴趣的课程:

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