专利名称:一种基于fpga的sfi4.1装置的制作方法
技术领域:
本发明涉及OTN(光传送网)技术领域,具体说是一种基于FPGA(现场可编程门阵 列)的SFI4. 1(串并行转换器与成帧器间并行接口)装置。尤指一种采用OIF(光互联论 坛)提出的SFI4. 1标准,在FPGA内部实现IOG信号接收与发送的装置。
背景技术:
光互联论坛(OIF)提出的SFI4. 1主要是应用在SONET (同步光纤通信网)、SDH(同 步数字系列)、0ΤΝ(光传送网)等系统中,实现STS-192 (同步传递信号)、STM-64 (同步传 递模式)、0TU2 (光通路传送单元)、0DU2 (光通路数据单元)等信号间的连接。在SONET/ SDH中传送的是9953. 28Mb/s的STS_192、STM_64信号,通过16对622. 08Mb/s的差分数据 线和1对差分随路时钟来传送。在OTN系统中传送的是10709. 225316Mb/s的0TU2信号, 通过16对669. 33Mb/s的差分数据线和1对差分随路时钟来传送;或传送10037. 273924Mb/ s的0DU2信号,通过16对627. 33Mb/s的差分数据线和1对差分随路时钟来传送。这种多 路数据和时钟组合在一起称为源同步并行总线。SFI4. 1就是通过这种源同步并行总线连接 成帧器和串并行转换器。STS-192、STM-64,0TU2, 0DU2等信号统称为IOG信号。在实际的系统设备中,一些ASIC(专用集成电路)芯片的IOG信号接口,都采用 OIF提出的串并行转换器与成帧器间并行接口(SFI4. 1),SFI4. 1使用时钟与多路数据信号 组成的源同步并行总线传输数据信息。SFI4. 1对于ASIC芯片之间对接比较容易,但对采 用SFI4. 1接口传输的IOG信号进行自定义应用处理时,必须使用FPGA来设计这一接口,以 便在FPGA内部进行逻辑设计,满足应用要求。采用SFI4. 1传输的IOG信号接口需要实现 16路并行高速源同步数据的接收和发送,由于在FPGA内部各路数据及时钟的布线延时存 在差异,影响数据的正确接收与发送,使得采用SFI4. 1传输的IOG信号接口在FPGA上实现 存在困难。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种基于FPGA的SFI4. 1装 置,解决了采用OIF提出的SFI4. 1传输IOG信号的接口标准在FPGA器件中的设计,在FPGA 器件中具体的实现了这一设计方案,并能正确的接收和发送高速并行数据。为达到以上目的,本发明采取的技术方案是一种基于FPGA的SFI4. 1装置,其特征在于该装置内用FPGA实现SFI4. 1接口, 通过SFI4. 1接口分别连接FPGA器件与OTN系统中ASIC芯片,在ASIC芯片和FPGA器件上 共用参考时钟REFCLK,且数据发送方向的发送时钟均直接采用参考时钟REFCLK,接收方向 的接收时钟则直接采用随路时钟处理。在上述技术方案的基础上,所述用FPGA实现的SFI4. 1接口包括源同步接口的发 送方向模块和源同步接口的接收方向模块;所述源同步接口的发送方向模块,用于实现FPGA内部上一级处理模块输入的64路156. 83Mb/s的并行数据到16路627. 33Mb/s的并行差分数据输出的转换,同时发送出与 数据随路的627. 33M差分时钟;所述源同步接口的接收方向模块,通过动态的调整随路差分时钟CL0CK_RX_P、 CL0CK_RX_N输入后的相位,采用ISERDES实现外部输入的16路627. 33Mb/s并行差分数据 到64路156. 83Mb/s并行数据的转换,得到经过源同步接收处理后的64路并行数据。在上述技术方案的基础上,FPGA内部上一级处理模块输入的64路并行数据 DATA[63:0],通过16个输出串行器0SERDES输出16路并行数据:DATA_TX[15:0];然后通 过16个增强型差分输出驱动器0BUFDS_LVDSEXT_25输出16路并行差分数据对DATA_TX_ P[15:0]、DATA_TX_N[15:0];参考时钟REFCLK分别送入一个时钟驱动器BUFR和一个时钟驱动器BUFIO ;时钟驱动器BUFIO用于驱动位于输入输出端口附近的专用时钟布线资源,送出高 质量的时钟资源,送出的时钟资源到达输入输出端口处的各种处理组件的时钟输入端;时钟驱动器BUFR用于驱动区域的时钟布线资源,同时时钟驱动器BUFR根据参数 对输入的时钟进行分频输出,分频因子为4 ;时钟驱动器BUFIO输出一路高速串行时钟CLK到双数据速率输出ODDR的时钟输 入端,双数据速率输出ODDR的输入端D1、D2为固定逻辑电平;双数据速率输出ODDR的输出端Q经增强型差分输出驱动器0BUFDS_LVDSEXT_25 输出一路差分随路时钟CL0CK_TX_P、CL0CK_TX_N ;时钟驱动器BUFIO同时输出一路高速串行时钟TXCLK到每个输出串行器0SERDES 的时钟输入端,作为0SERDES实现并串转换的串行时钟;时钟驱动器BUFR输出一路分频后的并行时钟TXCLKDIV给每个输出串行器 0SERDES的并行时钟输入端,作为0SERDES实现并串转换的并行时钟。在上述技术方案的基础上,16路差分数据DATA_RX_P[15:0]、DATA_RX_N[15 0]分 别成对的送入一个FPGA内部的差分输入缓冲器IBUFDS_LVDS_25,再经过与差分输入缓冲 器IBUFDS_LVDS_25 —一对应的FPGA内部的高速串并转换器ISERDES后,通过串并变化及 对齐后合路为并行数据DATA_FR0M_ISERDES ;输入的差分时钟CL0CK_RX_P、CL0CK_RX_N经过同一个FPGA内部的差分输入缓冲 器IBUFDS_LVDS_25后,一路送入FPGA器件内的可编程延时调整单元I0DELAY,另一路送入 一个FPGA内部的高速串并转换器ISERDES得到CL0CK_RX_0UT时钟信号;可编程延时调整单元I0DELAY的输出分为两路,一路经过用于高速时钟驱动的时 钟驱动器BUFIO为高速串并转换器ISERDES提供高速串行处理时钟RXCLK,另一路经过时钟 驱动器BUFR进行4分频后为高速串并转换器ISERDES提供并行处理时钟RXCLKDIV ;CL0CK_RX_0UT时钟信号经过时钟对齐数据状态机处理后,输出一路TRAINING_ DONE信号,且同时输出DEC、INC信号用于对可编程延时调整单元I0DELAY进行延时控制。本发明的有益效果是将OIF提出的串并行转换器与成帧器间并行接口(SFI4. 1) 采用FPGA器件的资源实现,便于在FPGA器件内部对采用SFI4. 1传输的IOG源同步并行总 线信号进行处理,实际使用中增强了系统处理0DU2信号的灵活性,进一步满足了设备的实 际要求,同时为今后的源同步接口设计提供技术积累。
本发明有如下附图图1是标准的SFI4. 1接口的信号连接图。图2是基于图4所示连接方式实现FRAMER功能时,发送端的信号图。图3是基于图4所示连接方式实现FRAMER功能时,接收端的信号图。图4是本发明给出的SFI4. 1接口的信号连接框图。图5是源同步接口接收方向的实现框图。图6是具体的描述了接收方向实现框图中状态机的具体实现过程,从而更加明确 的描述了接收方向数据正确取样的方法。通过检测处理时钟沿所处的位置,并不断对处理 时钟进行调整,直到处理时钟调整到和数据中央对齐的时钟跳边沿附近。图7描述了状态机中具体搜索数据正中央的时钟移动过程,从而更加清晰地理 解状态机如何搜索数据的正中央的过程。图中描述了处理时钟处于不同的位置时,通过 ISERDES采样到的时钟输入伪数据的值及处理时钟与数据的位置关系。图8是发送方向的实现框图。图9是设计中ASIC输出的源同步时钟与一路数据的示波器测试图。采用的示波 器为泰克MS04054,通过两个差分探头,分别观察时钟和一路数据,得到的波形相对关系,可 以看到,时钟信号上升沿在数据眼图信号的中央部位。图10是设计的SFI4. 1接口往ASIC发送的源同步时钟和一路数据的示波器测试 图。
具体实施例方式以下结合附图对本发明作进一步详细说明。本发明应用在OTN系统设备中,该OTN系统设备中部分线卡内部处理的是采用 SFI4. 1接口传输的0DU2信号,本发明在FPGA内实现SF4. 1接口,完成采用SFI4. 1接口传 输的0DU2信号在FPGA内的正确接收及处理后的正确发送。SFI4. 1接口采用16对差分数 据线和一对随路差分时钟同时传输数据信号,属于高速源同步接口。实际OTN系统设备中 SFI4. 1接口的单路数据速率为627. 33Mb/s。在接收端,输入的高速并行源同步信号满足 OIF提出的SFI4. 1接口时钟数据关系,由于在FPGA内部时钟信号与数据信号到达高速接收 单元的路径不一致,导致时钟和数据的时延不能同步,因此需要控制接收方向的接收时钟, 以便正确的取样数据。在发送端,需要考虑发送的时钟和数据的路径,使发送管脚输出的高 速数据和时钟的相位满足标准SFI4. 1的发送接口的要求。本发明中SFI4. 1接口用于成帧器ASIC芯片与成帧器FPGA之间的连接,完成0DU2 信号的相互传输。根据实际应用的要求,在OTN设备中采用FPGA与ASIC的SFI4. 1接口进 行对接。工作在627. 33M(10. 037Gb/s),用于传送0DU2信号的SFI4. 1源同步接口,本发明 可用XILINX公司VIRTEX5系列的XC5VLX85T FPGA实现。图1给出了标准的SFI4. 1接口的信号连接图。图1中左边实现的是成帧器 (FRAMER)侧功能,右边实现的是串并转换器(SERDES)侧功能。在FRAMER侧、SERDES侧分 别完成高速数据的接收与发送。高速数据以16对差分数据线和1对随路差分时钟线组成 的源同步并行总线为传送媒介,同时SERDES侧的SFI4. 1接口为FRAMER侧的SFI4. 1接口
6提供发送源时钟。不管是在FRAMER侧、还是在SERDES侧,都需要完成正确的接收与发送以 SFI4. 1接口传输的高速数据。图1中TXDATA(15:0)表示FRAMER侧发送的16路数据信号。 TXCLK是FRAMER侧的发送随路时钟,TXCLK_SRC是SERDES侧发给FRAMER侧的发送数据的 时钟源。RXDATA (15 0)是FRAMER侧接收到的16路数据信号,RXCLK是FRAMER侧接收到的 随路时钟(接收随路时钟)。收发分别为16路的并行源同步总线结构。REFCLK是本地时 钟电路产生的时钟,用于FPGA内部逻辑用,也可以用来产生输出的TXCLK发送随路时钟。本发明中根据实际的情况,将SFI4. 1接口的信号连接图改进为图4的连接方式。 如图4所示,本发明所述的基于FPGA的SFI4. 1装置中,该装置内用FPGA实现SFI4. 1接 口,通过SFI4. 1接口分别连接FPGA器件(XC5VLX85T)与OTN系统中ASIC芯片,在ASIC芯 片和FPGA器件上共用参考时钟REFCLK,且数据发送方向的发送时钟均直接采用参考时钟 REFCLK,即FPGA器件向ASIC芯片发送数据,或ASIC芯片向FPGA器件发送数据时,在两端 的SFI4. 1都以参考时钟REFCLK作为发送时钟进行数据发送,不需要从对端引入发送时钟, 接收方向的接收时钟则直接采用随路时钟处理。从图4中可以看到,用FPGA实现的SFI4. 1接口包括源同步接口的发送方向模块 和源同步接口的接收方向模块。所述源同步接口的发送方向模块,用于实现FPGA内部上一级处理模块输入的64 路156. 83Mb/s的并行数据到16路627. 33Mb/s的并行差分数据输出的转换,同时发送出与 数据随路的627. 33M差分时钟;图4中,DATA[63:0]为FPGA内部上一级处理模块输入的的 64路并行数据,DATA_TX_P[15:0]、DATA_TX_N[15:0]为转换后发送出的16路并行差分数 据,CL0CK_TX_P、CL0CK_TX_N*发送的随路差分时钟,具体实现框图如图8所示。所述源同 步接口的发送方向模块采用图8所示结构框图实现源同步数据的发送输出,根据实际系统 要求,该发送功能实现的是SFI4. 1接口中FRAMER侧的发送功能。所述源同步接口的接收方向模块,通过动态的调整随路差分时钟CL0CK_RX_P、 CL0CK_RX_N输入后的相位,采用ISERDES实现外部输入的16路627. 33Mb/s并行差分数据 到64路156. 83Mb/s并行数据的转换,得到经过源同步接收处理后的64路并行数据;图4 中,DATA_RX_P[15:0]、DATA_RX_N[15:0]为外部输入的 16 路并行差分数据,CL0CK_RX_P、 CL0CK_RX_N为外部输入的随路差分时钟,DATA_FR0M_ISERDES[63:0]为经过源同步接收处 理后得到的64路并行数据,具体实现框图如图5。图2是基于图4所示连接方式,发送端的信号图。输出的多路差分数据的有效宽 度越宽,则输出的信号质量越高。理想情况下,输出差分时钟正端的下降沿处于输出差分数 据的正中间。其中CL0CK_TX_P是发送差分时钟的正端。CL0CK_TX_N是发送差分时钟的负 端。DATA_TX_P、DATA_TX_^g示发送的差分数据。Tcqjnin,Tcqjnax定义了发送数据相对 于发送差分时钟的无效宽度,Tcq_min, Tcq_max两个参数最大为200ps。图3是基于图4所示连接方式,接收端的信号图。输入的多路数据的有效宽度越 宽,则输入的信号质量越好。理想情况下,输入时钟的上升沿处于输入数据的正中间。其 中CL0CK_RX_P是接收差分时钟的正端,CL0CK_RX_N是接收差分时钟的负端。DATA_RX_P、 DATA_RX_N指示接收的差分数据。Ts,Th定义了接收数据相对于接收差分时钟的有效宽度, Ts、Th两个参数最小为300ps。源同步接口的发送方向模块的具体实现框图如图8所示,描述了并行差分数据和随路差分时钟的输出过程。图8中,FPGA内部上一级处理模块输入的64路并行数据 DATA[63:0],通过16个输出串行器0SERDES输出16路并行数据:DATA_TX[15:0];然后通 过16个增强型差分输出驱动器0BUFDS_LVDSEXT_25输出16路并行差分数据对DATA_TX_ P[15:0]、DATA_TX_N[15:0];16个增强型差分输出驱动器0BUFDS_LVDSEXT_25与16个输出串行器0SERDES 一一对应;16路并行数据DATA_TX[15:0]通过增强型差分输出驱动器0BUFDS_LVDSEXT_25 驱动后差分输出,成为 16 对差分数据DATA_TX_P WO]、DATA_TX_N
、DATA_TX_P
、 DATA_TX_N
、......、DATA_TX_P[15]、DATA_TX_N[15]。参考时钟REFCLK分别送入一个时钟驱动器BUFR和一个时钟驱动器BUFI0,时钟 驱动器BUFIO用于驱动位于输入输出端口附近的专用时钟布线资源,送出高质量的时钟资 源,送出的时钟资源到达输入输出端口处的各种处理组件的时钟输入端。时钟驱动器BUFR 用于驱动区域的时钟布线资源,同时时钟驱动器BUFR根据参数对输入的时钟进行分频输 出,可选择的分频因子为1、2、3、4、5、6、7、8。本系统设计中选择分频因子4来进行输入时钟 的4分频,BUFR(/4)的括号中的“/4”即表示对输入时钟进行4分频输出。时钟驱动器BUFIO输出一路高速串行时钟CLK到双数据速率输出ODDR的时钟输 入端。双数据速率输出ODDR的输入端D1、D2为固定逻辑电平,本系统中采用Dl输入高逻辑 电平,D2输入低逻辑电平。如果将D1、D2输入相反的逻辑,则可以在双数据速率输出ODDR 的输出端Q输出相移180度的时钟。双数据速率输出ODDR的输出端Q经增强型差分输出 驱动器 0BUFDS_LVDSEXT_25 输出一路差分随路时钟CL0CK_TX_P、CL0CK_TX_N。时钟驱动器BUFIO同时输出一路高速串行时钟TXCLK到每个输出串行器0SERDES 的时钟输入端,作为0SERDES实现并串转换的串行时钟。时钟驱动器BUFR (/4)输出一路分频后的并行时钟TXCLKDIV给每个输出串行器 0SERDES的并行时钟输入端,作为0SERDES实现并串转换的并行时钟。综上所述,输入的64路并行数据DATA[63:0]由XILINX的Virtex-5系列FPGA的 0SERDES进行4 1的并串变换,随后通过增强型差分缓冲器0BUFDS_LVDSEXT_25直接输
出ο随路时钟的输出,在设计中采用ODDR进行输出路径控制,可以达到和0SERDES — 致的路径延时。由于设计中利用Virtex-5器件内的专用时钟资源,BUFIO驱动专用的IO时钟线 资源,BUFR驱动局部时钟布线资源,从而使得处理时钟的偏斜(SKEW)很小;同时控制输出 的数据和时钟路径,这样可以按照框图8方便的设计SFI4. 1发方向的源同步接口,输出图 2所示的时钟和数据信号。在实际硬件上采用示波器观察输出的数据和时钟波形,如图10所示,可以看到实 际输出和图2所示是一致的。图10是设计的SFI4. 1接口往ASIC发送的源同步时钟和一 路数据的示波器测试图。通过两个差分探头,分别观察时钟和一路数据,得到的波形相对关 系,可以看到,时钟信号下降沿在数据眼图信号的中央部位。图10给出了 FPGA发送的源同 步接口的时钟与数据信号。发送端处理时钟抖动220ps ;处理时钟的SKEW105ps ;发送端对 于-1等级的FPGA,0SERDES的数据输出在时钟沿后0. 61ns, ODDR的数据输出在时钟沿后 0. 58ns。0SERDES与ODDR的输出差异为30ps ;这样输出的时钟数据之间的差异大概355ps,对于周期为1.607ns的0DU2信号,考虑对端接口的接收损失850ps,约有400ps的发送余 量。如果考虑200ps的对端接收余量,则发送的接口可以工作在700Mb/s,同时对端也可以 正确接收。在设计中用到了 0SERDES、0BUFDS—LVDSEXT_25、0DDR、BUFR、BUFIO等功能组件。 这些功能单元在FPGA中的具体描述为 //0SERDES 输出串行器 //Virtex-4/5 0SERDES# ( DATA_RATE_0Q(
.DATA_RATE_TQ(〃 DDR" ),//指定苏剧谏率〃 DDR",“ SDR",或〃 BUF' .DATA_WIDTH(4), .INIT_0Q(1,b0), .INIT_TQ(1, b0), .SERDES_M0DE("
DDR" ),//指定数据速率"DDR〃或"SDR" DDR" ),//指定苏剧速率〃 DDR",“ SDR",或' Il指定数据宽度 Il寄存器初始输出值 //寄存器初始输出值 MASTER" ),//设置 SERDES 模式
指定输出值 指定输出值
7指定并串转换的宽度
.SRVAL_0Q(1,b0),// .SRVAL_TQ(1,b0),// .TRISTATE_WIDTH(4), )0SERDES_inst (
.OQ(OQ), //1-bit data path output .SHIFT0UT1(SHIFT0UT1),//1-bit data expansion output .SHIFT0UT2(SHIFT0UT2), //1-bit data expansion output .TQ(TQ), //1-bit 3-state control output .CLK(CLK),//1-bit clock input CLKDIV(CLKDIV),//1-bit divided clock input .Dl(Dl), //1-bit parallel data input .D2(D2), //1-bit parallel data input .D3(D3), //1-bit parallel data input .D4(D4), //1-bit parallel data input .D5(D5), //1-bit parallel data input .D6(D6), //1-bit parallel data input .OCE(OCE), //1-bit clock enable input .REV(T bO), //Must be tied to logic zero .SHIFTIN1(SHIFTIN1),//1-bit data expansion input .SHIFTIN2(SHIFTIN2), //1-bit data expansion input SR(SR),//1--bitset/reset input
.Tl(Tl),//1--bitparallel3-stateinput
T2(T2),//1--bitparallel3-stateinput
T3(T3),//1--bitparallel3-stateinput
T4 (T4),//1--bitparallel3-stateinput
TCE (TCE)Vi-bit3-statesignal clock enable input
9
);//End of 0SERDES_inst instantiation采用OSERDES可以将低速率的并行数据转变成高速的串行数据。由于每路数据在 内部资源OSERDES的使用上是完全对等的,同时高速输入引脚的时钟SKEW又很小,这样就 可以保证通过OSERDES后输出的数据之间的SKEW会很小。//0BUFDS_LVDSEXT_25 增强型差分输出缓冲器//Virtex-II/II-Pro/4/5, Spartan_3/3E/3A0BUFDS_LVDSEXT_25# (. I0STANDARD( “ DEFAULT “ )//Specify the output I/O standard)OBUFDS_ LVDSEXT_25_inst(.0(0),//差分P端输出. OB (OB),H 差分 N 端输出.1(1)//输入信号);//End of 0BUFDS_LVDSEXT_25_inst instantiation通过0BUFDS_LVDSEXT_25可以将要输出的信号按SFI4. 1要求的电平输出,满足接 口标准的要求。//ODDR 双数据速率输出//and Clock Enable.//Virtex-4/50DDR# (. DDR_CLK_EDGE(〃 0PP0SITE_EDGE〃),//时钟沿选择. INIT(1,b0),//输出初始值. SRTYPE(“ SYNC" )//复位方式)0DDR_inst(. Q(Q), //1-bit DDR output. C(C),//1-bit clock input. CE(CE), //1-bit clock enable input. Dl(Dl), //1-bit data input (positive edge). D2(D2), //1-bit data input (negative edge). R(R), //1-bit reset.S(S)//1-bit set);//End of 0DDR_inst instantiation通过采用ODDR可以将时钟输出通路和数据输出通路的延时差异减小到很小, OSERDES的数据输出在时钟沿后0. 61ns, ODDR的数据输出在时钟沿后0. 58ns,差异30ps。//BUFIO 区域时钟缓冲器//Virtex-4/5BUFIO BUFI0_inst (
.0(0),//时钟输出.1(1)//时钟输入);//End of BUFI0_inst instantiation通过BUFIO元件可以利用FPGA的专用IO时钟线资源,使各条时钟扇出的路径 SKEW很小,这样可以得到局部时钟域内很好的时序效果,增加接收和发送的时序余量。//BUFR 区域时钟缓冲器//Virtex-4/5BUFR# (. B U F R _ D I V I D E ( “ BYPASS “ ),/ / 分 频 系 数〃 BYPASS",“ 1〃,“ 2",“ 3〃,“ 4〃,“ 5〃,“ 6〃,“ 7〃,“ 8〃. SIM_DEVICE(" VIRTEX5“ )//指定器件,“VIRTEX4" or" VIRTEX5“)BUFR_inst(. 0(0), //Clock buffer output. CE(CE), //Clock enable input. CLR(CLR), //Clock buffer reset input.1(1)//Clock buffer input);//End of BUFR_inst instantiation该区域时钟缓冲器可以实现从BUFIO来的时钟的分频,同时利用区域内的时钟布 线资源。提高SFI4. 1输出接口的性能。源同步接口的接收方向模块的具体实现框图如图5所示,在采用Virtex-5的FPGA 实现SFI4. 1的接收接口时,采用框图5所示的结构。图5是源同步接口接收方向的实现框 图,描述了从信号的输入,到通过状态机调整时钟沿到数据正中央正确采样数据的实现框 图。图中 DATA_RX_P
、DATA_RX_N
是第 1 路并行差分数据,DATA_RX_P
、DATA_ RX_N
是第2路并行差分数据,依次类推,DATA_RX_P[15]、DATA_RX_N[15]是第16路并 行差分数据,此即为外部输入的16路并行差分数据DATA_RX_P[15:0]、DATA_RX_N[15:0]; CL0CK_RX_P、CL0CK_RX_N是输入的差分时钟,此即为外部输入的随路差分时钟。IBUFDS_ LVDS_25指示的是FPGA内部的差分输入缓冲器。ISERDES是FPGA内部的高速串并转换器。 RXCLK是ISERDES需要的高速串行处理时钟,RXCLKDIV是ISERDES需要的并行处理时钟。 BUFIO用于高速时钟驱动,BUFR用来将高速时钟4分频为并行处理时钟。I0DELAY是FPGA 器件内的可编程延时调整单元,通过DEC、INC端对延时进行控制。DATA_FR0M_ISERDES是 通过串并变化及对齐后的并行数据。16路差分数据(并行差分数据)DATA_RX_P[15:0]、DATA_RX_N[15 0]分别成对的 送入一个FPGA内部的差分输入缓冲器IBUFDS_LVDS_25,再经过与差分输入缓冲器IBUFDS_ LVDS_25 一一对应的FPGA内部的高速串并转换器ISERDES后,通过串并变化及对齐后合路 为并行数据 DATA_FR0M_I SERDES ;输入的差分时钟CL0CK_RX_P、CL0CK_RX_N经过同一个FPGA内部的差分输入缓冲器IBUFDS_LVDS_25后,一路送入FPGA器件内的可编程延时调整单元I0DELAY,另一路送入 一个FPGA内部的高速串并转换器ISERDES得到CL0CK_RX_0UT时钟信号,可编程延时调整单元I0DELAY的输出分为两路,一路经过用于高速时钟驱动的时 钟驱动器BUFIO为高速串并转换器ISERDES提供高速串行处理时钟RXCLK,另一路经过时钟 驱动器BUFR进行4分频后为高速串并转换器ISERDES提供并行处理时钟RXCLKDIV,CL0CK_RX_0UT时钟信号经过时钟对齐数据状态机处理后,输出一路TRAINING_ DONE信号,且同时输出DEC、INC信号用于对可编程延时调整单元I0DELAY进行延时控制。输入到FPGA管脚的时钟和数据信号关系如图3,在实际设计中,输入的时钟和数 据信号关系如图9所示,理想情况是时钟的上升沿对着数据的正中央。图9给出了用示 波器的差分探头观察ASIC送过来的源同步数据和时钟,从图看时钟上升沿位于数据的中 央,对于FPGA接收这一数据信号,由于FPGA内部ISERDES之间存在着时钟取样差异,最大 450ps ;处理时钟抖动IOOps ;处理时钟的SKEW105ps ;IODELAY延迟时钟的量化误差75ps ; 这样就会损失掉730ps的取样余量。如果考虑实际数据从ASIC发送到达FPGA管脚的误 差350ps,这样接收模块工作时的时序余量就是数据的周期减掉1080ps,对于0DU2信号来 说,信号周期为1.607ns,除去各种影响后实际的采样余量大概为527ps。这一接收接口从 分析看如果要求数据的取样余量为350ps,考虑到温度漂移,则SFI4. 1的收模块可以正确 接收700Mb/s的数据。在SFI4. 1接收方向的源同步接收接口中应用了 IBUFDS_LVDS_25、 ISERDES、I0DELAY等XILINX组件,关键组件的具体描述如下
0148]"ISERDES_NODELAY 输入解串器
0149]//Virtex-5
0150]ISERDES_NODELAY#(
0151]· BITSLIP_ENABLE (“ FALSE “ ),//BITSLIP 方式选择
0152].DATA_RATE(〃 DDR" ),//指定数据速率
0153]. DATA_WIDTH (4),// 指定数据宽度
0154]· INTERFACE_TYPE (“ MEMORY “ ),// 接口 类型选择
0155]. NUM_CE⑵,//时钟使能的个数
0156]. SERDES_M0DE (“ MASTER “ ) // 设置 SERDES 工作模式
0157])ISERDES_NODELAY_inst(
0158].Ql(Ql),//1-bit registered SERDES output
0159]· Q2(Q2),//1-bit registered SERDES output
0160]. Q3(Q3), //1-bit registered SERDES output
0161]. Q4(Q4),//1-bit registered SERDES output
0162]· Q5(Q5),//1-bit registered SERDES output
0163]. Q6(Q6),//1-bit registered SERDES output
0164]· SHIFT0UT1(SHIFT0UT1),//1-bit cascade Master/Slave output
0165]. SHIFT0UT2(SHIFT0UT2), //1-bit cascade Master/Slave output
0166]. BITSLIP(BITSLIP),//1-bit Bitslip enable input
0167].CEl(CEl),//1-bit clock enable input
0168]· CE2(CE2),//1-bit clock enable input
. CLK(CLK), //1-bit master clock input· CLKB(CLKB),//1-bit secondary clock input for DATA_RATE = DDR. CLKDIV(CLKDIV),//1-bit divided clock input. D(D), //1-bit data input, connects to IODELAY or input buffer· OCLK(OCLK),//1-bit fast output clock input· RST(RST),//1-bit asynchronous reset input. SHIFTIN1(SHIFTIN1), //1-bit cascade Master/Slave input. SHIFTIN2(SHIFTIN2)//1-bit cascade Master/Slave input);//End of ISERDES_N0DELAY_inst instantiation在SFI4. 1的接收方向模块中,采用图5所示功能框图实现SFI4. 1的接收接口,输 入的16路差分数据信号和1路差分时钟信号先进入FPGA内的差分输入缓冲器变成单端信 号,然后进入到相应的ISERDES中,进行1 4串并降速处理,每个ISERDES都需要一个和 数据速率匹配的时钟和一个经过四分频后的时钟,对于这两个时钟的生成,设计中采用了 XILINX XC5VLX85T FPGA的内部资源BUFI0、BUFR。BUFIO驱动专用的10时钟线资源,BUFR 驱动局部时钟布线资源,这样可以使到各个ISERDES的时钟之间的SKEW尽量小。由于数据 进入ISERDES的数据节点和时钟进入ISERDES的时钟节点的延时不确定,因此在设计中采 用状态机控制I0DELAY的延时,调整输入到ISERDES时钟输入端的时钟相位,使ISERDES资 源中最终的接收时钟上升沿正对输入数据的中间,满足高速数据的接收锁存要求,最大的 提高系统的可靠性。从接收方向的实现框图(图5)可以看出对于SFI4. 1接收接口的控制部分设计主 要是需要设计调整I0DELAY的延时部分的逻辑,通过动态的调整I0DELAY的延时,使时钟工 作在最优的位置。为了设计的可靠性,设计中应使到达FPGA输入管脚的数据和时钟之间的 SKEW尽量的小,这样可以认为时钟信号的上升沿正好处于数据眼图的正中间。以这个时钟 作为一个伪数据通道,将它进行串并变换,得到4位的并行数据。通过调整I0DELAY的延时, 这4位并行数据会发生改变,通过分析4位并行数据的改变来确定I0DELAY的延时,确保通 过I0DELAY延时后的时钟正好处于ISERDES内锁存数据的正中间。图6给出了确定延时大小的状态图。该状态图的机理是根据采集到的参考时钟数 据的值来判断实际处理时钟上升沿的具体位置,对于采集到的数据与时钟沿的关系如图7。 实际应用中ASIC芯片输出的源同步接口的时钟是上升沿对应于数据的正中央的,因此需 要搜索时钟的位置,使FPGA内部调整后的时钟上升沿正好位于输入数据的正中央,也就是 使在ISERDES单元中的实际处理时钟位于输入时钟由低到高的上升沿处。图7中,ISERDES_RXCLK(1)表示到达ISERDES的时钟处于数据的后半部,相应的 在将CL0CK_RX_P/N作为伪数据输入的ISERDES输出为4比特1111。ISERDES_RXCLK(2)表示到达ISERDES的时钟处于数据的变化沿处而出现输出不 稳,相应的在将CL0CK_RX_P/N作为伪数据输入的ISERDES输出会因为数据、时钟的抖动而 出现不稳定的输出,伪时钟数据是由输出稳定的4比特1111后开始输出不稳定的4比特数 据的。I SERDES_RXCLK (3)表示到达ISERDES的时钟处于数据的前半部,相应的在将CL0CK_RX_P/N作为伪数据输入的ISERDES输出为4比特0000。ISERDES_RXCLK(4)表示到达ISERDES的时钟处于数据的中间,相应的在将CL0CK_ RX_P/N作为伪数据输入的ISERDES输出会因为时钟的抖动而出现不稳定的输出,它是由输 出稳定的4比特0000后开始输出不稳定的4比特数据的,表示输入到数据ISERDES的时钟 上升沿正好出于数据的中间。状态转移图就是根据输入到ISERDES的数据为伪数据时,判断输出值来调整输入 到ISERDES的时钟,从而使最终得到的输入到ISERDES的时钟正好处于各个ISERDES的输 入数据的中间,达到正确的接收源同步数据。状态机在复位后开始工作,如果接收到的伪数据是4比特0000,则增加I0DELAY 的延迟大约75ps,直到接收到的数据由4比特0000变成其它的4比特数据。这表明了目 前的处理时钟正好处在输入时钟的上升沿附近,也就近似于数据的正中央。如果工作后接 收到的数据是4比特1111,则增加I0DELAY或者是减小I0DELAY的延迟,实际设计中直接 采用增加I0DELAY的延迟,先将处理时钟移到输入时钟的下降沿附近,然后继续后移到输 入时钟信号的上升沿附近,也就是近似于数据的正中央。如果刚开始工作时,接收到的伪数 据不稳,则增加I0DELAY,让接收的数据采样稳定后,按上述的两种情况进行处理,搜索到数 据的近似正中央。由于处理时钟是按大约75ps的间隔变化,所以最终的处理时钟在数据的 正中央正负75ps处。根据输入的源同步数据和时钟的关系,通过将输入时钟作为伪输入数 据,动态的调整实际处理时钟的上升沿的位置,最终使取样时钟的上升沿位于输入数据的 中央,保证了 SFI4. 1的接收数据的准确性。本发明所述的基于FPGA的SFI4. 1装置,对于接收方向采用FPGA器件内部资源 ISERDES (输入解串器),同时采用状态机来查询数据正中央的位置,通过I0DELAY(输入输 出延时器)来调整采样时钟的位置,控制采样时钟的上升沿位于输入数据的中央。对于发 送方向,采用0SERDES(输出串行器)、ODDR(双数据速率输出)资源,保证输出的高速源同 步数据和时钟满足对端ASIC的SFI4. 1接口的接收要求。通过在FPGA内部对SFI4. 1接口 的收发进行设计,从而完成了一个完整的SFI4. 1接口,这样就可以对接收后的数据进行随 心所欲的处理,同理可以对发送前的数据进行系统所需的处理。增强了整个系统的灵活性, 同时可以对各种采用SFI4. 1接口的IOG信号进行处理。
权利要求
一种基于FPGA的SFI4.1装置,其特征在于该装置内用FPGA实现SFI4.1接口,通过SFI4.1接口分别连接FPGA器件与OTN系统中ASIC芯片,在ASIC芯片和FPGA器件上共用参考时钟REFCLK,且数据发送方向的发送时钟均直接采用参考时钟REFCLK,接收方向的接收时钟则直接采用随路时钟处理。
2.如权利要求1所述基于FPGA的SFI4.1装置,其特征在于所述用FPGA实现的 SFI4. 1接口包括源同步接口的发送方向模块和源同步接口的接收方向模块;所述源同步接口的发送方向模块,用于实现FPGA内部上一级处理模块输入的64路 156. 83Mb/s的并行数据到16路627. 33Mb/s的并行差分数据输出的转换,同时发送出与数 据随路的627. 33M差分时钟;所述源同步接口的接收方向模块,通过动态的调整随路差分时钟CL0CK_RX_P、CLOCK, RX_N输入后的相位,采用ISERDES实现外部输入的16路627. 33Mb/s并行差分数据到64路 156. 83Mb/s并行数据的转换,得到经过源同步接收处理后的64路并行数据。
3.如权利要求2所述基于FPGA的SFI4.1装置,其特征在于FPGA内部上一级处理模 块输入的64路并行数据DATA[63:0],通过16个输出串行器0SERDES输出16路并行数据 DATA_TX[15:0];然后通过16个增强型差分输出驱动器0BUFDS_LVDSEXT_25输出16路并行 差分数据对DATA_TX_P [15 0]、DATA_TX_N [ 15 0];参考时钟REFCLK分别送入一个时钟驱动器BUFR和一个时钟驱动器BUFIO ; 时钟驱动器BUFIO用于驱动位于输入输出端口附近的专用时钟布线资源,送出高质量 的时钟资源,送出的时钟资源到达输入输出端口处的各种处理组件的时钟输入端;时钟驱动器BUFR用于驱动区域的时钟布线资源,同时时钟驱动器BUFR根据参数对输 入的时钟进行分频输出,分频因子为4 ;时钟驱动器BUFIO输出一路高速串行时钟CLK到双数据速率输出ODDR的时钟输入端, 双数据速率输出ODDR的输入端D1、D2为固定逻辑电平;双数据速率输出ODDR的输出端Q经增强型差分输出驱动器0BUFDS_LVDSEXT_25输出 一路差分随路时钟CL0CK_TX_P、CL0CK_TX_N ;时钟驱动器BUFIO同时输出一路高速串行时钟TXCLK到每个输出串行器0SERDES的时 钟输入端,作为0SERDES实现并串转换的串行时钟;时钟驱动器BUFR输出一路分频后的并行时钟TXCLKDIV给每个输出串行器0SERDES的 并行时钟输入端,作为0SERDES实现并串转换的并行时钟。
4.如权利要求2所述基于FPGA的SFI4.1装置,其特征在于16路差分数据DATA_ RX_P [15:0], DATA_RX_N[15:0]分别成对的送入一个FPGA内部的差分输入缓冲器IBUFDS_ LVDS_25,再经过与差分输入缓冲器IBUFDS_LVDS_25 —一对应的FPGA内部的高速串并转换 器ISERDES后,通过串并变化及对齐后合路为并行数据DATA_FR0M_ISERDES ;输入的差分时钟CL0CK_RX_P、CL0CK_RX_N经过同一个FPGA内部的差分输入缓冲器 IBUFDS_LVDS_25后,一路送入FPGA器件内的可编程延时调整单元IODELAY,另一路送入一 个FPGA内部的高速串并转换器ISERDES得到CL0CK_RX_0UT时钟信号;可编程延时调整单元I0DELAY的输出分为两路,一路经过用于高速时钟驱动的时钟驱 动器BUFIO为高速串并转换器ISERDES提供高速串行处理时钟RXCLK,另一路经过时钟驱动 器BUFR进行4分频后为高速串并转换器ISERDES提供并行处理时钟RXCLKDIV ;CL0CK_RX_0UT时钟信号经过时钟对齐数据状态机处理后,输出一路TRAINING_D0NE信 号,且同时输出DEC、INC信号用于对可编程延时调整单元I0DELAY进行延时控制。
全文摘要
本发明涉及一种基于FPGA的SFI4.1装置,该装置内用FPGA实现SFI4.1接口,通过SFI4.1接口分别连接FPGA器件与OTN系统中ASIC芯片,在ASIC芯片和FPGA器件上共用参考时钟REFCLK,且数据发送方向的发送时钟均直接采用参考时钟REFCLK,接收方向的接收时钟则直接采用随路时钟处理。本发明实现了高速源同步数据在FPGA器件内部的正确接收与发送,将OIF提出的串并行转换器与成帧器间并行接口(SFI4.1)采用FPGA器件的资源实现,便于在FPGA器件内部对采用SFI4.1传输的10G源同步并行总线信号进行处理,实际使用中增强了系统处理ODU2信号的灵活性,进一步满足了设备的实际要求,同时为今后的源同步接口设计提供技术积累。
文档编号H04L7/04GK101951313SQ20101027497
公开日2011年1月19日 申请日期2010年9月8日 优先权日2010年9月8日
发明者钟永波, 陈飞月 申请人:烽火通信科技股份有限公司