串行总线技术(一)-串行总线结构(以PCIe为例)

串行总线的出现

在早期的计算机系统中,多数外围设备使用并行总线结构。这些总线包括PCI和PATA(并行ATA)。当通信速率较低时,并行总线结构可以设计得非常简单和有效,可以连接大量外围设备。通过使用中央仲裁机制,可以方便地实现总线设备间的通信:然而,当速率和带宽不断增加时,并行结构的潜力不断被发掘并不再能够满足系统设计要求。

并行总线结构的带宽可以通过增加总线宽度或者提高总线的工作频率来实现,但这种增加带宽的方式会逐渐变得困难。并行总线会占用很多引脚,而对现代数字芯片来说,单一芯片中集成了大量的功能,引脚本身就是一种非常紧张的资源,这为继续增加总线宽度带来了困难。

另外,总线频率已经进行了多次增加(如PCI-->PCIX),继续对大量信号线提高工作频率也变得更加困难。除此之外,并行结构还有一些固有不足,如没有包的概念,没有错误检验机制等。在并行总线中,传输的是数据突发片段,不是完整的数据包,也没有与所传输数裾 相关的CRC校验结果以进行差错控制。并行总线的不足促进串行总线结构的发展,这不仅克服了原有的缺陷,还带来了其他好处。如图所示为并行总线与串行总线示例。

现在的数字系统中有很多种串行总线。PCI Express(代替了并行PCI总线)、SATA(代替PATA)以及USB等就是一些常用的高速总线。这些总线的速率也从MHz达到了GHz。

串行总线的优缺点

优点

  • 占用引脚数量少

串行总线使用一对信号线发送数据(TX+ TX-),使用一对信号线接收数据(RX+ RX-)。而PCI和PCIX等并行总线会占用大量引脚。

  • 差分信号

TX和RX信号线上采用的是差分信号传输方式,这种传输方式具有很高的抗噪声能力。

  • 强错误检测能力

串行协议使用基干包的数据传输方式,对数据包采用了CRC校验。相比于PCI中采用的奇偶校验,CRC校验具有很强的检错能力。

  • 纠错与恢复

因为采用基于包的传输方式并且带有CRC校验,接收设备能够检测出接收数据包中的错误并通知发送端出现了传输错误,发送端可以重新发送出现错误的数据包。

  • 全双工数据和控制流

数据包可以在TX信号线上传输,同时可以在RX信号线上接收控制信息。SATA使用类似HOLD的流控原语来实时阻止数据发送以避免数据溢出。

  • 分割式数据传输

在分割式数据传输中,request和completion可以不出现在同一个数据传输操作中。这不是串行总线所特有的必要特征。所有的串行总线都使用包和分割式数据传输协议进行数据传输。多数早期的并行总线(PCI、AHB)不支持分割式数据传输。最新的并行总线,如AXI 开始支持这一协议。

缺点

串行总线也存在一些不利之处。

  • 只支持点到点连接

通过串行总线只能连接两个设备,而对于并行总线,可以在单一总线上连接多个设备,并目.很容易增减总线上的设备。对于串行总线,我们需要使用交换机和多个总线设备连接。

  • 更大的延迟

由于串行及分层结构特点,串行结构的总线延迟更大一些。

串行总线结构

串行总线结构只允许点到点连接,一条串行总线只能连接两个设备,而并行总线可以同吋连接多个设备。在串行总线结构中,总线设备中需要包括两个基本电路部件:MAC控制器(通常简称为控制器)和PHY(主要实现模拟收发功能)。MAC具有分层结构,通常包括三个 层次。PHY包括两个部分:PCS和PMA。PCS(Physical Coding Sublayer,物理编码子层)主要实现编解码等数字逻辑功能。PMA主要实现时钟恢复、均衡和信号电平检测等模拟功能。

下面我们将以PCIe和SATA为例,对串行总线结构加以分析,如图所示。

MAC控制器包括三个层次:PHY逻辑层 、 数据链路层和事务层。每一层都有自己特定的功能。

PHY逻辑层

两个相互联接设备的PHY逻辑层之间使用PHY层包进行通信,称为有序训练集合,如图所示。PHY层包被用于建立链路和确定交互的操作速度,在训练阶段结束时,双方进入连接阶段,此时它们已经做好了传输数据链路层和事务层包的准备。PHY层包产生于PHY层,终结于另一侧的PHY逻辑层,不会上交给其他层次。

数据链路层

数据链路层使用短的、固定长度(2个dword/8字节)的包在两个设备间交互链路信息,如图所示。这些包也被称为DLLP(Data Link Layer Packet,数据链路层包)。DLLP被用于交换信用信息、ACK、NAK和功率管理协议。DLLP在本层产生,终止于对端的同一层, 不会进一步向上提交。

