1. FPGA时序的基本概念
FPGA器材的需求取决于体系和上下游(upstream and downstrem)设备。咱们的规划需求和其他的devices进行数据的交互,其他的devices或许是FPGA外部的芯片,或许是FPGA内部的硬核。
关于FPGA design来说,必需求重视在指定要求下,它能否正常作业。这个正常作业包含同步时序电路的作业频率,以及输入输出设备的时序要求。在FPGA design内部,都是同步时序电路,遍地的延时等都能够估量出来,可是FPGA内部并不知道外部的设备的时序联系。所以,TIming constraints包含
输入途径(Input paths )
寄存器-寄存器途径(Register-to-register paths )
输出途径(Output paths )
破例(Path specific excepTIons )
这正好对应了上图中三个部分,Path specific excepTIons 暂时不提。
Input paths对应的是OFFSET IN束缚,即输入数据和时钟之间的相位联系。针对不同的数据输入方法(体系同步和源同步,SDR和DDR)有不同的剖析成果。
Register-to-register paths 对应的是整个FPGA design的作业时钟。假如只要一个时钟,那么只需求指定输入的频率即可。假如有多个时钟,这些时钟是经过DCM,MMCM,PLL生成的,那么明显ISE知道这些时钟之间的频率、相位联系,所以也不需求咱们指定。假如这些不同的时钟是经过不同的引脚输入的,ISE不知道其相位联系,所以指定其间一个为主时钟,需求指定其间的相位联系。
Output paths对应的是OFFSET OUT 束缚,和OFFSET IN束缚很相似,不过方向相反。
2.输入时序束缚
The input TIming constraints cover the data path from the external pin or pad of the package of the FPGA device to the internal synchronous element or register that captures that data.
输入时序束缚操控外部引脚到内部模块的途径。选用OFFSET IN来指出输入时序束缚。也便是说OFFSET IN界说了时钟沿河被收集数据的联系(相位)。这儿咱们关怀两类不同的输入方法,体系同步输入和源同步输入。(关于SDR和DDR,即单数据速率和双数据速率而言,差异只在于一个时钟周期的采样次数,不做阐明)
System Synchronous inputs
体系同步输入,指由同一时钟传输和捕获数据,如下图所示。
上图能够看出,FPGA和输入源设备是同源的,共用一个体系时钟。这一个体系时钟在源设备触发输出数据,一起还作为FPGA的时钟接纳输入的数据。因而源设备只需求供给输入的数据就能够了。
Source synchronous inputs
源同步如下图所示(这儿是DDR,一起在上升沿和下降沿采样)
源同步和体系同步的最大差异在于源设备(Source Device)在输出数据的一起,输出了一路和数据同步的时钟。FPGA选用这一路时钟来进行数据的采样。
这两种输入方法看起来有很大的不同,可是OFFSET IN束缚的写法是共同的,后文将具体明。
3.寄存器-寄存器的时序束缚
寄存器-寄存器的束缚,在同步时序电路中,便是周期的束缚。关于彻底选用一个时钟的电路而言,对这一个clk指定周期束缚即可。可是假如选用了多个时钟,那么状况就杂乱了。多个时钟中的“多个”,或许由DCM等倍/分频得到,也有或许FPGA外部就引进了两个时钟信号,还有或许是其他状况。这儿Xilinx将其分成了以下几类
主动相关同步时钟域
手动相关同步时钟域
异步时钟域
主动相关同步时钟域(DLL,DCM,PLL,MMCM)
由于它是主动的,从字面意思上看便是主动剖析。当咱们例化了一个DCM,DCM的输入输出信号之间的联系就已近确认了,比如频率联系和相位联系。当指定了DCM输入时钟的频率和相关信息之后,再去指定输出的相对联系就有弄巧成拙的感觉了,由于这些联系以及在生成DCM的时分确认了。关于PLL,MMCM来说也是相同的。
手动相关同步时钟域
对应上文的“主动”,这儿的“手动”指需求人为指定时钟之间的联系。在什么状况下,ISE套件无法知道时钟之间的联系?假如两组时钟都是由FPGA外部引进的,那么它们之间的相位联系是不知道的,需求以为指定。时钟之间的相位联系都是相对的,因而这个进程需求指定一个主时钟,之后界说其他时钟和主时钟之间的相对相位联系。
NET “PrimaryClock” TNM_NET = “TNM_Primary”;
NET “RelatedClock” TNM_NET = “TNM_Related”;
TIMESPEC “TS_primary” = PERIOD “TNM_Primary” PeriodValue HIGH HighValue%;
TIMESPEC TS_related” = PERIOD “TNM_Related” TS_Primary_relation PHASE value;
异步时钟域
xilinx无法剖析,具体参阅ug612。
4.输出时序束缚
输出便是输入的逆,因而剖析的进程是相似的,分类也是相似的。针对时钟的不同,有体系同步和源同步两种。此处不再具体阐明。
体系同步SDR
源同步DDR(一般来说不给束缚就能够)
5. 总结
时序收敛的意图是让FPGA design 按预设的逻辑正常的作业。
为了使其正常作业,需求考虑至少三处:FPGA内部的寄存器-寄存器时序要求,FPGA输入数据的时序要求,FPGA输出信号的要求。