当前位置: 首页 > 范文大全 > 公文范文 >

基于FPGA和BWDSP100,Link口的源同步时序约束

时间:2022-10-28 11:10:06 来源:网友投稿

摘 要:FPGA与BWDSP100高速链路口数据传输,在300MB/s的速率下,FPGA则需要进行SDC时序约束,来确保时序准确无误, FPGA与BWDSP100的Link口属于源同步接口,本文利用TimeQuest时序分析工具对FPGA的LINK口逻辑进行约束,工程应用中6路LINK口能稳定工作在300MB/s的传输速率下。

关键词:Link口;时序约束;BWDSP100;FPGA

DOI:10.16640/j.cnki.37-1222/t.2015.21.215

0 引言

BWDSP100处理器是一款32位高性能数字信号处理器,是38所自主设计和研发,面向雷达信号处理、精确制导武器、电子对抗、通信等领域。在于FPGA实现点对点通信时,采用LINK口实现高速数传。LINK口是一种双速率,源同步接口。在FPGA高速传输的LINK口逻辑设计过程中, SDC约束环节必不可少[1]。FPGA使用的是Altera公司器件,该公司的静态时序分析工具Time Quest功能强大,支持业界标准的SDC约束,能够提供复杂的时序约束和详尽的分析报告。本文所做的约束是在该工具下完成的。

1 时序约束方法

FPGA设计平台中的静态时序分析工具(STA)可以获得映射或布局布线后的时序分析报告,通过报告可以明确系统运行的频率。当系统设计简单且频率较低时,可以不加任何时序约束。当设计不能满足运行频率的要求时,根据STA的结果更改设计,添加必要的时序约束条件或者选用更高速度的器件,从而提高运行的最高频率。通过必要的时序约束可以控制逻辑的综合、映射、布局和布线,以减少逻辑和布线延时,实现工作频率的提高。时序约束SDC文件是标准的约束文件,添加约束主要有时钟约束、I/O约束、偏移约束、时序例外约束、多周期约束等[2] 。

2 BWDSP100 LINK 口时序约束[3][4]

BWDSP100有8个链路口,分为4个发送和4个接收链路口,每个链路口由8对LVDS(8bits)数据线和3对LVDS控制线构成。链路口在传输数据时,DMA启动信号发出,当正确配置LINK口接收端DMA控制器时,LxACKOUT拉低,通过LxIRQOUT发送“110011”的DMA请求信号,接收端收到来自LxDATOUT[0]32bit控制字,随后LxACKOUT拉高,接收数据。当缓存填满,乒缓存切到乓缓存时,LxIRQOUT信号拉低,兵缓存数据进行并串转换,并发送数据。所有的并串/串并转换、发送与接收工作都严格按照LxIRQOUT/LxIRQIN信号的下降沿同步。在一次接收完成时,LxACKOUT为高则继续接收数据,为低则暂停接收。

