『FPGA通信接口』LVDS接口(4)LVDS接收端设计

2024-06-22 03:04

本文主要是介绍『FPGA通信接口』LVDS接口(4)LVDS接收端设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

文章目录

  • 1.LVDS接收端概述
  • 2逻辑框图
  • 3.xapp855训练代码解读
  • 4.接收端发送端联调
  • 5.传送门

1.LVDS接收端概述

接收端的传输模型各个属性应该与LVDS发送端各属性一致,例如,如果用于接收CMOS图像传感器的图像数据,则接收端程序的串化因子、通道个数等将要与设备一致。在硬件设计上,LVDS时钟线和LVDS数据线应该等长设计,但由于布线制板工艺的影响,难免数据线和时钟线无法同时到达接收端,在传输速度快时,微乎其微的偏差都可能让数据出错,这就是LVDS接收端要解决的问题,即在数据稳定窗口的中心采样,保持数据的稳定,这个动作称之为位对齐。此外,当在数据线上重复发送ABCDEFGH(假设一个字母代表一个bit),有可能接收到的是BCDEFGHA产生字偏移,通过ISERDES2的bitslip可以完成数据的平移,这个动作称之为“字对齐”。接收端通过IBUFDS进行差分转单端信号便于逻辑处理,将lvds传输线上的串行数据经过IDELAY2进行位对齐操作,随后利用ISERDES2将该串行数据并行化即字对齐操作,将发送端的数据恢复。其难点就在于如何实现字对齐和位对齐操作。Xilinx提供了多个例程适用于不同系列的FPGA,如xapp860和xapp855适于V5,xapp585适用于7系列,还有适用于ultrascale的例程。本例程基于xapp855修改使之适配7系列并满足既定传输模型属性要求。

2逻辑框图

以下框图截取自xapp855,与示例程序并不一致。数据差分信号经IBUFDS转化为单端信号,进入IDELAY2(由于xapp855适用于V5,而当前程序适用于7系列,因此原语的名称有所不同)将数据位对齐后进入ISEDERS2转换成并行数据;时钟差分信号经过IBUFDS转化成单端信号,进入IDELAY2(此处为0,以时钟到达为基准)由BUFR倍频出并行时钟,经BUFIO产生串行时钟。此外,使用IDELAY必须要使用IDELAYCTRL,输入200MHz作为参考时钟。还有两个逻辑模块一个是Bit Align Machine实现位对齐字对齐,产生ISERDES2和IDELAY2所需的信号,完成当前LVDS传输线的对齐操作。Resource sharing control实现通道切换,和训练完成的指示。

在这里插入图片描述

3.xapp855训练代码解读

通道选择模块较为简单,主要介绍Bit Align Machine模块是如何完成单通道的数据训练操作。将ISERDES2模块传入的并行数据A打一拍得到B,当A不等于B的时候,认为此时遇到了亚稳态,即建立时间或者保持时间不满足要求的情况。当连续几个周期B等于pattern数据时,认为此时的采样点可用,字对齐也完成。完成数据训练的主要思路是,先使用IDEALY延迟直到找见一个亚稳态的点,未找见就延迟加1,然后继续增加延迟并加入字节对齐的判断直到找到Pattern数据,认为此时找到了数据窗口的左值,继续增加延时值,直到找见下一个亚稳态的采样点。从第一个pattern数据出现,增加延时值到下一个亚稳态的出现之间就是数据有效窗口,然后通过减去延迟值找到采样中心点,此后再次判断字对齐的情况,当字对齐结束后认为此LVDS传输线数据训练完成。由Resource sharing control控制开始训练下一个LVDS传输线。
在这里插入图片描述

