高速串行总线设计基础

news2025/1/11 19:53:19

高速串行总线设计(1)

高速信号设计涉及到方方面面的知识积累,也许你认为即使没有掌握甚至没有听过一些高速设计的专业术语,也没有关系?因为专业集成的IP可以帮你解决这一问题,但殊不知,根基不牢,地动山摇,基础不牢固,你永远成不了一个expert,甚至成不了一个出色的工程师。

芯片间通信的时序模型

高速串行总线设计基础(一)同步时序模型介绍-腾讯云开发者社区-腾讯云

系统同步

所谓的系统同步,即在IC之间通信中,外部公共时钟应用于两个IC之间,并用于数据发送以及接收。系统同步是最常用的同步方式,其示意图如下:

系统同步电路

源同步

所谓的源同步,即两个IC之间通信,发送IC会生成一个伴随数据的时钟,接收IC使用此转发时钟进行数据接收。

源同步电路图
这种同步方式的特点是时钟副本与数据一同发送到目的IC。
由于数据与时钟一起发送,因此需要调整转发时钟的输出时间,数据线与时钟线的走线长度必须匹配。
其时序模型如下:

源同步时序模型

自同步

所谓自同步,即两个IC之间同步,其中发送IC生成的包含数据和时钟的流发送至接收IC。自同步的电路图如下:


自同步电路图
如果你曾使用过高速串口相关的IP或者高速串口相关的协议,你会发现很多高速串口使用这种方式进行数据传输。例如Xilinx的Transceiver以及基于Transceiver的几乎所有其他高速协议,如aurora,srio等。
其时序模型如下:

自同步时序模型
可见,自同步接口主要有三个部分:

  1. 并串转换

  1. 串并转换

高速串行总线设计基础(二)1

高速串行总线设计基础(二)什么是MGTs以及MGTs的优势在哪里?-腾讯云开发者社区-腾讯云
为什么后来就往高速串行总线方向发展了呢?
几乎任何地改变都是趋利避害:拿芯片间通信为例,过去几乎完全是并行总线,碍于技术限制,使用串行总线所需的serialize(串行化)以及deserialize(解串行化)所需的逻辑量远远超过了减少引脚数量所带来的节省。得不偿失!
这样的时代过去了,如今芯片能做到7nm以下,在极小的硅中可以实现数量惊人的逻辑,serdes可以以非常低的成本包含在零件中,优势还远非如此,总之,技术的突破让高速串行总线技术引领了未来。

并行传输

avalon总线,axi总线以及axi 总线的变体axi stream以及axi framing等都是芯片内进行并行传输,以aurora的用户端信号axi framing以及axi streaming总线为例,它们在转换成串行比特流之前都是以并行的形式存在,所以,串并行总线都是相辅相成的,用途不同。
在并行传输中,通常使用附加的控制线为数据赋予不同的含义。如下图axi framing的通过valid,ready以及last等一系列控制信号控制数据的传输。

串行传输


重点
在Xilinx的Transceivers中,我们还可以知道,Xilinx芯片内部会把4个Transceiver通道原语(专用硬件结构)(GTXE2_CHANNEL)以及时钟模块(GTXE2_COMMON)合称为一个Quad,十分好理解,Quad就是四的意思呀。

MGTs的优势

带宽高

这个就不用赘述了吧,上了以Xilix的FPGA为例,说了随随便便一个7系列的FPGA,就有很多个MGT Bank,每个Bank上都有4通道的Transceiver,一个通道的数据率就能达到好几Gbps,多个呢?更何况Ultrascale架构的FPGA呢?带宽大的优势很明显,对于雷达领域,视频领域等都是刚需。

引脚数量少

引脚数是试图将大量数据移入或移出芯片或电路板时遇到的第一个问题。输入和输出引脚的数量始终受到限制。串行总线相对于并行总线而言,很明显的一个优势就是节省引脚,尽管高速串行总线总是使用差分总线来进行数据传输,但相对于并行总线,引脚使用量仍然微不足道。

高速串行总线设计基础(三)SERDES的通用结构介绍

高速串行总线设计基础(三)SERDES的通用结构介绍-腾讯云开发者社区-腾讯云

SERDES的基本构造