事务层

本层在两个设备间进行实际的数据交互,如下图所示。这些包被称为TLP(Transaction Layer Packet,事务层包),TLP为变长包。TLP包括头域、数据净荷和CRC校验。一个TLP由start-of-packet符号开始,以END符号结束。

串行总线时钟

在PCIe中,平台提供100MHz参考时钟,通过PCIe插槽提供给总线设备。PCIe端点设备从PCIe连接器处获取该参考时钟并将其交给PHY PMA层。PMA内部有一个PLL,它根据输入的100MHz时钟和输入的RX数据流生成250MHz的时钟PCLK。PHY将PCLK提供给MAC发送数据(从MAC到PHY)和接收数据(从PHY到MAC)都同步于PCLK。对于PCIe,MAC的接收和发送电路工作在同一个时钟域。对于其他串行总线结构,如SATA收发电路时钟可能不同。在SATA中,发送和接收时钟是不同的,属于异步时钟。

发送路径的微结构

MAC和PHY PCS之间的接口是标准的,虽然这不一定必要,但标准化有利于IP核的开发,可提高不同芯片厂商IP核之间的互操作性。对于PCIe来说,该接口被称为PIPE接口。

MAC提供的发送数据的位宽为8比特或16比特。PCLK的频率与数据总线的位宽有直接关系,数据位宽为8比特时,PCLK为250MHz数据位宽为16比特时,PCLK为125MHz,如图所示。

这两个频率是PCIe Genl所使用的,在Gen2中,二者都进行了翻倍。位宽变换电路模块可以将16比特的数据位宽转换成8比特的位宽,接着将其送入8b/10b编码器。编码器将每个8比特的数据转换成为10比特的编码值并将其传递到PHY的PMA层。PMA层使用一个高速时钟(Genl时为2.5GHz,Gen2时为5GHz)进一步将10比特的编码结果转换为单比特串行数据并通过TX信号线发出。

接收路径的微结构

PMA接收电路实现比特提取和串并变换功能,将单比特的串行接收数据变换成为10比特的并行数据,如图所示。

10比特的数据流从PMA接收电路进入PCS接收电路。此时的10比特数据流并非是字符对准的。在PCS内部,10比特数据流先后进入字符对准电路、弹性缓冲区、10b/8b解码电路并最终进入可选的8b/16b转换电路。

字符对准

PCIe接收的数据是以10比特的字符为组成单位的。PMA接收电路将接收数据组成10比特字符时没有按照字符边界进行。字符对准逻辑电路查找COMMA字符并以它为基础进行字符边界对准。对准后的字符流被送入弹性缓冲区,如图所示。

弹性缓冲区

PCIe链路两端所使用时钟的标称值均为250MHz。它们可以使用平台提供的同一个时钟,或者选择它们自带的时钟源来生成250MHz的工作时钟。当使用相互独立的时钟时,它们之间会有微小的偏差(偏差可能非常微小,但不会为0),此时,经过一段时间之后,会造成数据的上溢或下溢。总线一端的时钟频率可能比另一端略微高一些,频率低的一端会出现数据缓冲区上溢,频率高的一端会出现数据缓冲区下溢。串行总线中使用弹性缓冲区来处理时钟频率上的微小差别。我们将对PCIe和SATA中的弹性缓冲区加以介绍。

位宽为10比特的接收符号流被写入一个FIFO。按照PCIe协议,在发送数据时,会按照一定的间隔定期发送填充包(称为SKIP集合)。这些填充包可以在不影响数据净荷、编码/解码、扰码/解扰码的情况下快速插入和去除。写入逻辑持续将10比特的字符写入FIFO,读岀逻辑持续将FIFO中的字符读出。如果写入速度比读出速度快,FIFO中的数据深度将逐渐增加。

当FIFO中的数据深度达到了预先设定的上限时,写入逻辑会丢弃1个或多个SKIP字符。类似地,当写入速度低于读出速度时,FIFO中的数据深度会逐渐降低,当深度降至预先设定的下限时,读出逻辑不再从FIFO中读出数据,它会暂停读出数据,同时向数据通路中插入一个SKIP符号。这里的FIFO就是弹性缓冲区,其内部数据深度是变化的,可以用于调整读写时钟频率的微小偏差,如图所示。

需要说明的是,这种工作机制可以用于处理微小的读写频率偏差,不适合处理较大的频率偏差(较大的时钟偏差需要深度较大的弹性缓冲区并且会引入较大的延迟)。规范中对频率偏差会提出限制,例如,PCIe中的频率偏差应小于300PPM。当时钟偏差被限定在一定PPM之内时,SKIP出现的间隔就可以计算得到。

