这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 基于FPGAVirtex-4器件实现直接时钟控制技术方案的设计

共1条 1/1 1 跳转至

基于FPGAVirtex-4器件实现直接时钟控制技术方案的设计

工程师
2021-01-08 22:58:12     打赏

大多数存储器接口都是源同步接口,从外部存储器器件传出的数据和时钟/选通脉冲是边沿对齐的。在Virtex-4器件采集这一数据,需要延迟时钟/选通脉冲或数据。利用直接时钟控制技术,数据经延迟,并与内部FPGA时钟实现中心对齐。在这个方案中,内部FPGA时钟采集传出的数据。存储器传出的时钟/选通脉冲用于决定与数据位相关的延迟值。因此,与选通脉冲相关的数据位的数量不受限制。由于无需将选通脉冲分配给相关数据位,所以不需要其他时钟资源。

时钟/选通脉冲和数据位使用的Virtex-4资源是一条64-tap绝对延迟线。该64-tap绝对延迟线可利用IDELAY和IDELAYCTRLprimiTIve实现。时钟/选通脉冲和数据位均通过此64-tap绝对延迟线来布线。虽然选通脉冲不用于采集数据,但它用于确定数据与内部FPGA时钟实现中心对齐所需的tap数量。以下部分将详细解释直接时钟控制技术方案的设计及实现。

选通脉冲边沿检测

与时钟/选通脉冲相关的数据位的延迟值就是内部FPGA时钟上升沿与时钟/选通脉冲中心之间的相位差。假设时钟/选通脉冲和数据实现了边沿对齐。要确定这个相位差,时钟/选通脉冲通过IOB内的64-tap绝对延迟线输入,并利用内部FPGA时钟在增量tap输出端对其进行采样。

要确定时钟/选通脉冲的中心,至少需要检测到时钟/选通脉冲的两个边沿或转换。检测出第二次转换所需的tap数(即第二个边沿的tap)和检测出第一次转换所需的tap数(即第一个边沿的tap)之差,即为时钟/选通脉冲宽度。这个差值的二分之一就是脉冲中心(即脉冲中心的tap)。从内部FPGA时钟上升沿到时钟/选通脉冲中心之间的tap数,即为第一个边沿的tap数与脉冲中心的tap数之和。

表1描述了各类tap数量。

基于FPGA Virtex-4器件实现直接时钟控制技术方案的设计

图1说明了通过使数据延迟相应的tap数,让数据与内部FPGA时钟实现中心对齐的两种情况。第1种情况所示为,由于时钟/选通脉冲的下降沿是被检测到的第一个边沿,因此内部FPGA时钟的上升沿位于延迟数据的中心。第2种情况所示为,由于时钟/选通脉冲的上升沿是检测到的第一个边沿,因此内部FPGA时钟下降沿位于延迟数据的中心。

实现选通脉冲边沿检测

由于具有专用的IDELAY和IDELAY_CTRL电路,所以可以轻松地在Virtex-4器件中实现确定延迟值的电路。实现确定延迟值电路的结构图如图2所示。

利用一个简单的算法检测存储器时钟/选通脉冲的边沿。将初始值为0的时钟/选通脉冲输入IDELAY模块。时钟/选通脉冲将不停地增加1tap的延迟,直到检测到第一个边沿。然后记录下检测出第一个边沿所需的tap数。在检测到第二个边沿之前,时钟/选通脉冲仍然不停地增加1tap的延迟。然后记录下检测出第二个边沿所需的tap数。根据两次记录的值,计算出脉冲宽度。在用tap数确定时钟/选通脉冲宽度后,除以2即得到中间值。中间值与检测出第一个边沿所需的tap数之和为延迟数据所需的tap数。

IDELAY模块可用的tap总数为64。因此,当频率为200MHz或以下时,将无法检测出两个边沿。如果在64tap结束后仅检测出一个边沿,那么延迟数据所需的tap数应为,检测出第一个边沿所需的tap数减去16tap(约1.25ns,每个tap的延时约为75ps)。一个200MHz时钟/选通脉冲周期的四分之一约为16tap。根据时序分析,该值也适用于更低的频率,最低可达110MHz。当频率低于110MHz时,如果在64tap结束后未检测出任何边沿,那么延迟数据所需的tap数应为32tap(约2.5ns,每个tap的延时约为75ps)。该值足以使内部FPGA时钟边沿位于数据窗口内。

检测第一个和第二个边沿仅需一个小型状态机。只有在为确定数据延迟tap数而发出的虚读操作过程中,才启用该状态机。在正式工作之前,发送至外部存储器器件的虚读操作命令包含多条背靠背读命令。状态机将控制输入IDELAY电路的信号,即DLYRST、DLYCE和DLYINC。