SERDES框图
由发送线,接收线,串行化模块核解串行化模块,时钟管理模块,编码解码模块,发射接收缓冲模块(FIFO)以及Alignment模块
一般而言,1对称之为X1模式,2对X2,以此类推,n对即Xn。这类差分信号线越多,传输数据的带宽就越大,假如一对差分信号线的传输带宽为3.125Gbps,则n对为n*3.125Gbps。
为什么会有上图中的Transmit and Receiver buffers/FIFO呢?
该模块的一个最重要的作用就是进行跨时钟域转换!由于SERDES中涉及的时钟不只有一个,拿我们的Xilinx的Transceiver的一个通道的发射部分而言,如下图:

高速串行总线设计基础(四)眼图的形成原理

高速串行总线设计基础(四)眼图的形成原理-腾讯云开发者社区-腾讯云

高速串行总线设计基础(五) 揭秘SERDES高速面纱之多相数据提取电路与线路编码方案

解读ADC采样芯片(EV10AQ190A)的工作模式(单通道模式)_adc芯片怎么采集差分信号_李锐博恩的博客-CSDN博客

多相数据提取电路

采取多相位时钟处理数据的技术应用十分广泛,例如ADC芯片:EV10AQ190A,它的单通道模式就利用了多相位时钟技术对模拟信号进行采样:

8B/10B编解码

8b / 10b编码方案是由IBM开发的,已经被广泛采用。它是Infiniband,千兆位以太网,光纤通道和10千兆位以太网的XAUI接口中使用的编码方案。它是一种值查找类型的编码方案,其中将8位字转换为10位符号。这些符号确保了时钟恢复的跳变次数。

运行差异(Running Disparity)

通过一种称为运行差异的方法,可以在8b / 10b中实现DC平衡。实现DC平衡的最简单方法是仅允许具有相同数目的1和0的符号,但这将限制符号的数量。 相反,8b/10b使用两个不同的符号分配给每个数据值。**在大多数情况下,其中一个符号有6个0和4个1,另一个符号有4个0和6个1。监视1和0的总数,并根据需要选择下一个符号,使线路恢复直流平衡。这两个符号通常被称为+和-符号。**符号示例见下表。

控制字符

刚才的表格中的以D开头的字符成为数据字符,它代表的是数据信息;其实不只有数据信息,高速串行总线传输的还有控制字符,如下: 下表列出了12个特殊符号的编码,这些符号称为控制字符或K字符。

Comma 检测

我们怎么知道符号的边界在哪里?**符号是由逗号划定的。**在这里,逗号是指定为逗号或对齐序列的一个或两个符号。这个序列通常在收发器中可设置,但在某些情况下,它可能是预定义的。

加扰技术

由于8B/10B编码技术,会添加额外的bit对数据进行编码,从而增加了带宽的开销;例如要获得2.5Gb的带宽,需要3.125Gbps的线速率。 加扰技术可以轻松解决时钟转换和直流偏置问题,而无需增加带宽。

什么是加扰技术呢? 即一种对数据进行重新排序或编码的方法,以使其看起来是随机的,但可以被加密。
加扰是一种对数据进行重新排序或编码的方法,以使其看起来是随机的,但仍然可以不加扰。我们希望随机化器可以打破长期的零和一。显然,我们希望解扰器对比特进行解扰,而无需任何特殊的对齐信息。此特性称为自同步编码。

高速串行总线设计基础(六)揭秘SERDES高速面纱之数据包与参考时钟要求

高速串行总线设计基础(六)揭秘SERDES高速面纱之数据包与参考时钟要求

数据包介绍

熟悉Xilinx的Transceiver的工程师一定知道,Xilinx有很多基于Transceiver的高速串行协议,例如aurora,srio,pcie等,它们都有自己的数据包,当然自己还可以自定义协议,例如跑Transceiver裸核时候就可以自由定义协议,协议也定义数据包等,只要通信双方都按照这个协议走,就没有任何问题。 下面给出数据包的定义:数据包即定义明确的字节集合,由头,数据和尾部组成。


总结:包中的不同的数据段,可以通过发送符号进行标注,在没有信息发送时也可以通过发送符号实现链路保持对齐的功能

千兆位收发器(MGT)的输入或参考时钟具有非常严格的规格。它包括严格的频率要求,通常以频率误差的百万分之几(PPM)指定。它还将有严格的抖动要求,以时间单位(皮秒)或单位间隔(UI)来定义。 下面介绍这几个专业术语:
PPM( Parts per million):百万分之一;一种描述很小比例的方法。 PPM的应用很广泛,在其他领域也有应用,例如:
UI(Unit intervals): 时间间隔
Jitter:抖动,理想过渡位置的变化