SATA使用了类似的机制,它会在每256个双字之间插入两个ALIGH原语。ALIGN原语根据两边的频率差可以快速地被丢弃或插入。

10b/8b解码和8b/16b转换

弹性缓冲区的输出进入解码器电路,它会将10比特的字符转换成为8比特的数据。如果PCS-MAC接口数据通道宽度为16比特,那么需要将两个连续的8比特数据拼接起来构成16比特的数据并送给接收MAC如果数据通路宽度为8比特,那么不需要做任何处理,直接送给接收MAC。

后面会继续讲讲《串行总线更多结构》,敬请期待。

NOW

学习Xilinx FPGA最好的资料其实就是官方手册,下表总结了部分手册的主要介绍内容,关注我,持续更新中......

文件名 主标题 内容简单介绍 是否有中文版
UG476 7 Series FPGAs GTX/GTH  Transceivers GTX和GTH介绍,PCIe、serdes等学习必备
UG471 7 Series FPGAs SelectIO Resources 描述 7 系列 FPGA 中可用的 SelectIO资源。
UG1114 PetaLinux Tools Documentaton PetaLinux 工具文档 参考指南 是,V2019.2
UG949 UltraFAST 设计方法指南(适用于 Vivado  Design Suite) 赛灵思® UltraFast™  设计方法是用于为当今器件优化设计进程的一套最佳实践。这些设计的规模与复杂性需要执行特定的步骤与设计任务,从而确保设计每一个阶段的成功开展。依照这些步骤,并遵循最佳实践,将帮助您以最快的速度和最高的效率实现期望的设计目标 是,V2018.1
IP手册 pg057 FIFO Generator FIFO生成器IP使用手册
pg104 Complex Multiplier 复数乘法器IP使用手册
pg122 RAM-Based Shift Register  移位寄存器IP使用手册

推荐阅读

【Vivado那些事】如何查找官网例程及如何使用官网例程

【Vivado使用误区与进阶】总结篇

【Vivado那些事】Vivado中常用的快捷键(二)其他常用快捷键

SystemVerilog数字系统设计_夏宇闻 PDF

图书推荐|ARM Cortex-M0 全可编程SoC原理及实现

简谈:如何学习FPGA

Github 上有哪些优秀的 VHDL/Verilog/FPGA 项目

AD936x+ZYNQ搭建收音机(一)

AD936x+ZYNQ搭建OpenWIFI

无招胜有招-Vivado非工程模式下的详细设计

面试中经常会遇到的FPGA基本概念,你会几个?

推荐一些可以获取免费的国外的原版书籍(电子版)网站

FPGA 的重构

国产CPU概括

从电子游戏历史看IC发展的助推剂

80年代电子游戏及电脑游戏的发展历史

PCIe总线的基础知识

万字长文带你回顾电子游戏的七十多年历史(完整版)

FPGA中异步复位,同步释放的理解

OpenFPGA系列文章总结

用Verilog设计一个16 位 RISC 处理器

介绍一些新手入门FPGA的优秀网站(新增)

Verilog数字系统基础设计-CR

Verilog数字系统基础设计-奇偶校验

建立和保持时间及时序简单理解

(Xilinx)FPGA中LVDS差分高速传输的实现

Xilinx Multiboot实例演示

高速串行通信常用的编码方式-8b/10b编码/解码
Verilog计时(微秒、毫秒和秒)脉冲的产生及同步整形电路

图书推荐|一本图像/视频处理的强大工具书

Verilog HDL-同步技术

再说System Verilog 与 Verilog 的关系

数模混合信号建模语言Verilog-AMS

Intel/Altera 系列FPGA简介

一块带给无数人年少欢乐的CPU,别说你没用过它

Verilog在编写第一行代码之前

【例说】Verilog HDL 编译器指令,你见过几个?

穿越时空的爱恋-Z80 CPU的前世今生

【Vivado】那些事儿-汇总篇

古老CPU启示录-晶体管之路

【Vivado那些事儿】约束的顺序

童年修复系列-SNES芯片组介绍及FPGA实现

优秀的 Verilog/FPGA开源项目介绍(二)-RISC-V

