接口分析(下)

Posted KuoGavin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口分析(下)相关的知识,希望对你有一定的参考价值。

文章目录



9.3 DDR SDRAM接口(DDR SDRAM Interface)

D D R    S D R A M DDR\\,\\, SDRAM DDRSDRAM接口可以看作是上一节中所介绍的 S R A M SRAM SRAM接口的一种扩展。就像 S R A M SRAM SRAM接口一样,有两条主要的总线,图9-9说明了 D U A DUA DUA S D R A M SDRAM SDRAM之间的总线及其方向。由命令、地址和控制引脚(通常称为 C A C CAC CAC)组成的第一条总线将使用以下标准方案:在存储器时钟的一个时钟沿(或每个时钟周期一次)处发送信息。双向总线由 D Q DQ DQ(数据总线)和 D Q S DQS DQS(数据选通脉冲)组成, D D R DDR DDR接口的不同之处就在于双向数据选通 D Q S DQS DQS D Q S DQS DQS选通脉冲可用于一组数据信号,这使得数据信号(每字节一个或每半字节一个)与选通脉冲的时序紧密匹配。如果时钟是整个数据总线共用的时钟,那么使用时钟信号进行这种紧密匹配可能不可行。双向选通信号 D Q S DQS DQS可用于读操作和写操作,并且在选通脉冲的两个边沿(下降沿和上升沿,或称双倍数据速率)上都可捕获数据。在 S D R A M SDRAM SDRAM的读模式期间, D Q DQ DQ总线与数据选通引脚 D Q S DQS DQS(而不是存储器的时钟引脚)同步,即 D Q DQ DQ D Q S DQS DQS S D R A M SDRAM SDRAM中被输出时彼此是对齐的。而对于另一个方向,即当 D U A DUA DUA发送数据时, D Q S DQS DQS将相移 90 90 90度。请注意,数据 D Q DQ DQ和选通 D Q S DQS DQS的沿均来自 D U A DUA DUA内部的存储器时钟。

如上所述,对于一组 D Q DQ DQ信号( 4 4 4个或 8 8 8个bit)存在一个数据选通 D Q S DQS DQS。这样做是为了使 D Q S DQS DQS D Q DQ DQ的所有bit之间的偏斜平衡(skew balancing)要求更容易满足。例如,如果对于一个字节使用一个 D Q S DQS DQS,则一组中只需平衡 9 9 9个信号( 8 8 8个DQ和 1 1 1 D Q S DQS DQS),这比平衡 72 72 72位的数据总线和时钟要容易得多。

上面的描述并不是对 D D R    S D R A M DDR\\,\\, SDRAM DDRSDRAM接口的完整说明,但足以说明这种接口的时序要求。

图9-10显示了典型 D D R    S D R A M DDR\\,\\, SDRAM DDRSDRAM接口中 C A C CAC CAC总线(在 D U A DUA DUA处)的 A C AC AC特性。

# DDRCLK is typically a generated clock of the PLL
# clock internal to DUA:
create_generated_clock -name DDRCLK \\
	-source [get_pins UPLL0/CLKOUT]\\
	-divide_by 1 [get_ports DDRCLK]
# Set output constraints for each bit of CAC:
set_output_delay -max 0.75 -clock DDRCLK [get_ports CAC]
set_output_delay -min -0.75 -clock DDRCLK [get_ports CAC]

在某些情况下,尤其是与无缓冲(unbuffered)存储器模块接口时,地址总线可能会比时钟驱动更大的负载。在这种情况下,地址信号对存储器的延迟要比时钟信号大,并且这种延迟差异可能会导致 A C AC AC特性不同于图9-10中所示(???)。

D Q S DQS DQS D Q DQ DQ的对齐方式在读周期和写周期中有所不同,以下小节将对此进行进一步探讨。


9.3.1 读周期(Read Cycle)

在读周期中,存储器输出的数据与 D Q S DQS DQS是边沿对齐(edge-aligned)的,如图9-11中波形所示。图中的 D Q DQ DQ D Q S DQS DQS代表存储器引脚上的信号。数据( D Q DQ DQ)由存储器在 D Q S DQS DQS的每个沿上发出,并且 D Q DQ DQ改变数据的时刻也与 D Q S DQS DQS的下降沿和上升沿对齐。

由于 D Q S DQS DQS选通信号和 D Q DQ DQ数据信号彼此对齐,因此 D U A DUA DUA内部的存储控制器(memory controller)通常使用 D L L DLL DLL(或其它替代方法来实现四分之一周期延迟)来延迟 D Q S DQS DQS,从而使 D Q S DQS DQS的边沿对齐于数据有效窗口的中心。

即使 D Q DQ DQ D Q S DQS DQS在存储器中彼此对齐,但 D Q DQ DQ D Q S DQS DQS选通信号也可能无法再在 D U A DUA DUA内部的存储控制器上对齐,这可能是由于 I O IO IO缓冲器之间的延迟差以及 P C B PCB PCB互连走线等因素所导致的。

