了解移位寄存器的时序


8

(我正在学习数字电路设计。如果这是一个天真的问题,请原谅。)

Wikipedia上,我找到了有关SIPO移位寄存器的下图:

在此处输入图片说明

据我了解,该移位寄存器由DFF(D触发器)组成。DFF在时钟周期的上升沿触发。因此,对于Clock信号的每个上升沿,来自的数据Data In将通过DFF的一级传播。

我的问题是,由于ClockDFF由所有DFF共享,因此当上升沿到来时,所有4个DFF必须处于触发/透明状态。那么,如何确保数据通过only 1DFF阶段而不是2个或更多阶段传播呢?

比方说:

  • Td 是1个DFF阶段将数据从D加载到Q的内部延迟。
  • Tr是时钟上升沿的持续时间。见下图。

在此处输入图片说明

我认为将传播限制在1个阶段,它必须是:

Td < Tr < Td*2

我对么?

但是在上面的链接中,它说:

在这种配置中,每个触发器都是边沿触发的。初始触发器以给定的时钟频率工作。每个随后的触发器 其前任的频率减半,从而使其占空比加倍 。结果,上升沿/下降沿触发每个后续触发器所需的时间是原来的两倍。这会在时域内错开串行输入,从而导致并行输出。

这使我对一些事情感到困惑。

  • 什么halves the frequency意思
  • DFF如何用频率来表征?
  • DFF是否仅在时钟的上升沿工作,并且通常不在乎时钟处于什么频率?
  • 频率如何与占空比相关?频率与周期相关,而占空比仅表示信号或系统处于活动状态的一个周期的百分比。我认为频率和占空比之间没有关系。

加1

正如Neil_UK在下面的答复中所说,以上Wiki引用是完全错误的。而且他已经修复了Wiki页面。

正如EM Fields在下面的回复中所说,

...直到时钟的下一个上升沿都不会发生任何事情,因为完成工作的时钟沿已经死了...

严格来说,没有理想的垂直上升沿。Tr如上图所示,应该有一些。我想限制信号通过DFF级的传播,上升沿必须持续足够长的时间,以使信号通过一级传播,而必须足够短的时间,以使信号不传播至下一级。

我只是认为这种控制过于棘手/微妙,无法实现。但是,如果这是真的,它是如何实现的?(我只是悬赏这个问题。)


“ Tr是时钟上升沿的持续时间”到底是什么意思?
Elbehery

1
@Elbehery感谢您的回复。我添加了一个插图。由于时钟由所有DFF阶段共享,因此在期间Tr,我认为所有DFF 对输入应该是透明的。这就是为什么我认为需要控制信号可以传播多远的原因。
smwikipedia's October

2
维基百科条目模糊,让您感到困惑。查看我的答案,并查看更新的Wikipedia页面(您可能需要刷新浏览器缓存才能看到新页面)
Neil_UK

Answers:


5

我的问题是,由于时钟由所有DFF共享,因此当上升沿到达时,所有4个DFF必须处于触发/透明状态。那么,如何确保数据仅通过DFF的一级而不是2或更多的级传播?

考虑典型D触发器的时序要求。

D触发器时序

如您所见,有许多参数。这里最重要的是建立时间,保持时间传播延迟

输入(D处)必须在所示期间内保持稳定(从 tsuth)。

对于此特定部分,所需的最短保持时间为3nsec。这是输入必须在时钟后稳定才能保证性能的最短时间(即D传输到Q)

建立和保持时间

在此之后,输入将被设备有效忽略。如果时钟周期大于tsu + th 它会正常运行。

