资源描述
编 号:
版 本:V0.2
页 数:共 页
密 级:
SERDES FPGA设计手册
更改记录
版本
拟制/更改
审核
批准
生效日期
更改内容
V0.1
兜福
2013.7.19
创建文档
V0.2
兜福
2013.9.11
添加补充了OSERDES部分,未完待续;
注:作者兜福邮箱:zouxingyu705@,多多交流,共同进步。
目录
SERDES FPGA设计手册 1
目录 3
1 目的 6
2 范围 6
3 术语 6
4 SERDES基础知识 6
5 SERDES应用指南 6
5.1 ISERDES 7
5.1.1 ISERDES基元 7
5.1.2 ISERDES基元的时钟解决方案 10
5.2 OSERDES 11
5.2.1 OSERDES组成功能模块 12
5.2.2 OSERDES基元 13
5.2.3 OSERDES基元的时钟解决方案 15
6 SERDES应用指南 15
6.1 ISERDES设计 15
6.1.1 单个ISERDES单元设计(SDR) 15
6.1.1.1ISERDES配置参数 15
6.1.1.2设计思想 18
6.1.1.3仿真结果 19
6.1.1.4ISERDES数据时序 20
6.1.1.4.1ISERDES输入数据时序 20
6.1.1.4.1ISERDES输出数据时序 21
6.1.2 单个ISERDES单元设计(DDR) 22
6.1.2.1ISERDES配置参数 22
6.1.2.2设计思想 22
6.1.2.3仿真结果 22
6.1.3 ISERDES宽度扩展 22
6.1.3.1设计实例 23
6.1.3.2仿真结果 26
6.2 OSERDES设计 26
6.2.1 单个OSERDES单元设计(SDR) 26
6.2.1.1OSERDES配置参数 26
6.2.1.2设计思想 28
6.2.1.3仿真结果 29
6.2.1.1OSERDES基元SDR模式时序 29
6.2.2 单个OSERDES单元设计(DDR) 29
6.2.2.1OSERDES配置参数 30
6.2.2.2设计思想 30
6.2.2.3仿真结果 30
6.2.2.1OSERDES基元SDR模式时序 31
6.2.3 OSERDES宽度扩展 31
6.2.3.1设计实例 31
6.2.3.1仿真结果 33
1 目的
为了学习xilinx serdes原语的使用,以及交流学习经验,在工程项目中方便的应用SERDES进行设计,故编写此文档。
2 范围
本文档所介绍的SERDES原语内容,适用于Xilinx V5系列器件。
3 术语
ISERDES:串并转换器。
OSERDES:并串转换器。
4 SERDES基础知识
待补充。
5 SERDES应用指南
5.1 ISERDES
5.1.1 ISERDES基元
图 1 ISERDES基元
图 2 ISERDES内部组成单元结构框图
图 3 当使用Memory模型是ISERDES内部的连接情况
表 1 ISERDES端口列表
Port Name
Type
Width
Description
Q1-Q6
Output
1(each)
寄存器输出
SHIFTOUT1
Output
1
进位输出,用于数据宽度的扩展。连接到从IOB的SHIFIN1。
SHIFTOUT2
Output
1
进位输出,用于数据宽度的扩展。连接到从IOB的SHIFIN2。
BITSLIP
Input
1
启动bitslip操作
CE1
CE2
Input
1(each)
时钟使能输入
CLK
Input
1
高速时钟输入,对串行输入数据流进行时钟控制。
CLKB
Input
1
高速时钟第二输入,对串行输入的数据流进行时钟控制。总是连接~CLK。
CLKDIV
Input
1
时钟CLK的分频时钟,取决于解串的数据宽度。
控制着延迟单元、解串数据、Bitslip子模块和CE单元进行时钟控制。
D
Input
1
来自IOB的串行输入数据。
OCLK
Input
1
用于存储器应用的高速时钟输入,该信号只有在INTERFACE_TYPE属性配置为("MEMORY")时,才可用;配置为”NETWORKING”时,直接赋0值即可。
SHIFTIN1
Input
1
用于数据扩展的进位输入,连接到主IOB的SHIFTOUT1。
SHIFTIN2
Input
1
用于数据扩展的进位输入,连接到主IOB的SHIFTOUT2。
RST
Input
1
异步复位输入,高有效。
表 2 ISERDES属性列表
Atrribute Name
Eescription
Value
Default Value
BITSLIP_ENABLE
允许用户使用或者忽略bitslip子模块。该属性在INTERFACE_TYPE属性配置为MEMORY时必须配置为FALSE,在配置为NETWORKING时必须配置为TURE。
字符串:TURE或FALSE
FALSE
DATA_RATE
允许将输入的数据流作为”DDR”或者”SDR”来进行处理。
字符串:DDR或SDR
DDR
DATA_WIDTH
定义串并转换的宽度,合法的值取决于DATA_RATE的配置(SDR或者DDR)。
如果 DATA_RATE = DDR,则此值限制为 4、6、8 或 10。如果DATA_RATE = SDR,则此值限制为 2、3、4、5、6、7 或
8。
4
INTERFACE_TYPE
选择ISERDES的使用说明
字符串:MEMORY或NETWORKING
MEMORY
NUM_CE
定义时钟使能数
整数:1或2
2
SERDES_MODE
当使用宽度扩展时定义SERDES是主模块,还是从模块。
字符串:MASTER或SLAVE。
MASTER
表 3 推荐的数据宽度配置
5.1.2 ISERDES基元的时钟解决方案
CLK和CLKDIV的相位关系,在串并转换的过程中是非常重要的。CLK和CLKDIV的相位关系应该是理想对齐的。FPGA中存在这样的时钟模块单元来设计满足CLK和CLKDIV的相位关系。
在networking模式下,解决时钟相位关系的唯一办法是:
• CLK driven by BUFIO, CLKDIV driven by BUFR
• CLK driven by DCM, CLKDIV driven by the CLKDV output of the same DCM
• CLK driven by PLL, CLKDIV driven by CLKOUT[0:5] of same PLL
在Memory Interface模式下,解决时钟相位关系的唯一办法是:
• CLK driven by BUFIO or BUFG
• OCLK driven by DCM and CLKDIV driven by CLKDV output of same DCM
• OCLK driven by PLL and CLKDIV driven by CLKOUT[0:5] of same PLL
图 4 控制CLK和CLKDIV相位对齐的时钟解决方案
//补充文档内容从以下区域进行添加
5.2 OSERDES
OSERDES:输出并串转换器逻辑资源,具有专门用来帮助实现源同步接口的待定时钟控制和逻辑资源。每个OSERDES模块包含一个用户数据和三态控制的专用串行器。数据和专用串行器都可以配置成SDR和DDR模式。数据串行化可大6:1,如果使用“OSERDES宽度扩展,则是10:1”。三态串行化可达4:1。
5.2.1 OSERDES组成功能模块
图 OSERDES功能框图
在OSERDES并串转换过程中,并行数据串行化是从数据引入引脚的最低位到最高位的顺序进行的(即D1输入引脚上的数据传输到OQ引脚的首位)。
OSERDES使用CLK和CLKDIV两个时钟进行数据速率转换。CLK是高速串行时钟;CLKDIV是分频并行时钟。假定CLK和CLKDIV相位对齐,表**所示为各种模式下CLK与CLKDIV之间的关系。
表** 并串转换器的clk/clkdiv关系
SDR模式下的输入数据宽度输出
DDR模式下的输入数据宽度输出
CLK
CLKDIV
2
4
2X
X
3
6
3X
X
4
8
4X
X
5
10
5X
X
6
—
6X
X
7
—
7X
X
8
—
8X
X
OSERDES延迟
Oserdes模块的输入到输出延迟取决于DATA_RATE和DATA_WIDTH属性。延迟的定义是,并行数据样本输入OSERDES所需的慢时钟(CLKDIV)周期数,后加OSERDES在并行数据采样之后将第一个串行数据送入OQ输出所需的快时钟(CLK)周期数。表××概述了各种OSERDES延迟值。
5.2.2 OSERDES基元
图 oserdes基元
端口名称
类型
宽度
描述
OQ
输出output
1
数据通路输出,并转串后的串行输出。
SHIFTOUT1
输出
1
数据宽度扩展的进位输出,连接到主OSERDES的SHIFTIN1。
SHIFTOUT2
输出
1
数据宽度扩展的进位输出,连接到主OSERDES的SHIFTIN2。
TQ
输出
1
三态控制输出
CLK
输入
1
高速时钟输入,驱动并串转换器的串行侧。
CLKDIV
输入
1
分频时钟输入。对延迟单元,解串数据,Bitslip自模块和CE单元进行时钟控制。为CLK端口所连接时钟的分频版本,分频大小根据数据转换宽度而定。CLKDIV驱动驱动并串转换器的并行侧。
D1-D6
输入
1/port
并行数据输入。D1将最先出现在串行输出口OQ上。所有并行数据全通过D1-D6进入OSERDES模块。
OCE
输入
1
输出数据时钟使能,高有效。
该信号可以作为输入OSERDES基元内的并行数据的同步有效标志,并可以同时输出到接收转换后的串行数据的一方,作为一个有效数据的起始位置的判断标志。
REV
输入
1
反转SR引脚。OSERDES模块中没有此端口。
SHIFTIN1
输入
1
数据宽度扩展的进位输入,连接到从OSERDES的SHIFTOUT1。
SHIFTIN2
输入
1
数据宽度扩展的进位输入,连接到从OSERDES的SHIFTOUT2。
SR
输入
1
设置/复位。在OSERDES模块中,此引脚只作为异步复位。
T1-T4
输入
1/port
并行三态输入。所有并行三态信号,都通过端口T1到T4进入OSERDES模块。此端口连接到FPGA内部资源,可以配置成一位或者四位。
TCE
输入
1
三态控制通路时钟使能,高有效。
5.2.3 OSERDES基元的时钟解决方案
6 SERDES应用指南
6.1 ISERDES设计
6.1.1 单个ISERDES单元设计(SDR)
6.1.1.1 ISERDES配置参数
Iserdes仿真设计的练习中将iserdes的参数配置为图XX中的参数,具体参数释义如表XX所示。
图 XX
表 XX
参数
值
意义
BITSLIP_ENABLE
TRUE
Bitslip控制器的使能。
如果INTERFACE_TYPE配置为memory,则必须配置为FALSE;如果INTERFACE_TYPE配置为networking,则必须配置为TURE。在本次设计里将接口类型配置为了networking类型。
DATA_RATE
SDR
指定将输入的数据作为”SDR”或是”DDR”处理。
SDR --- 单倍数据数据;
DDR --- 双倍数据速率;
本设计中设置为单倍数据速率,即SDR。
INTERFACE_TYPE
NETWORKING
使用的数据传输模型。
可选配置为:
"MEMORY" --- 需要用到OCLK; "NETWORKING" --- 不需要用到OCLK;
本设计中配置为NETWORKING。
IOBDELAY
NONE
待补充
IOBDELAY_TYPE
DEFAULT
待补充
IODELAY_VALUE
0
待补充
NUM_CE
1
定义设计中使用的时钟使能的个数。具体参考ISERDES结构中的时钟模块的时钟使能CE1和CE2设计。
本设计配置为”1”,使用一个时钟使能。
SERDES_MODE
MASTER
设置当前SERDES的身份,主或从。
可选配置:”MASTER” or ”SLAVE”.
本设计中配置为MASTER,即没有进行级联设计。
参数
值
意义
BITSLIP_ENABLE
TRUE
Bitslip控制器的使能。
如果INTERFACE_TYPE配置为memory,则必须配置为FALSE;如果INTERFACE_TYPE配置为networking,则必须配置为TURE。在本次设计里将接口类型配置为了networking类型。
DATA_RATE
SDR
指定将输入的数据作为”SDR”或是”DDR”处理。
SDR --- 单倍数据数据;
DDR --- 双倍数据速率;
本设计中设置为单倍数据速率,即SDR。
INTERFACE_TYPE
NETWORKING
使用的数据传输模型。
可选配置为:
"MEMORY" --- 需要用到OCLK; "NETWORKING" --- 不需要用到OCLK;
本设计中配置为NETWORKING。
IOBDELAY
NONE
待补充
6.1.1.2 设计思想
设计中将外部输入的复位信号进行异步复位,同步释放处理。外部的串行数据直接进入ISERDES,SERDES输出的并行数据进行拼接成6位的数据总线,再输出。
6.1.1.3 仿真结果
创建test_betch平台,生成激励。仿真结果如图XX和图XX。从图上分析可知,产生的激励序列011111_101101_101010_110100_010111_10000_000000…。
其中,clk为快时钟,控制输入的串行数据;clkdiv通常是clk的一个分频版本,取决于所实现的解串的宽度(即,如果是1:6解串器,则clkdiv是clk的6分频);D为输入的串行数据;ce为D的同步有效标志(使能)。注意,该设计中配置为SDR,networking模式,则ISERDES的延迟为两个clkdiv的时钟,这里所讲的延迟是指快时钟(clk)采集数据为样本之后,该数据位出现在Q输出上所需的慢时钟(clkdiv)的周期数。另,串行输出的第一位出现在并行输出的最高位上。其他配置情况下的ISERDES延迟信息如表XX所示。
图 仿真全图
图 测试激励起点
图 测试激励结束
表 ISERDES延迟
6.1.1.4 ISERDES数据时序
6.1.1.4.1 ISERDES输入数据时序
图 ISERDES数据输入时序图
6.1.1.4.1 ISERDES输出数据时序
图 ISERDES数据输出时序图
对于ISERDES来说,输入到输出存在一定延迟,这个延迟取决于DATA_RATE,DATA_WIDTH,SERDES_MODE属性。所谓延迟具体是指快时钟(CLK)采集数据位样本之后,该数据位出现在Q输出上所需的慢时钟(CLKDIV)周期数。
表 ISERDES延迟值
Date_Rate
SERDES_MODE
存储器模式的延迟
网络模式的延迟
SDR
1个CLKDIV周期
2个CLKDIV周期
DDR
1个CLKDIV周期
2个CLKDIV周期
6.1.2 单个ISERDES单元设计(DDR)
6.1.2.1 ISERDES配置参数
6.1.2.2 设计思想
6.1.2.3 仿真结果
6.1.3 ISERDES宽度扩展
构建大于1:6的串并转换器需要两个ISERDES模块。每个I/O模块中有一主一从两个ISERDES模块。通过将主ISERDES的SHIFOUT端口连接到从ISERDES的SHIFTIN端口,可以将串并转换器最大扩展到1:10(DDR)和1:8(SDR)。如下图所示为使用主从ISERDES模块的1:10DDR串并转换器的框图。端口Q3-Q6用于从ISERDES上的并行接口的后四位。如果是1:8的SDR串并转化器,则从单元用的是Q3和Q4两位端口。
图 ISERDES宽度扩展
6.1.3.1 设计实例
本设计为SDR,1:8串并转换器,模式为Network模式。具体设计如下图123。.
图 Master单元设计
图 Slave单元设计
图 扩展后的拼接输出
6.1.3.2 仿真结果
首先图中的复位信号依然做了异步复位,同步释放处理。
图 全局
虚线光标处为串行数据开始输入,在此之后的慢时钟clkdiv的第二个上升沿,开始输出并行数据(8bits)。
图 数据输入到输出局部
6.2 OSERDES设计
6.2.1 单个OSERDES单元设计(SDR)
6.2.1.1 OSERDES配置参数
Oserdes仿真设计的练习中将oserdes的参数配置为图XX中的参数,具体参数释义如表XX所示。
图** OSERDES参数配置
表××
OSERDES属性
概述
值
默认值
DATA_RATE_OQ
定义数据(OQ)是在相对于CLK的每个时钟边沿还是时钟的上升沿变化。
字符串SDR(单倍数据速率)或者DDR(双倍数据速率)
DDR
DATA_RATE_TQ
定义三态(TQ)是相对于时钟的每个时钟边沿还是时钟的上升沿变化,或者是缓冲期设置。
字符串SDR、DDR或者BUF。
DDR
DATA_WIDTH
定义并串数据转换器的宽度。此值还取决于DATA_RATE_OQ的值。
整数:2、4、6、7、8或者10。如果DATA_RATE_OQ==DDR,则此值限制为4、6、8或10。
如果DATA_RATE_OQ==SDR,则此值限制为2、3、4、5、6、7、8。
当DATA_WIDTH设置值大于6时,必须将一对OSERDES配置成主从配置。
4
SERDES_MODE
当使用宽度扩展时,定义OSERDES模块是主模块还是从模块。
字符串:MASTER或SLAVE。
MASTER
TRISTATE
定义三态转换器的宽度。
整数:1或4。如果DATA_RATE_TQ==DDR,则此值限制为4。如果DATA_RATE_TQ==SDR或BUF,则此值限制为1。
4
6.2.1.2 设计思想
设计中将外部输入的复位信号进行异步复位,同步释放处理。OSERDES基元外部的并行数据直接进入OSERDES。将OSERDES属性配置为SDR,DATA_WITH==6,即6:1并串转换器件。OSERDES的串行数据直接作为模块数据。
6.2.1.3 仿真结果
创建test_betch平台,生成激励。仿真结果如图XX和图XX。从图上分析可知,有CLKDIV驱动产生一组并行测试数据,16进制表示依次为15、12、7、1e、1a,共5个。
其中,clk为快时钟,驱动并串转换器串行侧;clkdiv通常是clk的一个分频版本,取决于所实现的解串的宽度(即,如果是6:1并串转换,则clkdiv是clk的6分频);OSERDES基元外的并行数据通过d1、d2、d3、d4、d5、d6输入到OSERDES内部,其中d1将最先出现在OQ上,也即如果将并行数据的最低位赋值给d1,其他依次,那么可以看成OSERDES是从并行数据的低位开始并串转换的;oce为输出数据有效时钟使能。注意,该设计中配置为SDR(OSERDES默认为DDR),则OSERDES的并串转换输出延迟为clkdiv采集到有效并行数据之后的5个clk周期(即之后的第五个clk上升沿驱动出第一位有效串行数据)有效串行数据出现在OQ上。
1a
1e
7
12
15
图 ××OSERDES配置为SDR仿真结果
6.2.1.1 OSERDES基元SDR模式时序
1e
6.2.2 单个OSERDES单元设计(DDR)
6.2.2.1 OSERDES配置参数
6.2.2.2 设计思想
设计中将外部输入的复位信号进行异步复位,同步释放处理。OSERDES基元外部的并行数据直接进入OSERDES。将OSERDES属性配置为DDR,DATA_WITH==6,即6:1并串转换器件。OSERDES的串行数据直接作为模块数据。
6.2.2.3 仿真结果
创建test_betch平台,生成激励。仿真结果如图XX和图XX。从图上分析可知,有CLKDIV驱动产生一组并行测试数据,16进制表示依次为15、12、7、1e、1a,共5个。
其中,clk为快时钟,驱动并串转换器串行侧;clkdiv通常是clk的一个分频版本,取决于所实现的解串的宽度(即,如果是6:1并串转换,在配置为SDR模式时,clkdiv是clk的6分频;在配置为DDR模式时,clkdiv是clk的3分频);OSERDES基元外的并行数据通过d1、d2、d3、d4、d5、d6输入到OSERDES内部,其中d1将最先出现在OQ上,也即如果将并行数据的最低位赋值给d1,其他依次,那么可以看成OSERDES是从并行数据的低位开始并串转换的;oce为输出数据有效时钟使能。注意,该设计中配置为DDR(OSERDES默认为DDR),则OSERDES的并串转换输出延迟为clkdiv采集到有效并行数据之后的5个clk周期(即之后的第五个clk上升沿驱动出第一位有效串行数据)有效串行数据出现在OQ上。补充说明,刚刚提到的并串转换延迟,对6:1并串转换,DDR模式的情况下,从给出第一个有效并行数据,到该并行数据转为串行数据后的第一位有效串行数据出现在OQ上的延迟为1个clkdiv+3个clk,关于延迟的其他情况的描述参考表××中所述。
DDR模式下,在复位失效后,至少延迟一个clkdiv之后再给出有效的并行数据
15
1a
1e
7
12
图×× OSERDES基元DDR模式仿真
注意,于SDR模式不同,在DDR模式时,当OSERDES基元的复位失效后,必须至少延迟一个clkdiv时钟周期后,再给出第一个有效的并行数据,这样第一个并行数据才能被正确采样。
另外,DDR模式下6:1并串转换的延迟为1个clkdiv+3个clk。从仿真图中可以看出,在clkdiv正确采样第一个有效并行数据后的,第三个clk上升沿,并串转后的第一个串行数据出现在OQ上。
6.2.2.1 OSERDES基元SDR模式时序
6.2.3 OSERDES宽度扩展
6.2.3.1 设计实例
本设计通过配置OSERDES实现为SDR,8:1并串转换器件具体设计如下图××。.
图 OSERDES扩展Master
图 OSERDES扩展Slave
6.2.3.1 仿真结果
117
127
52
图 ××OSERDES基元位宽扩展仿真结果
由上仿真图可知,位宽扩展为8:1的并串转换器的延迟为1个clkdiv+6个clk,即clkdiv采集到第一个有效并行数据后的第6个clk的上升沿,并串转换后的串行数据出现在OQ上。
另外,上述仿真中的SHIFTOUT1和SHIFTOUT2为啥存在不定态。???
遗留问题:如果需要将OSERDES并串转换后的串行数据在重新拼接起来,该如何实现???
展开阅读全文