基于FPGA原语的低延时高速接口实现方法

2021-06-04 03:09任智新王江为阚宏伟赵坤
微型电脑应用 2021年5期
关键词:原语时序延时

任智新, 王江为, 阚宏伟, 赵坤

(1.浪潮电子信息产业股份有限公司, 山东 济南 2500132;2.广东浪潮大数据研究有限公司, 广东 广州 510627)

0 引言

近几年,随着现场可编程门阵列(FPGA,Filed Programmable Gate Array)自身功能的不断完善以及多核CPU性能的提升遇到摩尔定律瓶颈,使FPGA受到越来越多人的青睐。尤其在高速数据互连、并行计算处理以及计算机异构加速系统中FPGA都有着出色的表现。这也得益于各个FPGA厂商提供了集成度高的IP核以及丰富易操作的软硬件开发工具,开发人员不必过多关注FPGA底层设计开发,就可以快速地搭建系统工程,满足应用的需求。高度集成以及功能丰富且可灵活配置的各类IP核,省去了工程师大部分的工作,可以将更多的精力放在系统架构以及性能提升上,尤其是对于接口的设计上。不论是以太网接口、PCIe接口、DDR接口还是通用的其他高速接口,FPGA厂商均提供了可直接调用的IP,但在对传输延时敏感的应用场合下,这样做会使系统主频受FPGA内部资源利用率、布局布线以及IP本身延时等因素影响,难以满足设计要求,或出现时序无法收敛等问题[1-3]。

FPGA原语(Primitive)作为芯片最基本的组件,在实际应用中可以协助解决上述问题,实现上述特殊场合下无法使用高度集成IP的功能。原语是各个器件厂家针对不同FPGA器件特征开发的一系列常用模块,是最小单元,相当于软件中的机器语言,在设计中可直接例化使用,不过不同厂家不同系列器件的原语也会因硬件本身的特点而不同,但是基本的类型和使用方法类似,在具体使用时根据手册进行调用即可,使用亦非常方便和快捷。另外,原语资源不占用FPGA的可编程逻辑资源,在大规模的设计中,可充分利用FPGA逻辑资源,完成更加复杂的功能,发挥出FPGA在并行计算上的优势,激发出最高的能效比。

本文以Xilinx公司的器件原语展开论述和分析,对原语在高速接口中的应用进行详细阐述,并描述了FPGA原语在DDR SDRAM镜像功能中的应用实例和效果。

1 接口组件I/O分析

Xilinx FPGA原语根据实现的功能大概分为10类:包括时钟组件、I/O组件、寄存器/锁存器、处理器组件、计算组件、移位寄存器、配置和检测组件、RAM/ROM组件、Slice/CLB组件以及G-tranceiver,不同型号器件包含的组件类别不完全相同,但基本都包含在这10大类中。本文在对I/O组件的功能和应用进行了分析,提出延时可变以及低延时适用于高速数据传输的接口。

常见的Xilinx厂家的器件I/O组件由于产品型号的不同而有所差异,但基本功能有很大的相似性,常见的组件包括IOBUF/IDDR/IDELAY/ISERDES/ODDR/OSERDES等20几个I/O组件,可利用这些组件根据需求搭建成不同功能模块,尤其在高速接口PHY的使用中十分灵活[4]。

1.1 输出延时可变接口PHY功能实现

本文以几个典型的原语组件,详细描述一种低延时且可动态修改传输延时的接口PHY实现方法,其实现框图如图1所示。

图1 PHY接口实现框图

基于原语实现的PHY接口结构框图1的各原语的功能如下:

(1) IOBUF组件:输入/输出缓冲器,有单端及双端信号两种。根据实际信号传输的方向选择,可做输入、输出以及双向信号,通过改变该组件的方向控制信号oe,来改变该组件的输入输出方向,是搭建PHY必备的组件,是芯片管脚与内部信号之间的接口,几乎无输入输出延时,仅有硬件实现时的走线延时,该模块的调用代码如下:

IOBUF #(

.IBUF_LOW_PWR (IBUF_LOW_PWR))

