《高级数字系统设计技术与实例分析》(学习笔记)

3.7 组合逻辑

在verilog语言中可以使用两种方法描述组合逻辑——使用always组合块或assign语句。当使用always组合块描述时,变量被声明为reg类型当使用assign语句描述时,变量被声明为wire类型。

5.1 组合逻辑门

5.1.15 扇入和扇出

逻辑门的扇入指的是一个逻辑门正产工作时输入端的数量,例如理论上一个与门可以有20个输入端,但是包含20个输入端的与门可能会因为输入负荷过大而出现逻辑错误或者速度下降的情况,此时其扇入就不能选为20。

扇出是在不降低输出电平的情况下,逻辑门能够驱动的负载的数量。

5.3 通用D触发器

D触发器是最简单的触发器类型,可以用作单比特存储元件,如图5.30所示。它在现代同步数字芯片设计中得到了广泛的应用。我们知道,现代同步数字系统离不开时钟,每个时钟周期内,D触发器都会对所存储的值进行一次更新。我们在前面讨论的组合逻辑门是不能存储数值的,当输入改变时,信号的输出值随即发生改变。而对于D触发器,只能在其有效时钟触发沿到达时其输出值才能够发生改变。

D触发器有数据、始终和RST#输入端以及Q和!Q两个输出端。在每一个时钟的上升沿,输出Q将输入D的值锁存,直到下一个时钟上升沿出现时才继续锁存当前D的值。!Q输出的值与Q输出得值相反。子啊始终上升沿进行输出数据更新时,D端的输出数据必须满足成为建立时间的定时要求,否则输出端Q可能会出现不稳定值。

在D触发器的输出级有两个由交叉连接的与非门构成的锁存器用于保持输出值不变,直到下一个时钟边沿出现。

RST#引脚是异步复位端,用于对触发器进行复位操作,使其输出一个确定的值。我们将在后面看到,复杂数字系统中的状态机通常是由D触发器构成的,而这些触发器需要再RST#为低电平时进入确定状态,从而使状态机进入确定的初始状态。RST#为低电平有效,时触发器输出0。可以在任何时间置为0,是一个异步信号,不需要与时钟同步。当RST#有效是,输出立即变化。然而,RST#由低到高的变化必须满足一定的定时要求。

5.3.1 D触发器时序图

D触发器输入/输出时序图如图所示

1.只要RST#有效,输出会保持在0 ,并且与D输入值无关

2.RST#从0跳变为1的过程需要与时钟同步,即在某个时钟上升沿出现时,RST#发生翻转。

3.在RST#引脚拉高之后(点2),D的值在下一个时钟上升沿出现时被锁存在Q端。

4/5.如果始终上升沿出现时D为0(点4),则时钟上升沿出现之后Q端跳变为0(点5)。

6.在两个时钟上升沿之间,D上出现的瞬间变化被过滤掉,在Q端显示不出来。

7.RST#可以在任何时间置为0

8.RST#有效后,Q值立即改变,不需要等到下一个始终上升沿出现时才改变。

5.4 建立和保持时间

5.4.1 建立时间

D触发器的正常工作是有定时要求的,必须满足建立时间和保持时间的要求。在时钟上升沿出现之前,D的值必须在一段指定的时间内保持稳定,否则D触发器无法正产干工作。在时钟上升沿之前D需要保持稳定的最短时间成为建立时间。如果在建立时间D的值发生了变化,那么讲无法确定Q的电平,其可能为一个不确定的电平值。图5.32中,在点a处,在建立时间窗口之前D发生改变,Q迅速变为为1(点b)。然而,在点c,在建立时间窗口之内D输入发生改变,在接下来相当长的一段时间内(几乎整个时钟周期)Q输出电平在1和0之间无法稳定(点d)。

5.4.2 保持时间

在时钟的上升沿之后的一段时间内,D的输入值也不允许改变,否则也会造成Q输出得不稳定,这个窗口被称为保持时间。

5.4.3 亚稳态

如图5.32,当输入D在建立时间和保持时间窗口内发生变化事,在此后的几乎一个时钟周期内,输出电平既不是0也不是1,处于不确定值。这种不稳定的状态也被成为亚稳态。亚稳态的输出将在下一个时钟的上升沿之前稳定为0或1。

5.5 单比特信号同步

5.5.1 两个触发器构成的同步器

在只有一个时钟的数字系统中(称为单时钟域数字系统),通过控制一个D触发器的输出到另一个D触发器的输出到另一个D触发器输入之间组合逻辑门的数量,可以减少其带来的延迟从而避免D触发器的输入在建立时间和保持时间窗口内发生波动。但是,当一个数字系统中有两个或两个以上时钟(称为多时钟域系统),会出现一个时钟域的D触发器的输出作为另一个时钟域的D触发器输入的情况,当两个时钟之间没有任何关联时,亚稳态的出现是无法避免的。

