使用ISERDES接收高速串行数据

高速信号传输过程中,并行传输因为线路同步难,抗干扰性差等缺点逐渐被串行技术取代;通过提高传输速率的方法,串行传输也可以实现很高的传输速度。
但是,在内部处理信号时,数据信号往往是多bit信号,而传输过程中需要用到单bit串行传输技术,所以,中间需要有一个转换器,实现并串转换,这就需要用到serdes技术。
从virtes-4系列fpga开始,xilinx公司的fpga支持lvds电平和内置的serdes原语,所以本文适用virtes-4及后续系列fpga。
本文将介绍iserdes的ip核生成,iserdes原语介绍,bitslip使用以及最终的仿真结果。
这次我们可以使用ip核简化iserdes原语的配置,找到selectio ip核的配置,然后使用简化设置,如下:
数据总线设置
简单来说,
interface template:接口模板,本次数据传输并不符合预设的协议,所以选择custom
data bus direction:接收数据-> input
data rate: 数据总线是sdr还是ddr,
serialization factor: 串化因子,也就是需要把串行信号转换成多少bit的并行数据;
sdr rate:可设为2,3,4,5,6,7,8; ddr rate:可设为4,6,8,10,14;
external data width: 外部输入数据的位宽,默认设1
i/o signaling:设置差分还是单端以及io电压标准
时钟设置
简单来说,
clock signaling:时钟信号是差分还是单端以及io电压标准clock strategy: external clock:ip核内部产生并行时钟 internal clock:ip核需要手动输入并行时钟 在xilinx的ug471文档的p152中,提到了iserdes的时钟要求,可以说是要求串行钟和并行钟要求相位对齐,需要注意
数据和延时设置
数据延时部分,这个地方先不做设置。
summary
生成ip核之后,可以找到ip核最底层的verilog文件,它的内部实现的核心部分是iserdes2,为此我们需要知道iserdes2的参数内容;
iserdes2的属性中,重点关注的是以下几个:
data_rate: 数据速率还是sdr还是ddrdata_width:参考上面数据总线设置的内容interface_type:接口类型,默认使用networkingnum_ce: 时钟使能数量,默认使用2serdes_mode:当使用级联iserdes时,数据从master iserdes输入,使用一个iserdes设为master,两个iserdes级联使用,另一个为slave;详细可见下面讲到级联时的内容其他的属性可以保持默认
ug471 figure 3-2
iserdes2重要端口设置:
q1-q8: 数据输出;注意当级联时,slave iserdes的q3-q8为并行数据的第8-13位;shiftout:级联时使用,详见下文shiftin:级联时使用,详见下文d:从iob来的数据ddly:从idelay2来的数据,d端口从输入引脚接入后没经过处理,ddly经过idelay2处理;clk,clkb:串行时钟,快钟,clkb是clk取反处理ce1,ce2:快慢钟的使能rst:原语复位,高复位clkdiv:并行钟,慢钟bitslip:bit移位功能,详见下文时钟部分说明:
sdr下:假设接收的串行数据时钟为256mhz,解串因子为8,则clkdiv为32mhz;
clkdiv = clk/data_width
ddr: clkdiv = 2 * clk/data_width
注意clk和clkdiv要相位对齐;
在networking模式下,iserdes输出要晚于输入2个clkdiv周期;
bitslip功能说明:
数据串转并的过程中,如果没有确定好数据边界,解串的数据也不是正确的,这个时候就需要使用bitslip功能:
在sdr和ddr下,bitslip移位的位数并不一样:
ug471 figure 3-11
sdr下,一个bitslip脉冲使数据左移一位;ddr下,一个bitslip脉冲使数据右移一位或左移三位;
bitslip时序 ug471 figure 3-12
可以从上图看出,bitslip在clkdiv时钟下,一个完整的脉冲可以使输出数据产生相应的变化;
所以在某些传输过程中,可以先开始传输预设值,等待接收方调整idelay和bitslip解出正确的预设值后,开始传输真正的数据。
iserdes级联使用:
sdr rate下,一个iserdes能够解串的最大数据宽度为8;在某些adc中,其并行数据宽度大于8位,这个时候可以使用上iserdes的级联功能:
级联示意图 ug471 figure 3-8
首先 设置一个iserdes的serdes_mode属性为master,另一个为slave;设置master和slave iserdes2的data_width数据宽度为同一个数(10或14);将master的shiftout1,2连接至slave的shiftin1,2data_width为10时,slave的q3-4为第8-9位;data_width为14时,slave的q3-8为第8-13位。
仿真结果:
找到预设值才开始传输真正的数据
注意,独立使用vcs,verdi仿真iserdes时,需要使用某些设置才能仿真成功
总结:
iserdes2可以使用selectio ip核设置简化原语设置流程; 但iserdes2原语设置会更加精细bitslip功能很有用,需要用它找到数据的正确边界

如何使用MOSFET构建高效D类音频放大器
实体店如何利用互联应用程序来影响购买决策
西门子博途中启用类型版本对话框
特斯拉上海超级工厂将对Model 3量产开始量产设置测试
一氧化碳检测仪都有哪些采样方式?-欧森杰
使用ISERDES接收高速串行数据
赛微电子拟参设传感基金 重点布局智能传感器、高端科学仪器及其上下游
RCU控制系统的功能及特点详细介绍
PCB抄板中影响文件图效果的因素有哪些
AI 如何重塑设计和仿真
无线充电的终端应用及机遇
三星计划为Bixby提供助力 并有意借此进军机器人等新兴领域
为规避苹果的隐私新规,应用开发商探索秘密追踪用户新形式
超声加工的特点和用途
自制简易的水族箱温控器
老板让你买工业4G路由器?马上Get这份智能选型指南!
MUN3CAD03-SE非隔离dc-dc转换器的特征及应用
!销售/收购HP8903B音频分析仪HP8903B现货!小兵
美国为推动高能安森美半导体的发展,举办技术研讨会
不接触液体就能检测的液位传感器有哪些呢?