这样严格的要求使得PLL和时钟提取电路能够工作。这往往需要在使用MGT的系统中的每块印刷电路板(PCB)上安装一个精确的晶体振荡器。这些晶体振荡器比大多数用于数字系统的晶体振荡器高一档,成本会更高。
在很多情况下,时钟生成芯片和PLL的抖动太多,无法使用,因此需要选择一种低抖动的晶体振荡器。

高速串行总线设计基础(七)揭秘SERDES高速面纱之时钟校正与通道绑定技术

高速串行总线设计基础(七)揭秘SERDES高速面纱之时钟校正与通道绑定技术

时钟校正

时钟校正技术是高速串行总线中几乎必要的技术,例如Xilinx 7系列的Transceiver**,使用了一个弹性缓冲空间即FIFO**来做时钟校正:

因为CDR得到的时钟与接收时钟可能不相同,那么通过FIFO进行一个缓冲:
缓冲的算法:

  1. 如果FIFO太空,往里面加一些无用的字
  2. 如果FIFO太满,则把无用的字读出来

为了使得两端的时钟速率近似,不出现FIFO满以及FIFO空的情况

通道绑定技术


由于在进行多lane的数据传输时,为了使得多lane 的数据能够快速的串行输出,需要通过发送多个字符,使得知道字符的偏移量从而确定偏移的大小,并将之修正,实现通道绑定
通道绑定允许MGT补偿多个通道之间的偏移。MGT都会同时传输一个通道绑定字符(或字符序列)。当接收到该序列时,接收的MGT可以确定它们之间的偏移,然后调整其接收数据通路中的FIFO的延迟来进行补偿。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1030462.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ABB COM0011 2RAA005844A0007J编码器模块

ABB COM0011 2RAA005844A0007J 编码器模块是用于测量和反馈旋转或线性位置信息的设备,通常用于自动化、机器控制和运动控制系统。以下是该编码器模块可能具备的产品功能: 位置测量:ABB COM0011 2RAA005844A0007J 编码器模块的主要功能是测量旋…

【初阶数据结构】——堆排序和TopK问题

个人主页 代码仓库 C语言专栏 初阶数据结构专栏 Linux专栏 接上篇二叉树和堆的引入 目录 前言 建堆 插入数据向上调整算法建堆 移动数据向上调整算法建堆 无序数组从H-1层向上移动的向下调整算法建堆 堆排序 TOP-K问题 前言 上篇文章详细讲解了堆,…

腐蚀与膨胀,图像处理中的结构元与腐蚀膨胀问题(数字图像处理大题复习 P9)

文章目录 腐蚀膨胀 腐蚀 我们要用结构元 B 来 腐蚀 图像 A 如果结构元 B 放到图像的某个地方,正好能对上,那么就把中心放到结果图像上 这里显然红色框是对不上的,而黄色是对得上的 对不上的,全部补上0,这就是结果了…

HTTP 响应头Cache-Control

每个资源都可以通过Http头Cache-Control来定义自己的缓存策略,Cache-Control控制谁在什么条件下可以缓存响应以及可以缓存多久。 最快的请求是不必与服务器进行通信的请求:通过响应的本地副本,我们可以避免所有的网络延迟以及数据传输的数据…

新版考勤管理系统正式发布

O2OA(翱途)开发平台 V8.1版本,因老的考勤管理系统已经无法满足用户需求,并且在架构和业务结构上都不再符合现在大多数考勤功能的需求。我们对考勤管理重新进行了开发,全新的版本更好用,更直观。 考勤管理对员工的工作出勤情况进行…

Multisim—用示波器观察电流波形

使用仪表里面的current probe:它显示实时电流,但无法将电流波形在示波器中显示。 仿真Simulate >仪器Instruments > 电流探针 current clamp:也就是电流钳,它能够将流经的电流转成电压并输入到示波器中进行显示。 双击图纸上…

手机上比较好用的笔记软件使用哪一款?

手机已经成为我们日常生活不可或缺的一部分,它们伴随着我们的方方面面。在这部小小的设备中,我们可以完成许多任务,其中之一就是记录笔记。手机上的笔记软件如今多种多样,但在选择时,敬业签可能是你不容错过的选择。 …