现在让我们看一下传播延迟(tplhtphl

从数据表中,通常为14纳秒:

传播延迟

由于此事件将超出保持时间要求而发生,因此下一个D输入的转换将无效,因为该输入现在已被内部反馈机制有效锁定。

请注意,移位寄存器可以达到的最大速率为 1tsu(min) +tprop(max)因为在先前的Q输出变得稳定之后,D输入必须至少在建立时间保持稳定。

如果传播延迟大于保持时间,则可以忽略最大时钟速率。

因此,底线是,假设从D到Q的传播延迟大于所需的保持时间,则单个时钟事件不能在一个以上的触发器之间传播。

使用图表,时钟发生在某个时间 t0。输出Q1会在第一个触发器的传播延迟之后发生变化,但是这将在第二个触发器的输入建立时间之后发生,前提是第一个触发器的传播延迟大于第二个触发器的输入保持时间(根据我的经验,总是这样),那么Q1(第二个触发器的D)处的跳变对此时钟事件没有影响。


5

该Wikipedia链接的描述不正确,该链接用于级联的2分频计数器。我现在已经修复了Wikipedia条目,因此它描述了移位寄存器。它可能不是最好的描述(在一分钟内完成),但至少不是完全错误的!


2

为了使时序正确工作,D输入上的保持时间必须短于触发器的传播延迟减去时钟不确定性。只要该条件为真,则在下一级锁存数据之前,来自前一触发器的新数据将不会更改。

对于NXP 74HC74,从数据手册中我们可以看到,保持时间在最坏的情况下为3ns,传播延迟通常为14ns,因此,高达11ns的时钟偏移不会对这些时序造成问题(在5V电压下)。但是请注意,传播延迟通常不是最小的,因此特定部分的裕度可能会更紧,但是出于相当明显的原因,大多数D触发器的设计都使这种事情在时序上起作用,因为获得特别快的触发器也很可能具有较短的保持时间要求。


1

DFF不是透明的,它们在时钟信号的边缘工作。时钟沿必须足够快以使电路正常工作。

一个例子如下所示:在此处输入图片说明

第一级在时钟低电平期间处于活动状态。当时钟上升时,第一个背靠背连接的反相器(锁存器)存储当前状态,输入被保留到节点X的传输门断开连接。同时,第二个TG变为透明并驱动第二个锁存器。一旦时钟再次变低,第二个锁存器将保留该值。

在来自Wikipedia的电路中,触发器形成一个移位寄存器,它们均以相同的频率工作。它们可以用作计数器或时钟分频器,但是为此可以使用不同的配置。


但是,如何实现100%对称的phi和phi_bar?可能您会使用一个逆变器,在这两者之间至少导致一个门延迟。因此,由于时钟不均匀,您的第一个传输门可以通过的“ 0”比“ 1”长,而第二个传输门可以通过的“ 1”比“ 0”长。三态反馈设备也会产生类似的效果。时钟点之间也有金属布线。没有什么是确切的。因此,这种理想分析只能掩盖现实生活中存在的问题。伊莫
jbord39

@ jbord39-当然必须验证时间。使phi和phi_bar对称并不是那么困难。如果需要误差容限,则可以在两个TG之间引入延迟。路由仅是本地的,而且很短。延迟通常在寄生提取之后确定,也可以进行验证。当然,还有更强大的设计,但是我已经在标准单元库中看到了这一设计。
马里奥(Mario)

是的,它一直在标准单元库中,它是最基本的DFF。但是时钟很少是对称的。10ps /逆变器延迟“足够好”。表征引擎将获取上升/下降差异,并始终将其表示在表格中。我的观点是,OP提出了一个完全合乎逻辑的问题,这导致了设计中的实际错误。将其吹散为“在上升沿它立即捕获了它”是一个很大的简化,但是当问题涉及时间的细微差别时,这并不是一个很好的方法。
jbord39

@ jbord39-我的观点是,可以根据需要使此设计强大。如果这会导致设计错误,则需要确定设计流程。除此之外,我认为您对这个问题读得太多了。但是,我明白你的意思。
马里奥(Mario)

1

简而言之,除了设计师在构建时所掌握的知识之外,没有什么可以阻止您描述的情况。请记住,在时钟沿触发和输出变化之间存在有限的延迟,通常称为clk-to-q或clk-to-out。

使用当今技术中常见的传输门样式DFF(当今在CPU中最常用),您很可能会遇到您所描述的情况。 这被称为保持违规。

实际上,违反保留对于数字芯片来说是最致命的。如果存在设置冲突,您可以简单地降低时钟速度,直到慢速路径停止发生故障为止。但是,如果发生保持冲突,通常将无济于事(除非您采用了故障安全措施,例如每个寄存器的可移动时钟沿)。因为它们是如此致命,所以狂暴地进行打击以防止任何违反保持的行为是正常的。因此,如果您有一个循环路径(假设在2.5GHz时为400ps),则只有flop-> flop;没有理由不抛出很多缓冲区。实际上这是鼓励的。

其他人还指出,DFF并不透明。 当然,这取决于DFF,当今大多数VLSI FF的透明度为几皮秒。通过延迟主时钟相对于从时钟的时间,有意对其他时钟进行了修改,以保持更长的透明性(时间借用触发器-给予额外的设置时间,也迫使您更长地保存有效数据)。

如果信号要跳到触发器,则将其视为0周期路径。 这通常被认为是“违反保留”,这意味着数据没有保存足够长的时间。

每个触发器的建立和保持时间都不同。如果将它们设计用于移位寄存器,我几乎可以保证您将拥有一个负的保持时间(相对于主锁存器延迟从锁存器的时钟;导致主锁存器在更早的时间内关闭并变为不透明)在从锁存器变为透明之前)。否则,或者这些触发器的clk-> out可能比保持时间长得多。或者他们在阶段之间插入延迟;在数据路径或时钟路径上(反向)。