以上截图出自xapp855的解释说明,步骤①即是假定数据和时钟到达时二者的相对位置关系。步骤②是经过延时找到了第一个亚稳态窗口(Transition),图中斜线部分代表此时数据采样不稳定。步骤③是通过延时和bitslip寻找到数据有效窗口的左值(Eye)。步骤④是通过延时找到下一个亚稳态窗口,由此在③和④之间便是数据有效的窗口。步骤⑤是将采样点控制到数据有效窗口的中心位置。需要注意,IDELAY2总共只有32个阶,当参考时钟是200MHz时,每一阶延时78ps,即总共可延时32*78=2496ps=2.5ns。因此数据传输的线速率不能太低,线速率太低时需要采用别的方法或者调整该状态机,否则会错误的找到最佳采样点,出现不稳定的情况,因此使用该程序,其线数据传输速率建议大于400Mbps。
下面对该模块中状态机简单分析便于理解。

  1. 00000不动(指各计数模块,idelay、bitslip均不做操作,后同),保证不与通道切换指令冲突。
  2. 00001不动 比较前一个后一个,不相等认为找见第一个亚稳态窗口。
  3. 01000 SAMPLE(指代码中信号含SAMPLE的128bit计数器,后同)计数器加1,连续抓15次判断是否为亚稳态窗口。
  4. 01011 IDELAY延时加1,两个计数器清0。
  5. 00100 SAMPLE控制7个周期后判断是否亚稳态,如此循环直到找到亚稳态窗口,即进入01111状态。(上述五个步骤必定能找见亚稳态窗口)
  6. 01111 SAMPLE清0 IDEALAY加1 准备寻找pattern。
  7. 01101 SAMPLE加1 JC添加8周期等待 找等于check pattern 找见就准备记录 重复上述步骤,直到找见稳态check pattern即渡过第一个窗口 bitslip=1。
  8. 01100 SAMPLE清0 (进入IDLE状态)。
  9. 10000 第二个idle 不动作。
  10. 00010再次确认是否退出了窗口 如果没有退出,重复上述步骤直到退出。
  11. 01110 确认跳出第一个亚稳态窗口,该状态CNT开始计数,找左值。
  12. 01001 idelay值加1 CNT开始计数(记录的是数据有效窗口的大小,CNT指代码中不含SAMPLE的128计数器) 找下一个亚稳态区域。
  13. 00011 SAMPLE计数控制8周期后比较数据,复制当前的CNT中的计数值,找见第二个就退出,找不见就重复上面步骤。
  14. 10010 计数器全部清0 无动作跳转。
  15. 01010 idelay减一减到有效采样的中间处即可,清0CNT。思考,假如taps的值不够用怎么办(即前文提到线数据速率不能太慢,否则会出现这种情况)。
  16. 00101 CNT控制延时,再次确认是否word对齐,默认当前已经到了采样中心点 word对齐则进入成功完成数据训练状态,word没有对齐就再次进入word对齐状态
  17. 00110 bitslip一次
  18. 00111 指示当前通道训练完成,准备切换到下一个通道,重复上述步骤进行训练

注意: 将该程序移植到7系列的板卡时需要注意,7系列的原语ISERDES2与V5不同,bitslip信号不能一直给,一旦一直给将无法穷举所有的可能值,在bitslip使能之后要拉低两个周期继续使能,否则这个系统的状态机可能出错。

4.接收端发送端联调

将发送端和接收端写在一个工程里,验证LVDS的收发,其结果如下,可以看到发送端发送的数据与接收的数据一致,data_aglin信号拉高,代表数据训练完成。
在这里插入图片描述
总结:
①本文只是提供了众多实现lvds收发方法中的一种,例如,可以使用ODDR原语产生差分信号;IDELAY有四种模式,本文使用VARIABLE模式,还可以尝试VAR_LOAD模式;xilinx提供了一个名为SelectIO Interface Wizard的ip核其中涵盖了LVDS收发使用的全部selectio资源,在领悟本例精神后可以用其练手。
②寻找数据中心的方式也是可以灵活多变的。
③xapp855的代码结构以及代码风格可以提供一种新的思考,包括通道与训练的管理,计数器的服用,以及状态指示训练完成的写法都值得学习和总结。
④Xapp585提供了基于7系列的原语设计,便于工程的移植和扩展,另外其位对齐和字对齐分开实现,是数据训练的另外一种思路。
⑤关于文中提到的原语的使用可返回目录查看对应文章。
⑥7系列的iserdes2原语要求bitslip后三个周期才能下一次bitslip,因此在LVDS收发程序中加入了这里的控制。

5.传送门

  • 我的主页
  • FPGA通信接口专栏汇总导航
  • 源码链接
END

🔈文章原创,首发于CSDN论坛。
🔈欢迎点赞❤❤收藏⭐⭐打赏💴💴!
🔈欢迎评论区或私信指出错误❌,提出宝贵意见或疑问❓。


这篇关于『FPGA通信接口』LVDS接口(4)LVDS接收端设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1083105

相关文章

