嵌入式学习小组
直播中

余煌木

7年用户 234经验值
私信 关注

怎么解决FPGA设计时序问题?

本文主要探讨了DDR型存储器接口设计中必要的时钟偏移及数据采集的时序空余。

回帖(1)

余正成

2021-4-30 10:54:42
  FPGA的设计与高速接口技术可以帮助你满足今天的市场要求,但也提出了一些有趣的设计挑战。为了确保存储器接口的数据传输准确,在超过200兆赫兹以上,进行时序分析将发挥更突出的作用,以识别和解决系统运行的问题。在这些频率内,最重要的是创建和控制时序空余,留下最小的空余,以确保数据采集和演示窗口的准确。更快的边缘速率同时也放大物理设计的影响,造成信号完整性问题,对此则需要更多的沉降时间及缩小时序空余。
  FPGA器件现在还包括某些先进的功能,如支持带有I/O单元接口的双通道数据(DDR)和板上锁相环(PLL)网络进行精确时钟控制等等。这些在FPGA技术中的高级功能均提供先进的接口模块,从而有助于减少界面设计,再加上TimingDesigner软件的独特能力,在最短的时序中提供最准确、有力的解决方案。本文主要探讨了DDR型存储器接口设计中必要的时钟偏移及数据采集的时序空余。
  
  DDR/QDR存储器接口的设计问题
  DDR或四倍数据速率(QDR)存储设备可以提供和接受两倍于器件时钟频率的源同步数据,这意味着数据在时钟的上升缘和下降缘传输。此外,需要捕捉时钟偏移和进行适当地调整,以确保适当的时钟与数据关系。
  
  图1:TimingDesigner软件便于捕获设计特点的图形界面窗口。
  如前所述,现在一些FPGA装置包括DDR接口的I/O单元和板上的PLL网络。这意味着,你必须有一个方式来控制模块的准确和可靠。为了说明这一点,让我们来读取QDR II SRAM源同步接口的设计要求看看实例。
  在同步存储器系统例如QDR SRAM中,数据是与时钟同步的,所以存储器数据的相位必须旋转90度。这种相位旋转通常在有效数据窗口中进行时钟中心调整,这是QDR实现准确数据采集的一个重要设计特点(见图2)。如果要改变时钟中心,我们可以通过对板上FPGA的PLL网络进行简单的延时时钟信号来达到。
  
  图2:中心对齐的时钟/数据关系。
  获取数据
  延迟时钟信号可以实现中心对齐以避免各种温度变化和其他类似的设计影响,可能会对时钟或数据方面带来一些影响,但不会很大,但违背了接收存储器的建立或保持时序的要求。在理论上,对于大部分器件,中心对齐的时钟边缘将最大限度地建立和保持时序,留出足够的安全空余。然而,除非建立的需求合适于保持的需求,时钟信号的中心对齐将提供更多的时序空余。
  理想的解决办法是为器件的建立和保持提供一个最大的安全空余,可以通过转化平衡空余,为二者都提供相同的安全空余。为了平衡空余,我们为接收器件确定最低的有效数据窗口,在实际有效数据窗口的中心窗内可以给我们的存储器提供设计参数。
  利用接收器件最小的建立和保持时间,我们可以利用下面的公式确定最小的“安全”的有效数据窗口:
  最小创建时间+最低保持时间=最低有效数据窗口
  如图3所示,在存储器器件中可以看出,实际结果是在有效数据窗口中间。为了确保获取数据,总线必须在接收器最小的有效数据窗口外的“安全”区域内进行转换。根据时钟与数据的关系,信号设计在任一区域内,在获取数据时,我们确保尽可能多的安全空余。
  
  图3:平衡实际有效数据窗口中的最小有效数据窗口。
  实现适当的时钟偏移
  源同步时钟的相位偏移将有效地改变存储控制器接收寄存器的最小有效数据窗口,因此将形成平衡有效数据窗口。时钟偏移调整是FPGA装置中PLL器件的一个组成部分。要确定偏移的值,我们必须考虑到影响信号的布线延迟和任何外部延迟。
  首先,我们使用TimingDesigner软件通过存储器数据表为QDR SRAM创造一个图表(图4)。我们利用此图确定存储器与有效数据窗口中的时钟和数据信号时序的关系。目的是精确定义存储器的信号关系,并在PCB到FPGA的设计中传递这种关系。
  
  图4:QDR存储器读取时序图MT54W1MH18J
  从图4可以看出在FPGA的管脚上,PCB传播延迟与时钟(CQ_FPGA)和数据(Q_FPGA)信号间的关系。在TimingDesigner软件的动态链接参数表中使用单独的变量可以轻松地获得PCB板的延时及延迟值对相关的信号的影响。现在,我们可以在适当的FPGA装置中,为获取时钟而得到内部布线延迟和确定正确的相位偏移。
  FPGA设计要素
  大多数的FPGA利用约束驱动进行布局和布线。时序约束为关键信号提供时序信息。TimingDesigner软件提供独特的时序参考图如测量和计算变量结果,从行内文字到文件都支持厂商特定的约束语法。例如,在一个FPGA约束布线中,对符合其动态文字窗口的语法要求中,可以通过时序图中为特定信号计算延迟误差。然后,我们可以将这些语法通过一个文本文件导入到FPGA的开发系统中,或者我们可以直接将数值复制到FPGA的约束编辑器中。
  对于高速存储器接口设计,数据存储器被放置在FPGA装置I/O单元的附近,以尽量减少布线延时的影响。该I/O单元只有一个布线路径为输入数据信号,因此在数据总线的每一部分都存在数据路径延迟。FPGA的PLL也被用来进行适当的时钟控制,并通常有几种可能的从输入焊盘到捕捉寄存器的路径。制造商通过控制特定的属性,使PLL的特点包括相位偏移,相乘,或相除等因素,无论是原始示例的设计代码或约束都可以带入模块。因此,时钟和数据路径的布线和延误必须确定,以实现适当的时钟相位偏移。
  
  图5:TimingDesigner软件为FPGA设计流程提供直观的界面。
  在FPGA的最初布局和布线完成后,时序报告提供数据总线中每个时序的详细延时信息。如果有必要,可为FPGA开发系统的关键信号设定延时路径,TimingDesigner软件可以提取相关信息和利用图表更新。在这个设计实例中,我们需要输入数据总线和相关时钟信号的时序报告。
  1.导入布线后的时序到TimingDesigner软件中
  导入FPGA的时序报告信息,我们需要规划最坏的情况从而确定在图表(Q_FPGA)中相关的波形图。信号设计规范定义在同一个时序图表中不能带有同名的波形图。通过规划端口, TimingDesigner软件可以过滤时序报告并提取有用的信息。这些规划被存储在图表文件内并可预先解决的布局和布线问题。
  2.提供可视化的捕捉寄存器
  从导入时序报告文件开始, TimingDesigner软件为关键信号延时创建变量,并在电子数据表中规划和分配这些信号端口。变量过去是用来在时序图中更新时钟与数据关系。现在,可确定在FPGA器件内捕捉寄存器中的边缘关系。
  内部寄存器建立和保持是从时序报告和相关的约束中提取所需的时序。下一步,在时序图表中添加另外两个信号和偏移时序报告中的布线延时;在捕捉寄存器中添加数据和时钟,然后建立和保持FPGA器件适用的约束。用时钟边缘和有效数据窗口边缘的补偿确定必要的相位偏移,来平衡设计中有效的数据窗口。
  3.平衡有效数据窗口
  我们可以使用下列公式来确定PLL时钟信号产生的相位偏移:
  1、从设计的实际有效数据窗口减少FPGA装置I/O部分的最小有效数据窗口,然后结果除于2,实际结果为这2个有效数据窗口的差额(DlyDVW)。(参考图3)
  DlyDVW = (DVWdata - DVWdev) / 2
  2、I/O寄存器数据建立时间加上DlyDVW值,就确定了相对时钟边缘的有效数据窗口(DlyRelSU)。
  DlyRelSU = DlyDVW + IOEsu
  3、最后,从相对建立时间(上面第2步得到的数值),减去时钟信号与捕捉寄存器的有效数据窗口(从时序图测量)之间的补偿。
  Clk_offset = DlyRelSU - EdgeOffset
  利用上述公式,我们可以确定FPGA开发系统中PLL的相位偏移量,并执行到下一步的布局和布线。
  4.验证结果
  再次导入做过以上修改的布线后时序文件,TimingDesigner软件会自动更新需要的数值,并更正及重新定位I/O单元的时钟信号CQ_intPLL。如图6所示。依靠改变PLL,确切的平衡建立和保持空余将是不可能的。对于这些情况下,应该在FPGA装置的PLL中获取平衡增量以解决这个问题。
  
  图6:在改变时钟和平衡建立及保持空余后,获取数据分析的时序图表。
  本文小结
  高速设计往往有严格的规范和严谨的发布时间表,所以需要一个交互式的时序规划和分析工具,来获得快速和完整的时序空余,以分析并解决可能影响到最终设计成功的因素。本文说明了如何利用TimingDesigner软件对FPGA设计流程进行准确地捕捉和交换时序信息,以帮助在整个设计过程中管理时序空余,并提供可视化的界面验证设计,并预测设计性能。今天的FPGA器件产品都带有多功能的时钟配置和丰富的I/O资源,并且带有高数据传输能力,TimingDesigner软件为高速存储器如DDR & QDR SRAM提供精确的关键路径时序分析功能。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分