DLYRST-延迟线复位信号,将延迟线中的tap数重设为按IOBDELAY_VALUE属性设置的值。本设计中被设为“0”。

DLYCE-延迟线使能信号,确定何时激活延迟线递增/递减信号。

DLYINC-延迟线递增/递减信号,可增加或减少延迟模块中的tap数。表2描述了延迟线的运行模式。

用于控制这些延迟模块输入的状态图如图3所示。该状态机的四种状态分别为:DELAY_RST、IDLE、DELAY_INC和DETECT_EDGE。

DELAY_RST

该状态是发起虚读操作时启用的状态机的第一个状态。在这种状态下,延迟模块被重设为“0”tap。该状态之后是多个IDLE状态。

IDLE

在这种状态下,延迟模块保持“无变化”运行模式。除IDLE状态之外,每种状态结束后都会出现数个IDLE状态,以便处理tap输出值。IDLE状态之后是另一个IDLE、DELAY_INC或DETECT_EDGE状态。

DELAY_INC

这个状态使延迟模块tap数加1。该状态之后是数个IDLE状态。

DETECT_EDGE

在这种状态下,比较延迟模块的输出及其上一个值,用于检测信号边沿或转换,同时,延迟模块tap数加1。该状态之后是数个IDLE状态。

在确定了延迟数据所需的tap数后,将启用数据IDELAY电路,并增加到这一数值。按照所需的tap数,使数据IDELAY电路增加相同的时钟周期。数据IDELAY电路的读/写数据通路结构图如图4所示。

数据采集与二次采集

如图4所示,利用内部FPGA时钟,在输入DDR触发器中采集延迟数据。然后,把这些触发器的输出存储到两个FIFO中;一个代表上升沿数据,另一个代表下降沿数据。这些FIFO是利用LUTRAM实现的,其写使能操作由控制器生成的读使能信号提供,并在数据格式校准的基础上与采集的读取数据对齐。

DDR2SDRAM器件并未随读取数据一同提供读有效或读使能信号。因此,控制器将根据CAS延迟和突发长度,生成这个读使能信号。在开始执行读取操作时,必须令该读使能信号有效,并在选通脉冲的最后一个上升沿结束后使其无效。在IDDR触发器的输出端,该读使能信号必须与采集到的读取数据对齐。为了实现读使能对齐,在数据与FPGA时钟对齐后,将已知数据格式写入存储器。然后读回已知数据格式,并在读使能信号与采集到的读取数据对齐之前,利用移位寄存器延迟读使能信号。每字节数据都会生成一个读使能信号。图5为读使能对齐的时序图。

读时序分析

这一部分介绍了利用直接时钟控制技术实现的读时序分析。直接在FPGA时钟域内采集读取数据,因此,用于数据有效窗口分析的存储器参数就是存取时间(TAC)。下面简要介绍了此时序分析中使用的各个参数。

此时序分析中考虑的外部存储器参数有:

TAC-读取数据(DQ)的存取时间(以FPGA传递给存储器的时钟为参照)

TDCD-DCM输出占空比失真

利用FPGA时钟而非存储器时钟/选通脉冲(DQS),来采集读取数据(DQ);因此,该分析考虑了TAC(以时钟为参照的数据存取时间)。在此分析中,未考虑DQS-DQ存储器参数,如TDQSQ和TQHS,因为TAC比这两个参数更重要。

此时序分析中考虑的FPGA参数有:

TCLOCK_TREE-SKEW-紧密放置在该组中的IOB触发器的全局时钟树歪斜

TPACKAGE_SKEW-特定器件/封装的封装歪斜

TSAMP-Virtex-4源同步数据手册中规定的采样窗口

TIDELAYPAT_JIT-Virtex-4数据手册中规定的每个IDELAYtap的数据格式抖动

此外,计算数据位和相关选通脉冲之间的歪斜也需要考虑PCB布局歪斜。

表3所示为在205MHz频率下,对DDR2接口执行的读时序分析。全部参数单位均为皮秒。

TDATA_PERIOD是时钟周期的二分之一减去TMEM_DCD。TDATA_PERIOD与不确定值之和的差,就是有效数据窗口(43ps)。因此,在205MHz频率下,-11Virtex-4器件将产生43ps的余量。

参考设计

存储器接口生成器(MIG)工具中集成了直接时钟控制数据采集技术的参考设计。该工具已被集成到XilinxCoreGenerator工具中。

结论

Virtex-4I/O架构增强了源同步存储器接口的实现。本应用指南及参考设计中使用的架构特性包括:

IDELAY模块-连续校准的tap延时很小的延迟元件。

FIFO16primiTIve-用作FIFO的BlockRAM,无需使用生成状态标志所需的其他CLB资源。

高速差分全局时钟资源提供了更好的占空比。差分时钟减少了参考设计所需的全局时钟资源数量。




共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]