使用OSERDES实现高速数据输出接口
OSERDES是Virtex-6系列FPGA提供的高级SelectIO资源,是专用的串行器,可以实现高速的并串转换。每个OSERDES 模块包括一个用于数据和三态控制的串行器。数据和三态串行器都可以配置成 SDR(Single Data Rate,单倍数据速率)和 DDR 模式。单个OSERDES数据串行化可达 6:1,三态串行化可达 4:1;如使用两个OSERDES进行宽度扩展,则可达到10:1的数据串行化)。OSERDES结构框图如图1所示。
OSERDES模块中的数据并串转换器(Data Parallel-to-Serial Converter)接收来自FPGA内部资源的二到六位并行数据,将数据串行化,然后通过OQ输出将数据送至 IOB(Input Output Block,输入输出单元)。并串转换是按照从低位到高位的顺序进行的,即从D1输入的数据首先由OQ输出。数据并串转换器可工作与SDR和DDR两种模式下。数据速率的转换由CLK和CLKDIV两个时钟控制。CLK是高速串行时钟,CLKDIV是分频并行时钟,CLK和CLKDIV应保证相位对齐。各种工作模式下 CLK 与 CLKDIV 之间的关系如图2所示。
举例来说,DAC工作于1.024GSPS采样率,使用两路时钟速率为256MHz、位宽为14bit的DDR(Double Data Rate,双倍数据速率)差分数据总作为数据输入,两路数据总线分别用于输入第偶数个和第奇数个采样数据。FPGA工作在128MHz时钟,借助OSERDES输出速率为256M位宽为14bit的DDR数据。
由图2可见,FPGA的时钟为128MHz时,要输出速率为256M的DDR信号,需选择4:1的并串转换(图2中第一行),此时CLK为256MHz,CLKDIV为128MHz。由此可设计DAC数据传输接口如图3所示。
DAC数据传输接口并行输入8路数据,每路位宽为14比特,速率为128M,按照奇偶顺序分为两组,每组4路。对于偶数组输入,数据转换模块将4路位宽为14比特的数据转置为14路位宽为4比特的数据,输入14个OSERDES进行并串转换。每个OSERDES均工作于DDR模式,进行4:1的并串转换,输出速率为256M的单端DDR信号。OSERDES的输出经OBUFDS转换为差分信号,14个OSERDES共输出14路差分信号,得到位宽为14比特、速率为256M的DDR数据总线,构成DAC偶数位输入数据总线DB0。对于DAC数据传输接口奇数组输入,经过同样处理,DAC偶数位输入数据总线DB1。