图5.33给出了解决这个问题的一种方法,即在CLK_B 时钟域中,使用两个级联的D触发器。此时,在两个时钟域连接的地方,Q_BS1的输出会出现亚稳态,但在下一个时钟上升沿到达前,输出会稳定下来,此时Q_BS2上就不会出现亚稳态了,该信号提供给后面的数字电路使用,就可以避免系统的不稳定。当时钟频率非常高时,Q_BS2也有可能出现亚稳态,此时可以考虑增加级联的D触发器的数量。在实际应用中,通常使用两级D触发器级联就可以了。

 5.5.2 信号同步规则

当信号从一个时钟域进入另一个时钟域师,为了使信号正确传递的同时,保持系统工作稳定,必须遵循以下几条设计规则。

跨时钟域的信号必须直接来自源时钟域的寄存器输出。如果信号来自组合逻辑,而不是直接来自触发器,可能会造成信号在目标时钟域中出现难以预料的不稳定情况,从而导致整个系统出现无法预料的情况。

如图5.34所示,在开始时,与门的两个输入端是1和0,产生的输出c为0。当a从0变为1时,b从1变为0是,输出草仍是0。但是,输入a和b在一个短暂的时刻都是1,造成输出c在一个短暂的时间内是1。如果时钟B的上升沿出现在c为1的时刻,那么逻辑值1将最终传递到输出e,而这不是希望看到的结果。如果CLK A时钟域的寄存器插入到与门后面,那么c上出现的毛刺就会被过滤掉,不会传递到后续电路中。

使用逻辑单元库中的专用触发器实现两级同步器。

在一个点而不是多个点上进行跨时钟域信号的同步。同步电路可以消除亚稳态及其传递,但得到的结果可能是1也可能是0,当只有一个连接点时,最多是信号延迟不同的问题,如果是多个点,那么这些信号组合后的结果可能性非常多,这回造成信号传递的错误,可能会导致下游系统出错。 

5.6 关于时序

各种类型的逻辑门(AND、OR、NAND等)可用于实现逻辑运算,它们都会带来一定的门延迟。它们的延迟可能非常小,但不是零。当这些门的输入发生变化时,需要经过一定的延迟才会出现输出变化。此外,信号通过连接逻辑门的信号线时,还存在着传播延迟。

Tclk:时钟周期。两个时钟上升沿之间的时间。例如,对于250MHz的时钟频率,时钟周期为4ns,对于500MHz时钟频率,时钟周期为2ns。

Tctoq:这是触发器输出相对于其时钟上升沿之间的延迟。

Tgate:逻辑门的延迟。这里包括了传播时延。

Tsetup:目的触发器的建立时间。

Tskew:时钟便宜。同一个时钟到达不同的触发器的时钟引脚经历的路径可能存在差异,造成它们的时钟上升沿不是同时出现的,这种偏差成为时钟偏移。通过使用时钟树综合工具可以有效地减小时钟便宜,但不能消除始终偏移。

下面分析给定时钟周期Tclk后系统能够承受的最大门延迟Tgate。

Tctoq + Tgate(max) = Tclk -Tskew - Tsetup

即:

Tgate(max) = Tclk - (Tskew + Tsetup + Tctoq)

 当门和互联线的延迟之和超过了允许的Tgate(max)时,系统就会出现定时错误。

当另一种与定时相关的错误就是保持时间错误。这种情况通常发生在源触发器的输出和目的触发器的输入之间逻辑门过少活着根本没有逻辑门的情况下。在这种情况下,源触发器中时钟上升沿到Q产生稳定输出得延迟可能不能满足目的触发器对保持时间的要求。另外时钟便宜可能会加剧这一情况。图5.36和图5.37展示了时钟便宜造成定时错误的两种情况。

图5.36中,CLK T2与CLK T1之间存在便宜,使得目的始终寄存器输入端出现了不能满足保持时间的情况,目的寄存器二代输出出现了亚稳态。如果失踪便宜过多,如图5.37所示,虽然不会出现保持时间错误,但当前始终周期的数据没有被正确采样,它被延迟了一个时钟周期。