解决此问题非常简单。实际上,有很多很多方法可以解决问题。两个简单的方法:在每个触发器级之间插入一个适当的延迟。或者,在移位寄存器的每个触发器的时钟之间放置一个延迟;从链中的最后一个开始。这将确保每个触发器都从前一个触发器中获取稳定数据。


1

该示意图显示了紧接时钟的有效上升沿之后的传输门和反相传输门的逻辑,该时钟控制着具有足够存储电容的一系列开关,以允许反馈开关主动保持该逻辑电平与输入隔离。

下面显示了三(3)级D触发器作为移位寄存器的一部分,它可以是串行输入并行输出(SIPO)或串行输入串行输出(SISO)

尽管为传输门的双极驱动而倒置了时钟,但为简化理解起见,它象征性地像继电器控制一样显示。

原理图

模拟此电路 –使用CircuitLab创建的原理图


1

这实际上是一个很好的问题!有关DFF的工作方式,请点击此处,有关时钟时序和转换,请在此处找到答案,内容如下:

时钟输入中的施密特触发器动作使该电路高度耐受较慢的时钟上升和下降时间。

实施此Schmitt动作将最大程度地消除时钟转换期间的亚稳定性。因此,时钟在逻辑上将仅上升一次,从而使触发器仅检查其状态一次。对于时钟频率,DFF通常在其数据表中具有最小值和最大值,以确保同步信号在其逻辑元素内传播。

在SIPO配置中,您的任务是确保通过DFF的传播延迟小于时钟周期,加上一定的余量,以确保连接到下一个DFF的D输入的导线中的信号稳定。


0

当“ D”型触发器的时钟输入变为高电平时,D输入的状态(在该时刻)将转移到Q输出,并且Q将保持该状态,而与D的任何变化无关,直到下一个时钟的上升沿。

另一方面,透明锁存器通过在时钟为高电平时让Q跟随D,然后在时钟为低电平的瞬间将D的状态锁存到Q中来进行操作。

在您显示的电路中,时钟与所有dflop并行,因此,一旦出现高时钟沿,并且D的内容传送到Q-进而传送到下一级的D-在此之前,什么都不会发生时钟的下一个上升沿,因为完成工作的时钟沿已经消失。

以下是一些驱动器使电路栩栩如生,并通过时序图说明了其响应。

请注意,对于每个时钟上升沿,前一级的输出状态仅在后一级传播一次。

在此处输入图片说明


谢谢回复。正如您所说,... 直到时钟的下一个上升沿都不会发生任何事情,因为完成工作的时钟沿已经死了严格来说,正如Tr我的问题所示,没有理想的垂直上升沿。因此,我猜想上升沿必须持续足够长的时间,以使信号传播通过一级,并足够短的时间,以使信号传播通过下一级。我只是认为这种控制过于棘手/微妙,无法实现。但是,如果这是真的,它是如何实现的?
smwikipedia's

0

它的工作方式是在很短的时间内启用每个DFF。要将锁存器转换为触发器,请在其启用信号上使用以下电路。 时钟边沿 时钟被连接为输入。当您获得上升沿时,只会生成一个非常短的脉冲。假设最初的时钟为0。“与”门的“非”门的输出为高。当您获得时钟的上升沿时,与门的两个输入均为高电平,从而产生高电平使能信号。然而,此后不久,高时钟通过非门传播,与门的输出再次变为低。

您可以通过在非门中选择晶体管尺寸来相当准确地计时。使能脉冲恰好是使信号在移位寄存器中发生一次改变且没有多次传播的正确长度。当然,这与过程有关,并且正确无误。


1
我必须在这一点上与你不同意。将该电路添加到锁存器中只会使其成为“脉冲锁存器”:eetimes.com/document.asp?doc_id=1271447 要将锁存器转换为触发器(真FF),您需要将两个锁存器放回去,然后为它们提供相反的相位时钟。您可以使用任何类型的闩锁来执行此操作。JK,D,SR等;没关系-锁存器和触发器之间的根本区别在于主从拓扑。
jbord39

1
最重要的是,这根本不是事实。虽然使用了脉冲锁存器,但由于其更具动态特性,因此必须留有很大的余量。例如,您必须如何确保脉冲足够长,以便在所有温度和过程角落都可以在低电压和高电压下写入数据。这当然是可能的,但可能比传统的主从触发器高出3-5倍。
jbord39
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.