串行总线技术(一)-串行总线结构(以PCIe为例)相关推荐

  1. 高速串行总线系列(2)高速串行总线技术总览

    文章目录 嵌入式高速串行总线技术应用对比 SRIO总线 JESD204总线 PCIE SATA总线 Aurora FC标准 VPX架构 嵌入式高速串行总线技术应用对比 SRIO总线 SRIO(Seri ...

  2. 高速串行总线技术的优点及共同点

    高速串行总线技术的优点及共同点 文章目录 1.优点 2.共同点 1.优点 与并行数据总线相比,高速串行总线优点在于: (1) 更高的传输数据速率 (2) 更好的信号完整性,并行总线的多位数信号间的相互 ...

  3. 车用高速音视频传输串行总线技术简介(APIX、FPD-LINK、GMSL、ClockLessLink)

    现在电动汽车.自动驾驶技术发展得这么猛,对应的对车内的音视频等数据传输带宽需求也在飞一般的提升.现在有的一辆车多达十几颗摄像头,分辨率也从原来的720P普遍提升到2M像素甚至最高到了8M像素,还有丰富 ...

  4. 串行总线的详解XAUI/XLAUI SFP+ PCIE SATA QPI

    主要介绍一下工作常用到的串行总线: FPGA DMA控制器: DMA:direct memory access;包括一条地址总线,一条控制总线,和控制寄存器. 1.XAUI和xlaui https:/ ...

  5. 3|物联网控制|计算机控制-刘川来胡乃平版|第3章:计算机总线技术 补充串行总线部分|课堂笔记|ppt

    2022年 10月 10日 3.3 外部总线 3.3.2 RS-232-C总线 机械特性

  6. 高速串行总线系列(1)8B/10B编码技术

    目录 8B/10B编码 5B/6B 编码表 3B/4B 编码表 控制字符编码表 8B/10B编码的利用率 参考文献 8B/10B编码 为什么要使用8B/10B编码? 8b/10b编码的特性之一是保证D ...

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

    文章目录 前言 时钟校正 接收和发送缓冲区 通道绑定 参考文献 前言 上篇文章讲了高速串行总线中的数据包核参考时钟的相关内容,见:高速串行总线设计基础(六)揭秘SERDES高速面纱之数据包与参考时钟要 ...

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

    文章目录 前言 多相数据提取电路 线路编码方案 8B/10B编解码 运行差异(Running Disparity) 控制字符 Comma 检测 加扰技术 参考文献 前言 SERDES可以工作在多吉比特 ...

  9. 4位快速加法器和4位串行加法器相比_使用混合信号示波器调试串行总线系统

    本应用指南面向的读者是数字系统设计师,他们在研发过程中会用到模拟和数字元器件,包括采用串行总线的微控制器和 DSP 系统.本文讨论调试串行总线设计所面临的挑战和新的解决方案,这些串行总线包括控制器局域 ...

最新文章

  1. 安全日志的自动备份方法
  2. 收藏一些效果炫酷的可视化网站
  3. 使用V-chart时配置踩过的一些坑
  4. 多个数求平均数java_[分享]求任意个数的平均数!
  5. 【渝粤题库】陕西师范大学151210 成本会计作业 (专升本)
  6. Axure快速原型教程02--创建页面和设置界面
  7. 3gpp协议_春天工作室lt;3GPP规范翻译系列gt;1:TS37340协议翻译(导读)第一部分...
  8. 如何解决SQL Server中SQL身份危机
  9. 使用monkey 前准备工作
  10. 【小技巧】自定义asp.net mvc的WebFormViewEngine修改默认的目录结构
  11. 4——编码规则以及vim的使用和虚拟环境
  12. 《经济机器是怎样运行的》笔记(二)
  13. 【运维】linux shell 编程之函数使用
  14. 实时计算交易盈亏、平仓盈亏和浮动盈亏
  15. 计算机硕士论文解读,计算机专业硕士论文提纲范文大全 计算机专业硕士论文提纲如何写...
  16. 最简单AS5048a模块鉴别和读取数据
  17. 数据中台在企业数字化转型中的践行(下篇)
  18. VScode 直接运行ts文件
  19. SqueezeNet: Alexnet-level accuracy whith 50x Fewer Parameters And 0.5MB Model Size
  20. Android studio 百度地图SDK之地图定位与运动轨迹绘制

热门文章

  1. 动态列表的excel导入、导出功能(二)
  2. 2021年电工(初级)考试总结及电工(初级)模拟考试系统
  3. matlab 改变图片的长宽,Matlab怎么调整图片的大小,使它成为特定的长宽
  4. 计算机网络之物理层-基带传输
  5. 轻松5个步骤,解决企业内训师建设难题
  6. python下载与安装
  7. java json上传文件_java实现文件上传
  8. 苹果x要不要升ios14.4系统?
  9. 东南计算机专业课,2018年东南大学计算机935考研真题(大题)回忆全
  10. 宏碁(Acer)商祺SQX4270 140N加固态硬盘,加内存