软件需求文档、设计文档、开发文档、运维文档大全

在软件开发过程中,文档扮演着至关重要的角色。它不仅记录了项目的需求、设计和开发过程,还为项目的维护和管理提供了便利。本文将详细介绍软件开发文档的重要性和作用,以及需求分析、软件设计、开发过程、运维管理和项目管理等方面的文档要求…

YOLOv8快速复现 官网版本 ultralytics

YOLOV8环境安装教程.:https://www.bilibili.com/video/BV1dG4y1c7dH/ YOLOV8保姆级教学视频:https://www.bilibili.com/video/BV1qd4y1L7aX/ b站视频:https://www.bilibili.com/video/BV12p4y1c7UY/ 1 平台搭建YOLOv8 平台:https://www.a…

链表反转-LeetCode206

题目: 给你单链表的头结点head,请反转链表,并返回反转后的链表。 示例: 输入:head [1,2,3,4,5] 输出:[5,4,3,2&#xff0…

MongoDB(二)基础操作 创建、删除等

mongodb有一个特点,如果某个库,库下面没数据(mongodb成集合),该库等于不存在的 mongodb只要创建一个库,在库下写入数据,该库才会生成 mongoshe [-hhost -pxxx] 创建数据库 use 数据库名 # 如果…

四种自动化测试模型实例及优缺点

一,线性测试 1.概念: 通过录制或编写对应应用程序的操作步骤产生的线性脚本。单纯的来模拟用户完整的操作场景。 (操作,重复操作,数据)都混合在一起。 2.优点: 每个脚本相对独立&#xff0…

【element-ui】form表单动态修改rules校验项

在项目开发过程中,该页面有暂存和提交两个按钮,其中暂存和提交必填项校验不一样,此时需要动态增减必填项校验 ,解决方法如下: 增加rules校验项 this.$set(this.formRules,name,[{required:true,message:请输入名称,t…

Git 介绍、分布式版本管理软件介绍

文章目录 一. 分布式文件版本管理系统二、Git 介绍2.1. Git 的最基本使用2.2. 工作中使用版本管理工具的经验2.3. Git 的存储方式简介 一. 分布式文件版本管理系统 在分布式文件版本管理系统到来之前,市面上的文件版本管理软件都是集中式的(svn 就是典型…

演讲实录:DataFun 垂直开发者社区基于指标平台自主洞察北极星指标

在7月14日举办的 Kyligence 用户大会的数智新应用论坛上,DataFun COO 杜颖女士为大家带来了《垂直开发者社区基于指标平台自主洞察北极星指标》的主题演讲。接下来,我们一起看看 DataFun 如何在没有专门的 IT 团队的情况下,实现对北极星指标的…

开源框架中的责任链模式实践

作者:vivo 互联网服务器团队-Wang Zhi 责任链模式作为常用的设计模式而被大家熟知和使用。本文介绍责任链的常见实现方式,并结合开源框架如Dubbo、Sentinel等进行延伸探讨。 一、责任链介绍 在GoF 的《设计模式》一书中对责任链模定义的:将…

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(七)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 模型训练1)数据集分析2)数据预处理3)模型创建4)模型训练5)获取特征矩阵 2. 后端Django3. 前端微信小程序1)小程序全局配置文件2&#xff09…

时序预测 | MATLAB实现POA-CNN-LSTM鹈鹕算法优化卷积长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现POA-CNN-LSTM鹈鹕算法优化卷积长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现POA-CNN-LSTM鹈鹕算法优化卷积长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现POA-CNN-LSTM鹈鹕算法优化卷积长短…

C语言每日一题(1):实现库函数strlen()

文章主题:库函数strlen()的实现所属专栏:C语言每日一题作者简介:每天不定时更新C语言的小白一枚,记录分享自己每日的所思所想。个人主页:[₽]的个人主页 目录 前言 函数介绍 编程起因 设计思路 1.整体逻辑 2.参…

Postman 的使用教程(详细)

Postman 使用教程 1. 是什么 Postman 是一个接口测试工具软件,可以帮助开发人员管理测试接口。 官网:https://www.getpostman.com/ 2. 安装 建议通过官网下载安装,不要去那些乱七八糟的下载平台,或者留言获取 官网下载地址&am…