0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用ISERDES接收高速串行数据

冬至配饺子 来源:Bug记录 作者:woodfan 2022-08-20 11:11 次阅读

上一篇讲到了Idelay,那么SERDES(Serialization/De-serialization)也可以顺带介绍一下。高速信号传输过程中,并行传输因为线路同步难,抗干扰性差等缺点逐渐被串行技术取代;通过提高传输速率的方法,串行传输也可以实现很高的传输速度。

但是,在内部处理信号时,数据信号往往是多bit信号,而传输过程中需要用到单bit串行传输技术,所以,中间需要有一个转换器,实现并串转换,这就需要用到SERDES技术。

从Virtes-4系列FPGA开始,Xilinx公司的FPGA支持LVDS电平和内置的SERDES原语,所以本文适用Virtes-4及后续系列FPGA。

本文将介绍ISERDES的IP核生成,ISERDES原语介绍,Bitslip使用以及最终的仿真结果。

这次我们可以使用IP核简化ISERDES原语的配置,找到SelectIO IP核的配置,然后使用简化设置,如下:

poYBAGMAT5qAZrqeAADnpn94iPQ316.png

数据总线设置

简单来说,

Interface Template:接口模板,本次数据传输并不符合预设的协议,所以选择Custom

Data BUS Direction:接收数据-> input

Data Rate: 数据总线是SDR还是DDR,DDR内容可以看(LVDS差分信号简单处理)2. 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电压标准

poYBAGMAT7KAJlKoAADsEvN8sq4065.png

时钟设置

简单来说,

Clock Signaling:

时钟信号是差分还是单端以及IO电压标准

Clock Strategy:

External Clock:

IP核内部产生并行时钟

Internal Clock:

IP核需要手动输入并行时钟

在xilinx的UG471文档的P152中,提到了ISERDES的时钟要求,可以说是要求串行钟和并行钟要求相位对齐,需要注意

pYYBAGMAT9uAXD2aAACGvbMTJsU209.pngpYYBAGMAT-CAS1ySAADgL_BGwlA125.png

数据和延时设置

数据延时部分,这个地方先不做设置。

pYYBAGMAT_-AT4nyAADI2TdmbLU992.png

Summary

生成IP核之后,可以找到IP核最底层的verilog文件,它的内部实现的核心部分是ISERDES2,为此我们需要知道ISERDES2的参数内容;

ISERDES2的属性中,重点关注的是以下几个:

DATA_RATE: 数据速率还是SDR还是DDR

DATA_WIDTH:参考上面数据总线设置的内容

INTERFACE_TYPE:接口类型,默认使用"NETWORKING"

NUM_CE: 时钟使能数量,默认使用2

SERDES_MODE:当使用级联ISERDES时,数据从Master ISERDES输入,使用一个ISERDES设为"MASTER",两个ISERDES级联使用,另一个为"SLAVE";详细可见下面讲到级联时的内容

其他的属性可以保持默认

poYBAGMAUBuAZXzHAADMO-sOBo4557.png

UG471 Figure 3-2

ISERDES2重要端口设置:

Q1-Q8: 数据输出;注意当级联时,"SLAVE" ISERDES的Q3-Q8为并行数据的第8-13位;

SHIFTOUT:级联时使用,详见下文

SHIFTIN:级联时使用,详见下文

D:从IOB来的数据

DDLY:从Idelay2来的数据,D端口从输入引脚接入后没经过处理,DDLY经过Idelay2处理;Idelay详见(LVDS差分信号简单处理)3. Idelay对时序的补救

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移位的位数并不一样:

poYBAGMAUC6AIAPVAAC7M4TOYXg066.png

SDR下,一个bitslip脉冲使数据左移一位;DDR下,一个bitslip脉冲使数据右移一位或左移三位;

poYBAGMAUEOAByVdAACnxkrc8q0228.png

BITSLIP时序 UG471 Figure 3-12

可以从上图看出,BITSLIP在CLKDIV时钟下,一个完整的脉冲可以使输出数据产生相应的变化;

所以在某些传输过程中,可以先开始传输预设值,等待接收方调整Idelay和BITSLIP解出正确的预设值后,开始传输真正的数据。

ISERDES级联使用:

SDR Rate下,一个ISERDES能够解串的最大数据宽度为8;在某些ADC中,其并行数据宽度大于8位,这个时候可以使用上ISERDES的级联功能:

pYYBAGMAUFmAIgglAACKQT3pTTs288.png

级联示意图 UG471 Figure 3-8

首先 设置一个ISERDES的SERDES_MODE属性为"MASTER",另一个为"SLAVE";

设置"MASTER"和"SLAVE" ISERDES2的DATA_WIDTH数据宽度为同一个数(10或14);

将"MASTER"的SHIFTOUT1,2连接至"SLAVE"的SHIFTIN1,2

DATA_WIDTH为10时,"SLAVE"的Q3-4为第8-9位;DATA_WIDTH为14时,"SLAVE"的Q3-8为第8-13位。

仿真结果:

poYBAGMAUG6ASpBTAAA8hdr4v4M699.png

找到预设值才开始传输真正的数据

注意,独立使用VCS,VERDI仿真ISERDES时,需要使用某些设置才能仿真成功,具体请参考VCS独立仿真Vivado IP核的一些方法总结

总结:

ISERDES2可以使用SelectIO IP核设置简化原语设置流程;但ISERDES2原语设置会更加精细

BITSLIP功能很有用,需要用它找到数据的正确边界。



审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1611

    文章

    21393

    浏览量

    595536
  • 转换器
    +关注

    关注

    27

    文章

    8316

    浏览量

    143734
  • DDR
    DDR
    +关注

    关注

    11

    文章

    688

    浏览量

    64576
  • SerDes
    +关注

    关注

    6

    文章

    179

    浏览量

    34625
  • 数据总线
    +关注

    关注

    2

    文章

    51

    浏览量

    17427
收藏 人收藏

    评论

    相关推荐

    80SJNB Advanced 均衡和串行数据分析方法

    和其它8000 系列采样示波器上使用。关闭的眼图、接收端均衡和发送端目前,大量的串行数据链路设计和标准进入了信道(互连)严重限制高速信号、使接收端一端眼图关闭的时代。经过链路传输后可
    发表于 11-26 10:44

    多FPGA系统中自定义高速串行数据接口设计

    多FPGA系统中自定义高速串行数据接口设计.pdf
    发表于 03-21 17:28

    【proteus练一练】串行数据转换为并行数据

    /*名称:串行数据转换为并行数据 说明:串行数据由 RXD 发送给串并转换芯片 74164,TXD 则用于输出移位时钟脉冲,74164 将串行输入的 1 字节转换为并
    发表于 03-01 09:40

    多FPGA系统中自定义高速串行数据接口设计

    多FPGA系统中自定义高速串行数据接口设计为方便多FPGA系统中主从FPGA之间的命令与数据传输,节省连接的引脚数量,设计了一种基于FPGA的自定义高速
    发表于 08-11 11:49

    Sync_Header Bits如何从串行数据中获取正确的Header Bits?

    嗨,我正在使用XILINX IP-Core Generator的GTX。我正在使用Kintex-7。在接收器中,接收接收串行数据并转换成并行数据
    发表于 07-23 08:14

    怎么实现基于FPGA的具有流量控制机制的高速串行数据传输系统设计?

    本文介绍了基于Xilinx Virtex-6 FPGA的高速串行数据传输系统的设计与实现,系统包含AXI DMA和GTX串行收发器,系统增加了流量控制机制来保证高速
    发表于 05-25 06:45

    高速CAN通讯总线接收到无效串行数据是何原因?怎么解决呢?

    高速CAN通讯总线接收到无效串行数据是何原因?怎么解决呢?
    发表于 05-09 10:39

    【verilog每日一练】位拼接符的应用:如何实现串行数据接收与输出

    若1bit串行信号data_in按高位先发的顺序传输一个8bit的数据,data_en为使能信号,请用位拼接符实现串行数据接收并输出接收
    发表于 08-07 16:05

    高速串行数据链路的自动化一致性测试

    高速串行数据链路的一致性测试是个复杂的课题,既要求测试设备厂家能提供高性能的仪器,又要求测试工程师能充分利用仪器去解决问题。
    发表于 04-24 16:00 1058次阅读

    串行数据转换为并行数据

    。。。。。。串行数据转换为并行数据。。。。。。。
    发表于 11-10 10:01 9次下载

    行数据转换为串行数据.hex

    。。。。。。并行数据转换为串行数据。。。。。。。
    发表于 11-10 10:00 0次下载

    多FPGA系统中自定义高速串行数据接口设计

    多FPGA系统中自定义高速串行数据接口设计
    发表于 05-10 11:24 24次下载

    高速串行数据挑战与TDR阻抗测试和高速串行链路的分析

    本文介绍了TDR阻抗测试和高速串行链路分析,首先介绍了高速串行数据链路的挑战,然后对高速串行数据
    发表于 10-12 16:42 8次下载
    <b class='flag-5'>高速</b><b class='flag-5'>串行数据</b>挑战与TDR阻抗测试和<b class='flag-5'>高速</b><b class='flag-5'>串行</b>链路的分析

    使用ISERDES接收高速串行数据

    高速信号传输过程中,并行传输因为线路同步难,抗干扰性差等缺点逐渐被串行技术取代;通过提高传输速率的方法,串行传输也可以实现很高的传输速度。
    发表于 06-16 14:11 1364次阅读
    使用<b class='flag-5'>ISERDES</b><b class='flag-5'>接收</b><b class='flag-5'>高速</b><b class='flag-5'>串行数据</b>

    使用OSERDES发送高速串行数据

    OSERDES实现并串转换,只需要管发送并不需要管接收到的数据如何,所以它的操作相对于ISERDES来说简单;
    的头像 发表于 06-16 14:14 897次阅读
    使用OSERDES发送<b class='flag-5'>高速</b><b class='flag-5'>串行数据</b>