(1)发送端逻辑功能及时序约束。在进行约束时,首先对基础时钟进行约束,进入FPGA内部的是150M的DSPCLK随路时钟,LINK口数据率300MHz,时钟周期是6.666ns。约束如下:create_clcok period 6.666–name{DSPCLK}[get_ports {DSPCLK}].DSPCLK经PLL产生150M的L0CLKOUT和TXCLK时钟,分别作为随路时钟和发送端模块主时钟。由于发送数据是中心对齐,所以L0CLKOUT频移90度。其约束为:create_generated_clock –name TXCLK -source[get_pins pll|inclk[0]] [get_pins pll|clk[0]

create_generated_clock -name shifted -phase 90 –source [get_pins pll|inclk[0]] [get_pinspll|clk[1]]

create_generated_clock –name L0CLKOUT-source [get_pins pll|clk[1]] [get_ports L0CLKOUT]

当然也可以使用derive_pll_clocks自动识别并约束时钟。对时钟抖动不确定进行约束:set_clock_uncertainty -from {DSP1L0CLKIN} -setup 1.2。也可以使用deriver_clock_uncertainty对时钟不确定进行约束。但是set_clock_uncertainty优先级高,并且同时使用时钟不确定值将叠加。之后对IO延迟进行约束,有两种方式,一种是以FPGA为中心(FPGA Centric),一种是以系统为中心(System Centric)。当FPGA为中心进行约束时需要知道FPGA在数据输入或输出的Skew,而以系统为中心时则需要知道器件的Tsu、Th和板级延迟等信息。本文以FPGA为中心进行讨论约束,在对IO延迟约束前,Altera时序分析工具TimeQuest对FPGA的Tco进行分析,在Slow mode下和Fast mode下Tco分别为1.507和0.938ns。所以取skew取两值平均值为1.2ns。所以对数据端口约束为:set_output_delay -max[expr 3.3 - 1.2] -clock [get_clocks L0CLKOUT] [get_ports L0CLKOUT*]

set_output_delay -min[expr -3.3 + 1.2] -clock [get_clocks L0CLKOUT][get_ports L0CLKOUT*]\-add delay

其中,对同一个端口进行约束时,要添加-add_delay,约束才生效。对下降沿同时进行相同约束,需要添加-clock_fall进行约束。

set_output_delay -max [expr 3.3-1.2] -clock [get_clocks L0CLKOUT] -clock_fall [get_ports.L0DATOUT*] -add_delay

set_output_delay -min [expr-3.3-1.2] -clock [get_clocks L0CLKOUT] -clock_fall [get_ports L0CLKOUT*] -add delay

输入数据是双沿触发,在进行建立时间和保持时间分析时也是对双沿进行分析,但是双沿触发的数据使用的不同寄存器,相互之间不需要进行建立和保持时间的分析,所以对时钟的上升沿和下降沿做例外约束。告诉工具放宽该路径的约束。

set_false_path -setup -rise_from [get_clocks data_clock] -fall_to [get_clocks output_clock]

set_false_path -setup -fall_from [get_clocks data_clock] -rise_to [get_clocks output_clock]

set_false_path -hold -rise_from [get_clocks data_clock] -fall_to [get_clocks output_clock]

set_false_path -hold -fall_from [get_clocks data_clock] -rise_to[get_clocks output_clock]

(2)接收端逻辑功能及时序约束。接收端的时钟约束,可以采用输入时钟作为参考,也可以创建虚拟时钟进行约束,前者约束方法直观,但是需要考虑板级延迟信息。后者虚拟时钟是跟设计没有直接关系的一个时钟,可以准确的给出数据信号和时钟的相对关系。Altera公司也推荐对源同步约束采用虚拟时钟。本文创建一个频率为150M的虚拟时钟create_clock -name virt_clk -period 6.666。创建150M的输入时钟,时钟相位与虚拟时钟相比延迟90度。

create_clock -name L0CLKIN -period 6.666 -waveform { 1.666 5.000 }[get_ports DSP1L0CLKIN ]

对输入数据的输入延迟做约束,以虚拟时钟的上升沿作为参考沿,因为虚拟时钟与数据沿同相位,所以约束如下:set_input_delay -clock [get_clocks virt_clk] -max 0.05 [get_ports data_in*] -add_delay

set_input_delay -clock [get_clocks virt_clk] -min -0.05 [get_ports data_in*] -add_delay

其中0.05ns是设计中的skew。由于LINK口是双沿传输,所以对虚

(下转第153页)             (上接第242页)

拟时钟的下降沿做参考时钟,对输入数据进行约束。添加-clock_fall指令。

set_input_delay -clock [get_clocks virt_clk] -max 0.05[get_ports data_in*] -clock_fall -add_delay

set_input_delay -clock [get_clocks virt_clk] -min -0.05[get_ports data_in*] -clock_fall -add_delay

3 结果分析

对于高速口数据传输,时序分析是个反复修改和迭代过程,最终才能达到要求,图1是Timequest对约束后LINK口端输入延迟的分析,可以看到关键路径的余量为0.778ns,时序报告满足要求。实际工程中,FPGA使用的是altera公司EP4SE530F43I3,与两片BWDSP100的LINK口连接,共有6路300MB/s的LINK口收发,为了验证时序约束的的效果和正确性,两片BWDSP100分别向FPGA发送相同数据,数据为AA55AA55,AA550000,AA550001……,LINK1是按照本文约束的方法进行约束,而第二个LINK口逻辑则是简单的进行了时钟的约束,而未添加相关的其它约束,采用SignalTap抓取两路数据,结果如图2所示,可以看到LINK1口收到正确数据,而LINK2口则会出现错误数据,无法正常接收数据。

4 结论

本文详细介绍了BWDSP100的LINK口的约束方法,以FPGA为中心进行约束,约束包括输入输出延迟,例外约束等,并在工程中实现6路全双工、传输速度300MB/s的link口传输。

参考文献:

[1]BWDSP100高速链路口模块的设计[J].中国集成电路,2012,03(154):60-64.

[2]Altera Corparation.AN433:constraining and analyzing source-synchronous interface.[EB/OL]./literature/an/an433.pdf,2007.

[3]BWDSP100 软件用户手册[S].中电38所,2011.

[4]BWDSP100 硬件用户手册[S].中电38 所,2011.

作者简介:朱鹏(1987-),男,河南商丘人,硕士,助理工程师,研究方向:为FPGA软件设计。

相关热词搜索: 时序 约束 同步 FPGA BWDSP100