图9-12中为基本的数据读取原理图。上升沿触发的触发器在 D Q S _ D L L DQS\\_DLL DQS_DLL的上升沿捕获数据 D Q DQ DQ,而下降沿触发的触发器在 D Q S _ D L L DQS\\_DLL DQS_DLL的下降沿捕获数据 D Q DQ DQ。虽然图中的 D Q DQ DQ路径上没有 D L L DLL DLL,但某些设计可能在数据路径上也会放置一个 D L L DLL DLL。这样可以用来延迟信号(以解决由于PVT或互连走线长度或其它差异引起的变化),以便可以在数据有效窗口的中间准确地采样数据。

为了对存储控制器上的读接口进行约束,我们在 D Q S DQS DQS上定义了一个时钟,并相对于该时钟在数据上指定了输入延迟。

create_clock -period 5 -name DQS [get_ports DQS]

假定存储器读接口以 200 M H z 200MHz 200MHz(当在两个时钟沿上都传输数据时相当于 400 M b p s 400Mbps 400Mbps)的频率进行工作,这对应于每 2.5 n s 2.5ns 2.5ns采样一次 D Q DQ DQ数据信号。由于数据是在两个边沿上捕获的,因此需要为每个边沿分别指定输入约束。

# For rising clock edge:
set_input_delay 0.4 -max -clock DQS [get_ports DQ]
set_input_delay -0.4 -min -clock DQS [get_ports DQ]
# This is with respect to clock rising edge (default).

# Similarly for falling edge:
set_input_delay 0.35 -max -clock DQS -clock_fall \\
	[get_ports DQ]
set_input_delay -0.35 -min -clock DQS -clock_fall \\
	[get_ports DQ]
# The launch and capture are on the same edge:
set_multicycle_path 0 -setup -to UFF0/D
set_multicycle_path 0 -setup -to UFF5/D

输入延迟命令指定了 D U A DUA DUA引脚上 D Q DQ DQ D Q S DQS DQS沿之间的延迟差,即使这两个信号通常是从存储器中同时输出的,但由于不同存储器的规格,在时序上仍会存在偏差。因此, D U A DUA DUA内的控制器设计应考虑到两个信号之间可能存在偏斜(skew)。以下是两个触发器建立时间检查的路径报告。假设捕获触发器的建立时间要求为 0.05 n s 0.05ns 0.05ns、保持时间要求为 0.03 n s 0.03ns 0.03ns,且 D L L DLL DLL延迟设置为 1.25 n s 1.25ns 1.25ns,即四分之一周期。

以下是保持时间检查的路径报告:


9.3.2 写周期(Write Cycle)

在写周期中, D Q S DQS DQS沿会与从 D U A DUA DUA内存储控制器输出的 D Q DQ DQ信号相差四分之一周期,因此存储器可以直接使用 D Q S DQS DQS选通脉冲去捕获数据。

图9-13显示了存储器引脚上所需的波形,在存储器引脚处, D Q S DQS DQS信号必须与 D Q DQ DQ数据窗口的中心对齐。请注意,仍然是由于 I O IO IO缓冲器延迟不匹配或者 P C B PCB PCB互连走线的变化,仅在存储控制器( D U A DUA DUA内部)中对齐 D Q DQ DQ D Q S DQS DQS还不足以使这些信号在 S D R A M SDRAM SDRAM存储器引脚处真正的对齐。因此, D U A DUA DUA通常在写周期中使用额外的 D L L DLL DLL去进行控制,以实现 D Q S DQS DQS D Q DQ DQ信号之间所需的四分之一周期偏移(offset)。

如何约束此模式的输出取决于控制器中时钟的生成方式,接下来我们考虑两种不同情况。

情况1:内部二倍频时钟(Case 1: Internal 2x Clock)

如果内部时钟是 D D R DDR DDR时钟频率的两倍,则输出逻辑可以类似于图9-14中所示。 D L L DLL DLL提供了一种必要时使 D Q S DQS DQS时钟偏斜的机制,从而满足存储器引脚上的建立时间和保持时间要求。在某些情况下,可以不使用 D L L DLL DLL,而是使用负沿触发的触发器来获得 90 90 90度的偏移。

对于图9-14中所示情况,可以进行如下输出延迟约束:

# 166MHz (333以上是关于接口分析(下)的主要内容,如果未能解决你的问题,请参考以下文章

脉冲经过高通和低通滤波器后的波形

STC单片机3路PWM波形输出并串口打印当前脉冲值

[TODO]傅立叶级数叠加合成周期矩形脉冲波形失败

基于i.MX6UL实现PWM脉冲计数

quartus ii 波形调试时怎样将时钟脉冲调为1khz

Quartus 波形仿真