### 回答1: Verilog高级数字系统设计技术是指在Verilog硬件描述语言中使用更高级的技巧和语法来设计数字电路系统。这些技术包括使用参数化模块、生成块、接口、任务和函数、包括复杂数据类型以及面向对象编程等。 在实例分析方面,可以以FPGA设计为例来说明Verilog高级数字系统设计技术的应用。FPGA是可编程逻辑器件,其硬件结构可以根据设计人员的需要进行编程和重新配置,因此非常适合用Verilog进行数字系统设计。 例如,可以使用Verilog高级数字系统设计技术设计一个基于FPGA的音频处理系统。该系统可以使用Verilog中的数字信号处理模块对音频数据进行滤波、放大、降噪等处理,以提高音频的质量。还可以使用参数化模块和生成块来创建可重用的模块,使系统设计更加灵活和高效。 此外,Verilog高级数字系统设计技术还可以用于设计其他类型的数字系统,如嵌入式系统、通信系统等。通过使用这些技术,可以提高数字系统的可重用性、可靠性和性能,从而满足不同应用领域的需求。 ### 回答2: Verilog是一种常用的硬件描述语言,用于数字电路的设计和验证,特别是在芯片级设计中得到广泛的应用。在现代数字系统设计中,Verilog高级数字系统设计技术非常重要,这种技术可以大大提高设计效率和质量。下面将介绍Verilog高级数字系统设计技术,并分析其中的一些实例。 1. Verilog高级数字系统设计技术 Verilog高级数字系统设计技术可以分为以下几类: (1)模块化设计:将大型系统分解为模块,并使用模块互连构建整体系统。这种方法可以大大简化复杂系统设计和验证过程,并减少设计中的错误。 (2)高层次综合(HLS):采用C语言等高级语言进行设计,并通过自动化工具实现综合。这种方法可以使设计师从繁琐和复杂的低级语言中解放出来,并大大提高设计开发效率。 (3)组合逻辑和时序逻辑分离:将组合逻辑和时序逻辑分离成两部分,这样可以使得设计变得更为容易,并可以更加有效地进行验证。 (4)管道技术:使用管道技术可以大大加快系统的运行速度,从而提高系统的性能。此外,管道技术还可以使设计变得更为简单,并且可以同时处理多个数据流。 2. 实例分析 以ALU为例来分析Verilog高级数字系统设计技术。ALU是一种用于进行算数运算和逻辑运算的电路,通常用于处理器中。 (1)模块化设计:将ALU分解为模块,例如BCD加法器模块、逻辑运算模块和算术运算模块等。然后,使用模块互连构建ALU的总体系统。 (2)高层次综合:通过使用HLS工具,可以用C语言进行ALU的设计开发。然后,通过工具自动综合生成Verilog代码。 (3)组合逻辑和时序逻辑分离:将组合逻辑和时序逻辑分离,例如使用状态机来控制ALU的工作,这样可以使得设计变得更为容易,并且可以更加有效地进行验证。 (4)管道技术:使用管道技术可以使ALU的数据流更为顺畅、更为高效。例如,在ALU中,可以使用管道技术来实现紧耦合的数据通路,使得数据直接从一个逻辑单元传输到另一个逻辑单元。 综上所述,Verilog高级数字系统设计技术是一种非常重要的技术,在数字电路设计中得到广泛的应用。采用这种技术可以大大提高设计效率和质量,缩短开发周期,并且可以在系统验证和调试中发现更多的错误。 ### 回答3: Verilog高级数字系统设计技术是在普通Verilog基础上,使用了更多的高级技术设计方法,以实现更为复杂的数字系统。这些技术包括状态机设计、时序逻辑设计、分层式设计、测试与调试、数据流处理等。本文将以状态机设计和分层式设计为例,介绍Verilog高级数字系统设计技术。 状态机设计是一种常用的数字系统设计思路。它将系统从一个状态转移到另一个状态,并在每个状态执行具体的操作。在Verilog中,可以使用FSM(有限状态机)来实现状态机设计。FSM可以由状态寄存器、状态转移逻辑和输出逻辑组成。状态寄存器用于储存当前状态,状态转移逻辑用于根据输入信号和当前状态决定下一个状态,输出逻辑则根据当前状态和输入信号产生输出。实际应用中,FSM可以用于数字电路控制和序列逻辑等领域。 分层式设计是另一种常用的数字系统设计方法。它将系统按照功能分为多个层次,其中每个层次都相对独立且具有特定的功能。这种分层式的设计能够使得整个系统模块化,易于维护和扩展。在Verilog中,可以使用多个module之间进行分层式设计。每个module负责实现一个基本功能,同时对其他module提供输入和输出。这样,整个系统可以通过组合多个module,共同完成更加复杂的功能。 在实践中,Verilog高级数字系统设计技术和方法可以应用于许多领域。例如,数字信号处理、计算机网络、通信系统、嵌入式系统等。但是,在使用Verilog高级数字系统设计技术时,也需要注意一些问题。例如,合理设置时钟频率、避免由于时序不合理而引起的故障、合理设置电路布线等等。只有这样,才能保证设计数字系统具有稳定性、可靠性和可维护性。 综上所述,Verilog高级数字系统设计技术数字系统设计中的重要组成部分。通过状态机设计和分层式设计的例子,我们可以更加深入地了解和掌握Verilog高级数字系统设计技术。在实际应用中,需要充分考虑各种因素,并进行合理的设计,以保证系统的可靠性和稳定性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值