2008年4月
电子器件
ChineseJournalOfElectronDevices
Vol.31 No.2Apr.2008
DesignofMulti2WayHigh2SpeedSerial2to2ParallelConverterBasedonFPGA3
ZHONGJian2feng,HUQing2sheng
3
,SUNYuan
(InstituteofRF2&OE2ICs,SoutheastUniversity,Nanjing210096,China)
Abstract:High2speedserial2to2parallelconverterisimportanttotheFPGAbaseddesign.Usedtobereal2izedusinginternallogicofFPGA,itoccupiesthepreciousresourcesandlimitsthespeedoftheconvertion.Thisresearchpresentsthedesignofhigh2speedserial2to2parallelconverterforanFPGAbasednetworkschedulingverificationplatform,1:8DDRserial2to2parallelconverteranditsrealizationof16wayaredis2cussed.Theresultshowsthattheserial2to2parallelconvertercanrunatthedatarateofupto800Mbit/s.Inaddition,ISERDESdecreasesthecomplexityofdesignandshortenstheperiodofproductdevelopmentandcanmeetthedesignrequirementsverywell.
Keywords:serial2to2parallelconverter;FPGA;Xilinx;ISERDESEEACC:1290B
基于FPGA的多路高速串并转换器设计3
仲建锋,胡庆生3,孙 远
(东南大学射频与光电集成电路研究所,南京210096)
摘 要:高速串并转换器的设计是FPGA设计的一个重要方面,传统设计方法由于采用FPGA的内部逻辑资源来实现,从而
限制了串并转换的速度。该研究以网络交换调度系统的FGPA验证平台中多路高速串并转换器的设计为例,详细阐述了1:8
DDR模式下高速串并转换器的设计方法和16路1:8串并转换器的实现。结果表明,采用XilinxVirtex24的ISERDES设计的
多路串并转换器可以实现800Mbit/s输入信号的串并转换,并且减少了设计复杂度,缩短了开发周期,能满足设计要求。
关键词:串并转换;现场可编程逻辑阵列;Xilinx;ISERDES
中图分类号:TP391 文献标识码:A 文章编号:100529490(2008)0220657204 用现场可编程逻辑器件(FPGA)开发高速系统时常常需要实现高速串并转换,传统的做法是直接利用FPGA的内部逻辑资源设计串并转换器,但这样做往往使得串行时钟的最高频率受FPGA内部资源利用率、布局布线等因素的影响,难以满足设计要求,并最终影响整个系统的性能。随着工艺技术的不断进步与市场需求的日益增加,超大规模、高速、低功耗的新型FPGA不断推出,给高速电路的设计带来了极大的方便[1]。赛灵思(Xilinx)公司在其新产品Virtex24中集成了输入串并转换器(ISERDES)和输出并串转换器(OSERDES),它们是为像DRAM存取等需要高速数据采集的应用而开发的专用模块,能够提供高速的I/O处理能力,不受FPGA内部资源的限制,不占
用系统逻辑资源[2]。
本文以可扩展网络交换调度系统的FPGA验证平台为例,介绍了ISERDES的工作原理与具体应用。本文中的交换调度系统采用4片XilinxVir2tex24FPGA构成验证平台,每片FPGA需要接收高速的16路串行数据并将其转换为8位并行数据后作其它处理,为了实现高速串并转换,同时又不占用芯片内部的逻辑资源,我们用Xilinx的串并转换模块ISERDES方便、快速地实现了高速串并转换。
1 ISERDES的结构与工作原理
ISERDES是Vertex24内部集成的输入串并转换器,支持单倍数据速率(SDR)和双倍数据速率
收稿日期:2007202211
基金项目:国家自然科学基金资助(高性能可扩展网络交换调度系统研究,60472057)
作者简介:仲建锋(19822),男,硕士研究生,研究方向为数字系统设计,通讯系统及芯片设计,ntthblc@163.com;
胡庆生,女,教授,硕士生导师,从事通讯芯片开发研究.
658电 子 器 件第31卷
(DDR)两种模式。这两种模式均可以进行编程操
作,在SDR模式下,可生成2到8bit的任何并行数
据;在DDR模式下,可以实现1bit串行数据到4、6、8及10bit并行数据的转换。当生成数据的位宽大于6时,需要采用主从模式将两个相邻的ISER2DES模块连接在一起。
ISERDES由串并转换单元(SerialtoParallelConverter)、可编程延迟单元(Digitally-ControlledDelayElement,简称IDELAY)、比特偏移模块(bitslipsubmodule)和时钟使能模块(ClockEna2ble)四部分组成,其结构框图如图1所示。
图1 Vertex24的ISERDES结构图
串并转换单元是ISERDES的核心单元,主要
由一组移位寄存器实现串并转换功能。
每个ISERDES中包含一个可编程延迟单元,通过对其编程能够控制并行输出的延迟时间,可用于组合逻辑输入路径、寄存器输入路径或两者的混合路径上。其基本原理是将延迟单元划分为64个循环连接的延迟节拍,延迟时间可以是其中的任何一个节拍。简单地讲就是将这64个节拍编号为1、2、3到64,紧跟在编号为64的延迟节拍后面的是编号为1的节拍,并且每个延迟节拍的延迟时间是固定、精确不变的。根据延迟时间的不同,延迟单元可以工作在零延迟、固定延迟和可变延迟时间等三个模式。使用了延迟单元后,FPGA在接收信号时可以根据需要调整数据相对于时钟的延迟,以便在时钟的上升沿能采到稳定的数据,且这个延迟不受电压、温度等因素的影响。
比特偏移模块用于实现源同步系统中的字同步,若通过位串行接口的总误差超过1位的时间,可在串并转换后采用该模块修正。这样,设计者可以根据网络、通信等常用的训练图形重新安排并行数据进入FPGA的顺序。该模块的操作与CLKDIV时钟同步,每个时钟节拍通过左移或右移操作将接收到的串行数据移位直到并行数据与系统设定的训练图形匹配为止。
时钟使能模块的功能是实现2:1的串并转换器,由分频时钟CLKDIV驱动。它有两个控制端CE1和CE2,当NUM_CE=2时,时钟使能模块工作,且CE1
和CE2均有效。当NUM_CE=1时,只有CE1有效,此时该模块完成通常的时钟使能功能。
ISERDES的主要端口定义如下:
D:串行数据输入。此端口与Virtex24的I/O口相连接,支持多种通用的I/O标准。
CLK、CLKDIV、OCLK:高速时钟、分频时钟和存储器高速时钟输入。CLK时钟用于输入串行数据流;CLKDIV的频率由所要完成的解串器的位宽决定。该时钟驱动串并转换器,延迟单元,比特偏移模块和控制模块;OCLK时钟驱动存储器。
BITSLIP:比特偏移控制。当此端口连接高电平时,完成比特偏移功能。
DLYINC、DLYCE、DLYRST:可编程延迟单元的增减量输入、使能输入和重启控制。共同作用于延迟单元,实现延迟输出功能。
CE1和CE2:时钟使能输入。每个ISERDES模块包括一个时钟使能模块。
SHIFTIN1/SHIFTIN2,SHIFTOUT1/SHIFTOUT2:数据宽度扩大输入、出。扩大字宽度时,需要连接此端口,主ISERDES的SHIFTOUT连接从ISERDES的SHIFTIN。
Q1到Q6:并行数据输出,一个ISERDES模块最多可输出6bit并行数据。如果需要更宽的并行数据,可以将两块相邻的ISERDES连接起来使用[3]。
2 用ISERDES实现1:8串并转换
由于单个ISERDES只能实现1:4的串并转换,当要产生的并行数据位宽大于6时,需要用主从两个ISERDES模块来实现。在XilinxVirtex24的每个I/O片包含两个ISERDES模块和两个OSER2DES模块,如图2所示,只要使这两个ISERDES模块工作在主从模式,并将主模块的SHIFTOUT端口连接到从模块的SHIFTIN端口,就可以使串并转换器分别被扩大到1:10(DDR)与1:8(SDR)。
图2 一个Vertex24的I/O片
本研究中,FPGA需要输入16路高速串行数据
并将其转换为8bit并行数据供FPGA内部的其它资源作后续处理,所以每路串行数据的转换需要将工作在主从模式的两个相邻ISERDES模块连接在一起实现,其连接框图如图3所示。每个1:8的串并转换器的Verilog代码见代码1。
可以看出每个1:8的转换器调用了master和slave两个ISERDES模块,代码中包含了必要的属性设置。因本设计中未使用比特偏移模块,所以将
第2期仲建锋,胡庆生等:基于FPGA的多路高速串并转换器设计659
图3 用主从ISERDES实现1:8转换
BITSLIP_ENABLE属性设为“FALSE”。数据输入
方式为DDR模式,这样可使并行时钟速率降低一半[4],同时使并行输出宽度为8,接口类型为NET2WORKING。延迟功能在本例中不使用,因而延迟类型设为默认值,延迟时间置0。时钟使能模块作为普通时钟控制模块使用,故NUM_CE设为1。主模块的工作模式设为MASTER,其输入数据为串行数据seriData,输出为并行数据paraData[1:6],它的SHIFTOUT端口通过shiftdata1和shiftdata1
与从模块的SHIFTIN相连。从模块的工作模式设为SLAVE,其输出为并行数据paraData[7:8]。
主从两个ISERDES模块的时钟输入均来自Vertex24的I/O时钟缓冲器BUFIO和局部时钟缓冲器BUFR。BUFIO和BUFR是Xilinx在Virtex24中新开发的时钟缓冲模块,它们和时钟I/O(clockcapableI/O)、局部时钟网络(regionclocknets)一起构成局部时钟资源。BUFIO最多可以驱动3个局部时钟网,除此之外它还可以驱动BUFR,但不能驱动FPGA的全局资源如可编程逻辑块(CLB)、块状RAM(BlockRAM)等,因为其作用范围只限于I/O区域。与BUFIO不同,BUFR不仅能驱动最多三个局部时钟网,还能够驱动像CLB、BlockRAM之类的全局布线资源。它具有分频功能,相对于输入时钟可以产生1~8的分频输出,因此,BUFR是理想的跨时钟域的源同步驱动电路,与BUFIO一起可以实现高速串并转换。
代码1:1:8串并转换
ISERDES#( ISERDES#( .BITSLIP_ENABLE(\"FALSE\"), .BITSLIP_ENABLE(\"FALSE\"), .DATA_RATE(\"DDR\"), .DATA_RATE(\"DDR\"), .DATA_WIDTH(8), .DATA_WIDTH(8), .INTERFACE_TYPE(\"NETWORKING\"), .INTERFACE_TYPE(\"NETWORKING\"), .IOBDELAY(\"NONE\"), .IOBDELAY(\"DEFAULT\"), .IOBDELAY_TYPE(\"DEFAULT\"), .IOBDELAY_TYPE(\"DEFAULT\"), .IOBDELAY_VALUE(0), .IOBDELAY_VALUE(0), .NUM_CE(1), .NUM_CE(1), .SERDES_MODE(\"MASTER\") .SRVAL_Q1(1’b0),)master( .SRVAL_Q2(1’b0),.O(), .SRVAL_Q3(1’b0),.Q1(paraData[0]),//12bitregisteredoutput .SRVAL_Q4(1’b0),.Q2(paraData[1]),//12bitregisteredoutput .SERDES_MODE(\"SLAVE\")
)slave(.Q3(paraData[2]),//12bitregisteredoutput
.Q4(paraData[3]),//12bitregisteredoutput .O(),.Q5(paraData[4]),//12bitregisteredoutput .Q1(),.Q6(paraData[5]),//12bitregisteredoutput .Q2(),.SHIFTOUT1(shiftdata1),//12bitcarryoutput .Q3(paraData[6]),.SHIFTOUT2(shiftdata2),//12bitcarryoutput .Q4(paraData[7]),.BITSLIP(1’b0),//12bitBitslipinput .Q5(),.CE1(ce1),//12bitclockenableinput .Q6(),.CE2(1’b1), .SHIFTOUT1(),.CLK(iobclk),//12bitclockinput .SHIFTOUT2(),.CLKDIV(clkdiv),//12bitdividedclockinput .BITSLIP(1’b0),.D(seriData),//12bitserialdatainput .CE1(ce1),.DLYCE(1’b0),//12bitdelaychainenableinput .CE2(1’b1),.DLYINC(1’b0),//12bitdelayinput .CLK(iobclk1),.DLYRST(1’b0),//12bitdelaychainresetinput .CLKDIV(clkdiv),.OCLK(1’b0),//12bithigh2speedclockinput .D(1’b0),.REV(1’b0),//12bitreverseSRinput .DLYCE(1’b0),.SHIFTIN1(1’b0),//12bitcarryinput .DLYINC(1’b0),.SHIFTIN1(1’b0),//12bitcarryinput .DLYRST(1’b0),(下页续) (下页续)
660电 子 器 件第31卷
.SR(reset) //12bitset/resetinput .OCLK(1’b0),
); .REV(1’b0), .SHIFTIN1(shiftdata1), .SHIFTIN2(shiftdata2), .SR(reset),
);
在本文的应用中,BUFIO输入的是FPGA外部
的高速串行时钟clks,其输出iobclk一路送给
ISERDES作为其高速时钟CLK的输入,另一路作为输入送给BUFR以产生分频时钟输出clkdiv,由于采用DDR模式,BUFR的分频值设为4。
由于串行数据的速度较高,本文中的串行数据seriData采用差分输入方式以降低噪声的影响[6],具体做法是调用IBUFGDS实现双到单的转换。当一对差分信号seriData_p和seriData_n送到IBUFGDS[7],输出则为单路信号seriData。相应的代码如下:
IBUFGDS#(.CAPACITANCE(\"DONT_CARE\"),
.DIFF_TERM(\"FALSE\"),//DifferentialTermi2nation(Virtex24,Spartan23E/3A)
.IOSTANDARD(\"DEFAULT\")//Specifythein2putI/Ostandard )IBUFGDS_inst0(
.O(seriDataIn),//Bufferoutput
.I(seriDataIn_p),//Diff_pbufferinput(connect
directlytotop2levelport)
.IB(seriDataIn_n)//Diff_nbufferinput(connectdirectlytotop2levelport));
3 16路1:8串并转换器设计在ISE8.2和ModelSimSE6.1的环境下,我们基于Virtex24XCVLX40F668设计了16路1:8串并转换器,其仿真结果如图4所示(为了减少图片大小,图4仅列出6路串并信号)。其中,串行时钟clk_s的频率为400MHz,经BFUR的四分频后,clk_p频率为100MHz,按照DDR方式传送数据,则单路串行数据的速率可达到800Mbit/s[8]。从图4中可以看出,clk_s的上升沿和下降沿均采样串行数据seriData,clk_p有效后,再经过2个clk_s周期的延迟,8位的并行数据paraData输出。从图4中的数据可以看出,该设计实现了串并转换功能。
图4 16路1:8串并转换器的仿真波形
在FPGA设计中,输入输出管脚的锁定是重要
的一环,一个合理的管脚分配方案不仅可以降低布线复杂度,而且可以减少布线的延迟,并有利于PCB板的制作。XCVLX40F668总共包含668个可调用IO引脚,分布在10个IOBank上。本文中的串行数据采用LVDS标准传输,在Virtex24中,支持LVDS标准的电源电压为2.5V,所以应尽可能将这16对串行数据输入锁定在同一个bank中以方便电源供电。
经过FPGA在片调试,逻辑分析仪的结果显示用Vertex24FF668210速度等级以上的芯片完全可以实现800Mbit/s输入信号的串并转换。
FPGA的特点及其所含的IP核,不仅能够最大限度的提高芯片性能,而且缩短了开发周期,减少了设计复杂度,有益于高速FPGA的开发。
参考文献:
[1] 韩江涛,胡庆生,孙远.基于TPS54610的FPGA供电模块设
计[J].电子设计应用,2006,10(114).[2] Virtex24UserGuide[S].XilinxInc,October6,2006(351).[3] Virtex24FamiliyOverview[S].XilinxInc,October10,2006.[4] 孙灯亮,DDR1&2&3信号完整性测试分析技术探析[J].国外
电子测量技术,2006,9(75).[5] 王诚,薛小刚,钟信潮.FPGA/CPLD设计工具XilinxISE使用
详解[M].北京:人民邮电出版社,2005.[6] StephenKempainen.LVDS技术的应用[J].电子产品世界,
2002,(Z2).[7] 宋正勋,谭宝华,低压差分信号技术[J].长春光学精密机械学
院学报,2000,6(33).[8] Virtex24PCBDesigner’sGuide[S].XilinxInc,2004,Septem2
ber9(14).
4 结论
本文介绍了基于XilinxVertex24的多路高速串并转换器的设计,这种设计方法充分利用了新型
因篇幅问题不能全部显示,请点此查看更多更全内容