u_iobuf_d0(

.I (d0_in), //方向为输出时,输入到该模块的数据

.T (d0_oe),//方向控制信号

.IO (d0_inout),//输入输出接口,对应pad管脚

.O (dq_out)//方向为输入时,外部信号经过该模块后的数据);

(2) IODELAY:可编程的延迟单元。每个PHY接口包含一个该组件,延时时间最大有64个tap的环绕单元,每个tap值与接口的工作频率有关,比如V6的芯片,工作频率是200 MHz,tap=78 ps,所以总的最大延时时间为78×64=4 992 ps,主要用来调整因硬件走线延时的不同而带来的时序问题,通过改变tap值,保证每组信号线走线延时的一致性,该模块调用的代码如下:

(* IODELAY_GROUP = IODELAY_GRP *) IODELAYE1 #

(.CINVCTRL_SEL ("FALSE"),

//其他参数配置略)

u_iodelay_dq (

.DATAOUT (dq_iodelay),

.C (clk),

.CE (1'b0),

.DATAIN (1'b0),

.IDATAIN (dq_in),

.INC (1'b0),

.ODATAIN (dq_oq),

.RST (1'b1),

.T (ocb_tfb),

.CNTVALUEIN (dlyval),

.CNTVALUEOUT (dq_tap_cnt),

.CLKIN (),

.CINVCTRL (1'b0));

模块时序图如图2所示。

图2 Idelay模块时序图

(3) ISERDESE:输入串并转换器。ISERDESE可以实现高速数据传输,完全不需要FPGA内部逻辑与输入数据频率匹配,此转换器支持SDR、DDR两种模式,即可以实现两种不同速度的数据接口转换,接口与内部逻辑时钟速率比支持2∶1、3∶1、4∶1和5∶1,用户可根据系统工作频率及外部接口频率灵活选择。例如,当接口信号工作频率为400 MHz,而FPGA逻辑内部工作频率为200 MHz时,为了能不跨时钟操作,保证时序以及数据采集的正确性,需要设置ISERDESE为2∶1模式,即在内部时钟频率的上下沿均采集接口数据,相当于一个时钟周期可采集外部接口的两个数据,达到变频的目的。

(4) OSERDESE:输出串并转换器。与ISERDESE功能相同,只是方向相反,串并转换和并串转换的工作过程。如图3所示。

输入数据转换流程如下所述:外部信号通过管脚后,经过IOBUF的输入通路进行无延时缓存;接着进入可动态调整输入延时的IODELAY输入通道,该模块延时的时间有限,具体参考上文;之后进入ISERDESE串行转换模块,该模块有个特点,当输入的接口时钟与分频时钟相位相同时,输入延时为3个接口时钟时间,而当两个时钟相位相差180°时,输入延时为2个接口时钟时间,所以通过动态修改分频时钟,改变输入总的延时,但此延时只能变化一个周期;最后数据进入用户逻辑,进行数据解析等其他操作。输出数据转换流程是输入的反过程,过程完全一致。

图3 输入输出1∶6 serdes数据转换

1.2 延时可变的PHY功能仿真图

转换DDR(Double Data Rate,双倍速率)数据、接口与内部逻辑工作频率比为2∶1情况的仿真示意图,如图4(1)、图4(2)所示。

图4(1) 输出延时仿真结果1

图4(2) 输出延时仿真结果2

其中图4(1)是两时钟同相时,数据输出延时为2个CK周期;图4(2)是当内部逻辑分频时钟取反后送入模块中,数据输出延时为3个CK周期。

对于I/OSERDESE这一特性在需要输入/输出通路延时可变化一个周期时,使用该方法可以大大简化接口逻辑,提高工作效率。

2 原语在DDR SDRMA控制中的应用

FPGA作为内存控制器在加速卡及内存容错技术中都有广泛的应用,在常规方案中,使用FPGA内IP核[5]来处理DDR接口数据的延时过大,无法满足接口低延时应用场合下DDR的读写时序要求。根据上文对原语的分析,将I/O组件的原语,以合理的方式进行“搭积木”后,可以实现低延时的DDR接口处理模块,从而满足系统功能的需求。

2.1 FPGA内集成的接口IP延时分析

通常情况下,对于高速信号接口数据的处理,工程师们会首先选择FPGA内高度集成的IP核,比如Altera厂家A10器件中高速数据处理接口phylite(Altera PHYLite for Parallel Interfaces IP core),其主要特性:支持1/4速率到1/2速率以及1/2速率到全速率的转换I/O、支持单数据速率(SDR)和双数据速率(DDR) 、支持基于DQS组的数据采集,非常适合处理内存DDR数据,但对该IP进行仿真后发现,延时高达9个时钟周期,其仿真结果如图5所示。

图5 phyLite1/2速率输入接口库仿真图

而Xilinx的HSSIO(High Speed SelectIO )的输入输出延时也多达7个时钟周期。显然,用原语搭建的PHY延时最小,3种功能模块对比结果如表1所示。

表1 接口延时对比

延时的单位为接口周期数。

2.2 原语PHY的应用

为了满足DDR读写延时要求并且使FPGA的时序能很好的收敛,使用第1章描述的方式搭建的低延时高速接口来实现基于FPGA的内存镜像功能。逻辑内部的工作频率可以根据接口频率灵活调整,对应的PHY接口在输入/输出分别采用不同的双沿处理原语:I(O)DDR和I(O)Serdes即可。利用该原语架构的逻辑已经在硬件平台中得以验证,将基于Virtex6实现的内存镜像卡挂在主板后,CPU可以正常访问内存,且可实现镜像功能。基于原语实现的DDR高速接口数据输入输出示意图,如图6所示。

图6 原语在DDR内存镜像中的应用

3 总结

通过上述对使用原语I/O组件搭建的PHY接口的分析,不同的原语在不同的输入源激励下会有不同的表现,在经过充分的论证和仿真验证后有一些特殊的功能。使得原语在实现复杂FPGA逻辑中有很好的应用,可方便、灵活地搭建实现各种功能模块。对于需要延时小、时序紧张的应用中有着比集成IP核更好的效果。本文提出的原语PHY接口可根据实际接口的频率以及系统功能的需求进行灵活修改,而且可以实现小范围内延时动态调整。并且该方式在基于FPGA的内存镜像卡中有着很好的表现,完成了高速IP无法实现的功能。在对数据传输延时低的场合下有很好的应用,不过基于原语实现 的PHY功能相对简单,若想达到集成IP支持的功能和特性,还需要进行更多的仿真和验证。

猜你喜欢
原语时序延时
清明
基于级联步进延时的顺序等效采样方法及实现
基于不同建设时序的地铁互联互通方案分析
日光灯断电关闭及自动延时开关设计
基于FPGA 的时序信号光纤传输系统
浅谈旅游翻译中文化差异的处理
基于模体演化的时序链路预测方法
Two-dimensional Eulerian-Lagrangian Modeling of Shocks on an Electronic Package Embedded in a Projectile with Ultra-high Acceleration
基于ZigBee协议栈的PHY服务研究
桑塔纳车发动机延时熄火