在线装修管理系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,装修队管理,用户管理,装修管理,基础数据管理,论坛管理 前台账户功能包括:系统首页,个人中心,公告信息,论坛,装修,装修队 开发系统:Windows 架构模式:B/S JDK版本:Java JDK1.8 开发工具:IDEA(推荐) 数据库版本: mysql5.7 数据库可视化工具: navicat 服务器:SpringBoot自带 ap

DDei在线设计器-API-DDeiSheet

DDeiSheet   DDeiSheet是代表一个页签,一个页签含有一个DDeiStage用于显示图形。   DDeiSheet实例包含了一个页签的所有数据,在获取后可以通过它访问其他内容。DDeiFile中的sheets属性记录了当前文件的页签列表。   一个DDeiFile实例至少包含一个DDeiSheet实例。   本篇最后提供的示例可以在DDei文档直接预览 属性 属性名说明数

基于Springboot + vue 的抗疫物质管理系统的设计与实现

目录 📚 前言 📑摘要 📑系统流程 📚 系统架构设计 📚 数据库设计 📚 系统功能的具体实现    💬 系统登录注册 系统登录 登录界面   用户添加  💬 抗疫列表展示模块     区域信息管理 添加物资详情 抗疫物资列表展示 抗疫物资申请 抗疫物资审核 ✒️ 源码实现 💖 源码获取 😁 联系方式 📚 前言 📑博客主页:

比较学习难度:Adobe Illustrator、Photoshop和新兴在线设计平台

从入门设计开始,几乎没有人不知道 Adobe 公司两大设计软件:Adobe Illustrator和 Photoshop。虽然AI和PS很有名,有一定设计经验的设计师可以在早期探索和使用后大致了解AI和PS的区别,但似乎很少有人会系统地比较AI和PS。目前,设计软件功能多样,轻量级和网页设计软件已成为许多设计师的需求。对于初学者来说,一篇有针对性的AI和PS比较总结文章具有非常重要的指导意义。毕竟

vue3项目将所有访问后端springboot的接口统一管理带跨域

vue3项目将所有访问后端springboot的接口统一管理带跨域 一、前言1.安装Axios2.创建Axios实例3.创建API服务文件4.在组件中使用API服务 二、跨域三、总结 一、前言 在Vue 3项目中,统一管理所有访问后端Spring Boot接口的最佳实践是创建一个专门的API服务层。这可以让你的代码更加模块化、可维护和集中管理。你可以使用Axios库作为HTT

DDS信号的发生器(验证篇)——FPGA学习笔记8

前言:第一部分详细讲解DDS核心框图,还请读者深入阅读第一部分,以便理解DDS核心思想 三刷小梅哥视频总结! 小梅哥https://www.corecourse.com/lander 一、DDS简介         DDS(Direct Digital Synthesizer)即数字合成器,是一种新型的频率合成技术,具有低成本、低功耗、高分辨率、频率转换时间短、相位连续性好等优点,对数字信

[FPGA][基础模块]跨时钟域传播脉冲信号

clk_a 周期为10ns clk_b 周期为34ns 代码: module pulse(input clk_a,input clk_b,input signal_a,output reg signal_b);reg [4:0] signal_a_widen_maker = 0;reg signal_a_widen;always @(posedge clk_a)if(signal_a)

基于Java医院药品交易系统详细设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W+,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码+数据库🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人  Java精品实战案例《600套》 2023-2025年最值得选择的Java毕业设计选题大全:1000个热

展厅设计主要的六大要素

1、从创意开始      展示设计的开始必须创意在先。根据整体的风格思路进行创意,首先要考虑的是主体的造型、大小高度位置以及它和周围展厅的关系。另外其他道具设计制作与运作方式也必须在创意中有明确的体现。      2、平面感      平面感是指对展示艺术设计平面图纸审美和功能两个方面理性的感觉认识。它是三维空间设计认识的基础,也是施工的重要依据。展示空间的设计应先在展场环境的平面

办理河南建筑工程乙级设计资质的流程与要点

办理河南建筑工程乙级设计资质的流程与要点 办理河南建筑工程乙级设计资质的流程与要点主要包括以下几个方面: 流程: 工商注册与资质规划:确保企业具有独立法人资格,完成工商注册,并明确乙级设计资质的具体要求,包括注册资本、人员配置、技术条件等。 专业技术人员配置: 雇佣或签约符合资质要求的专业技术人员,包括但不限于:一级注册结构工程师2名、一级注册建筑师2名、注册暖通工程师1名、注册供配电工