Complex Digital Hardware Design学习笔记(四)——SERDES IP

在这里插入图片描述
图1
SERDES是“Serializer(串行器)/Deserializer(解串器)”的缩写。SERDES(串行器/解串器)信号是一种用于高速数据传输的信号处理技术。它通过将并行数据转换为串行数据以减少所需的传输引脚数量,从而提高带宽效率,同时在接收端再将串行数据转换回并行形式。让我们先思考一个问题,并行通信中数据是如何传输的?

并行通信中数据是如何传输的?

并行通信中数据传输的详细过程和原理:

  1. 并行接口:并行通信通常使用专门的接口(如并行端口)进行数据传输。每个数据位都有独立的传输通道,这样可以同时发送多个数据位。

  2. 数据输入:外设(如计算机、打印机等)将数据发送到“数据输入线”,并通过特殊的控制信号(如“输入数据准备好”状态线)通知并行接口准备接收数据。

  3. 数据锁存:并行接口中的输入缓冲器会锁存接收到的数据。当缓冲器满时,接口会通过“数据输入回答”线通知外设,停止继续发送数据。

  4. 同步与时钟信号:为了确保发送和接收双方能够准确识别数据,通常使用时钟线同步数据传输。这意味着在数据传输的过程中,会有一个时钟信号来协调各个数据位的发送和接收。

  5. 传输速率:由于并行通信中所有数据位是同时传输的,因此其传输速率通常高于串行通信。常见的应用场合包括计算机内部部件之间的通讯(如CPU与内存之间)以及打印机等外设的连接。

  6. 局限性:虽然并行通信在短距离内具有较高的传输速度,但其复杂性和成本相对较高,并且在长距离传输中容易受到干扰。并行传输想要提升速度的方法只有,a.更多的平行通道;b.更快的时钟。更多的通道使得设计更加复杂,更快的时钟更容易崩溃。 因此,现代通信系统中,尤其是在大带宽需求的情况下,串行通信技术(如SerDes)逐渐取代了并行通信。

如图1所示,把时钟嵌入数据中,发送端将时钟和数据一起编码,接收端分别提取时钟和数据,时钟用于数据采样。SERDES表示序列化器和反序列化器。它们用于通过电差分对以每秒数千兆比特的速度传输数据。它们也被称为多千兆串行收发器,或简称收发器。它是一个带有模拟和数字电路的硅硬IP核,内置在许多现代ASIC芯片中。它的目的是通过传输序列化和编码数据的两个差分对与另一个设备(点对点)进行通信。在点对点总线的每个方向上使用一个差分对。更高带宽的SERDES接口有多个SERDES通道——一个通道由一个发送差分和一个接收差分组成。

SERDES 信号

关键概念

  • SERDES(串行器/解串器):一种用于将并行数据转换为串行数据的技术,反之亦然,从而实现通过更少的线路进行高速通信。
  • 嵌入时钟:一种机制,将时钟信号嵌入到数据流中,允许发射器和接收器之间在不需要单独时钟线的情况下进行同步。
  • 时钟数据恢复(CDR):接收器从输入数据流中提取定时信息的技术。

信号特性

  • 差分信号传输:利用一对信号的相反极性来减少噪声,提高信号完整性。
  • CML(电流模式逻辑):在SERDES接口中使用的一种差分信号传输方式,通常采用AC耦合以消除直流偏置。
  • 电容值:标准连接通常约为100nF,对于某些应用(如PCIe),可增加至220nF。

通信协议

  • 多层协议:与简单协议(如PMBUS、I2C)不同,SERDES通信采用分层协议结构(例如,以太网有4-7层)。
  • 数据包大小:能够传输从100字节到10,000字节的大型数据包,而传统协议通常涉及较小的事务。

链路架构

  • 点对点链路:每个设备(ASIC)直接连接到另一个设备,而不是采用多重连接配置。
  • 通道配置:SERDES链路可以具有多个通道(例如,x1、x8),其中每个通道由一个TX和RX差分对组成。

数据传输过程

  1. 数据串行化:并行数据被拆分成块并串行化以便传输。
  2. 信号完整性减轻:使用FIFO缓冲区等技术管理延迟,确保接收端的数据输出同步。
  3. 链路训练与自动协商
    • 设备自动协商速度和链路宽度等参数。

    • 对信号完整性和性能进行优化调整。

      FIFO(先进先出,First In, First Out)是一种常见的数据结构和缓存机制,用于存储和管理数据。它的基本特点是:第一个被存入的元素将是第一个被取出的元素。
      

错误处理与延迟

  • 错误检测:在协议栈的各个级别使用CRC检查传输数据中的位错误。
  • 重传请求:如果检测到错误,则生成请求重新发送数据包,这可能引入系统延迟。
  • 前向纠错(FEC):与传统错误检测相比,一种提高可靠性的替代方案,特别是在需要精确时序的系统中。

设计考虑

  • PCB布局规则:高频SERDES信号必须遵循特定的布局指南,以维护信号完整性和性能。
  • 集成电容:对于更高的速度,一些ASIC包含片上AC耦合电容,以减少电路板复杂性。
  • 固件可配置性:某些SERDES实现允许固件调整参数,实现通道反转或均衡器设置等功能。

结论

SERDES技术在现代高速数据通信中扮演着重要角色,能够高效地传输数据,同时管理与时序、信号完整性和错误校正相关的复杂问题。理解这些原理对于设计利用SERDES接口的强健系统至关重要。

SERDES Tile架构——瓦片架构

在这里插入图片描述
FIGURE 2.16 General block diagram of a SERDES tile.

1. 组织结构

  • SERDES 通道通常以瓦片形式组织,每个瓦片包含4到16条通道。
  • 每个瓦片有特定的名称(例如“Warp Core”、“GTM 瓦片”),依据其设计和产品代次。

2. 功能

  • 每条通道由独立的发送和接收信号路径组成,并配备PLL(相位锁定环)来管理时钟信号,以确保高速度的数据传输。

时钟分配

1. 参考时钟

  • 瓦片可以使用外部参考时钟输入或内部芯片时钟。
  • 为了提高效率,通常会将单个外部参考时钟分配给多个瓦片,通过短距离的芯片内部布线资源来最小化抖动。

2. 频率管理

  • 参考时钟的频率通常在100到322 MHz之间,这些时钟信号会被乘以一定倍数以达到所需的线路速率(例如,25 Gbps NRZ接口需要25 GHz的时钟)。
  • PLL的分频器决定了合适的参考时钟频率。

测试能力

1. 回环测试

  • 内部回环:通过连接TX和RX的PCS输出,可以在没有外部连接的情况下进行内部协议逻辑测试。
  • 外部回环:需要物理连接(如电缆或回环插头)在TX和RX通道之间,以验证通过PRBS模式的数据传输。
  • 远程回环:设备将收到的数据全部发送回去,从而允许错误计数和链路测试。

2. PRBS模式

  • 伪随机二进制序列(PRBS)用于应力测试信号完整性,在芯片上捕获眼图时创建最坏情况的眼图。
  • 收发器可以设置为PRBS模式,以进行稳健的错误检查和比特错误率分析。

高速协议中的高级特性

1. 复杂性增加

  • 更高带宽的协议需要增强的SERDES功能,支持NRZ和PAM4信号。
  • PAM4使用2位输出表示四个电压水平,因此接收器可能需要更先进的技术,如快速模数转换器。

2. PCS增强

  • 物理编码子层(PCS)实施附加功能,例如转码和前向纠错(FEC)。
  • FEC优势:此技术在不重新发送的情况下恢复损坏的位,大幅改善比特错误率(例如,从1E-3提升至1E-15)并减少插入损耗需求5至10 dB。

总结

SERDES 瓦片在ASIC和FPGA中的设计集成了多种功能和能力,以促进高速数据传输,同时确保可靠性和测试灵活性。随着技术的发展,保持低抖动、优化时钟分配和增强错误校正机制变得日益重要,以支持复杂的通信协议。

SERDES 传输路径

在这里插入图片描述
FIGURE 2.17 SERDES TX block diagram.

传输路径的关键组成部分

  1. PCS块(物理编码子层)

    • 负责并行数据总线管理和编码。
    • 通常工作在32到128位宽的并行总线上,这些数据可能会分布在多个通道中。
    • PCS逻辑通常处理较窄的8到10位数据,经过FIFO(先进先出缓冲器)后以更高的频率运行。
  2. 串行化

    • 通过移位寄存器将并行数据转换为串行流,速度可达基频的十倍。
    • 可以集成一个PRBS(伪随机比特序列)生成器用于测试目的。
  3. 带外信号(OOB)

    • 通过发送测试信号来检测连接的设备,以指示终端电阻的存在。
    • 此功能支持即插即用能力,便于设备识别。
  4. 编码方案

    • 8b10b编码:将8位数据转换为10位代码,25%的组合用于控制字符,同时保持直流平衡,有助于时钟恢复。
    • 64b66b编码:在以太网应用中使用,旨在降低与8b10b编码相比的开销。
    • 128b130b编码:在PCIe 3.0中使用,提高数据传输效率。
  5. 时钟补偿

    • 由于发送和接收ASIC使用独立的时钟振荡器,必须进行时钟补偿。
    • 特殊的时钟补偿字符入到TX FIFO中,以帮助接收端管理同步,防止数据超限或不足。
  6. 前向错误修正(FEC)

    • 自56G收发器开始引入,以最小化比特错误率,使物理层要求更加宽松。
  7. 前馈均衡(FFE)

    • 结合当前数据和延迟版本的数据(抽头值)来改善长链接上的信号完整性。
    • 抽头值可以在链路训练过程中动态调整,或者根据最佳实验室条件通过软件设置。
    • 基本的FFE实现包括预加重(增强高电平之前的信号强度)和去加重(降低低电平之后的信号强度)。
  8. 低摆幅模式

    • 当FFE关闭时,所有比特均匀传输,优化了短链接的性能,干扰较少的情况下效果更佳。

传输路径组件所解决的挑战

  • 符号间干扰(ISI):在高速数据传输中,前面的比特会干扰当前比特的检测。FFE和RX DFE(决策反馈均衡)等技术被用来最小化这种影响。
  • 插入损耗:信号在物理介质中传播时发生的损失,通过均衡技术提升信号幅度来减轻该问题。

总之,传输路径的设计及其各个组成部分协同工作,以确保可靠的高速数据传输,同时应对数字通信中固有的挑战。

传输路径分为两个部分:处理并行数据总线和代码相关逻辑的PCS块以及与串行化相关的PMA块。核心逻辑接口是一个并行总线,通常32到128位宽,但它可能被分成多个通道。并行pc逻辑通常是8到10位宽,由FIFO转换为更窄但更高的频率。进行最后串行化的移位寄存器进一步将信号加速到行速率的10倍。为了进行PRBS测试和眼球捕获,可以将PRBS发生器连接到信号路径上,而不是连接到核心逻辑总线上。TX路径框图如图2.17所示。

发射机还包含用于带外信号(OOB)的电路和逻辑。OOB的目的是通过从TX引脚发送慢速测试信号到电路板走线来检测是否连接在线路的另一端,这些走线根据终端电阻的存在不同地拉电流(具有RX SERDES的ASIC将具有此类)。它基本上是即插即用,或设备存在检测。

编码器是SERDES pc的一个重要组成部分。8b10b编码器将8位数据转换为10位数据“符号”,其中1/4的代码组合携带用户数据,其余为控制字符保留。编码还有助于保持时钟/数据恢复电路和交流耦合工作的直流平衡。这些10位码中的一些可以很容易地识别或检测到,因此它们可以用于不通过接收器核心逻辑总线传递的链路维护控制消息传递。这为通信链路增加了20%的开销。

为了减少这种开销,发明了64b66b编码,它将64位用户数据转换为66位代码,例如在10到100Gig以太网上使用。类似地,PCIe3.0上使用128b130b编码方案,而PCIe2.0上使用8b10b。

通常,发送数据的ASIC和接收数据的ASIC在不同的时钟振荡器上运行,这些振荡器不可能具有完全相同的频率。这将导致接收ASIC接收比预期更多或更少的数据,可能每秒额外接收数十万位。作为一种变通办法,“时钟补偿”被发明了出来。TX PCS在TX FIFO中定期插入时钟补偿字符,然后接收器检测到这些字符(作为编码的用户数据将永远不会在其中包含这些特殊字符),并决定跳过将它们写入RX FIFO或编写额外的字符以防止FIFO运行不足或超支。我们希望FIFO指针漂浮在范围的中间某处,否则数据传输将被它阻塞。

前向纠错(FEC)通常用于56Gig收发器,它有助于消除少量的比特错误,从而可以放松物理信道误码率要求或插入损耗预算。

发送缓冲器实现前馈均衡(FFE),如图2.18所示。这意味着,它不只是将数据流驱动到输出行,而是驱动数据流和数据流的延迟版本的总和。每一个延迟的版本都被称为“点击”。

抽头值可以通过链接训练自动确定,也可以通过软件硬编码确定(如果我们在实验室中经过试验/错误确定最佳设置)。抽头值存储在PHY控制寄存器中。延迟是使用d触发器来实现一个时钟周期的延迟。这样做的目的是加强信号,使它在另一端更容易被探测到。

由于符号间干扰(ISI),在一长串逻辑低电平之后很难检测到逻辑高电平,但如果新的逻辑高电平被驱动得更强(振幅更大),则可以改进。TX-FFE的最基本实现是预强调或去强调,基本上是一个1-tap FFE。

当FFE关闭时,所有比特都被同等驱动,我们称之为“低摆幅模式”,这是非常短的链路的首选模式。FFE和RX-DFE主要用于对抗长链路上的ISI和插入损耗。

SERDES接收路径

在这里插入图片描述
FIGURE 2.18 TX FFE concept.
在这里插入图片描述
FIGURE 2.19 SERDES RX block diagram.
在这里插入图片描述
FIGURE 2.20 RX DFE concept.

通用SERDES接收路径的完整路径可以在图2.19中看到。信号从电路板通过模拟前端进入芯片,模拟前端包括经过校准的终端电阻和偏置电路。一个连接在ASIC的校准引脚和电路板地之间的外部校准电阻,可以使启动状态机对SERDES终端进行准确的校准。

在模拟前端之后,接收到的信号被传递到连续时间线性均衡器(CTLE),这是一种简单的模拟滤波器,其频率响应提升高频以补偿损失,基本上是长通道插入损耗特性的逆向补偿。CTLE通常与可编程增益放大器结合使用。

接下来,信号通过数字均衡器,具体是决策反馈均衡器(DFE)块,如图2.20所示。这进一步补偿了电路板通道的信号完整性影响,包括损失和反射。然后,信号被传递到**时钟数据恢复(CDR)**模块,该模块从数据流中恢复时钟,并在理想的时序位置用恢复的时钟抽样数据。

CDR输出的数据流反馈到DFE,并转发到移位寄存器,以将高速串行数据转换为低速并行总线。移位寄存器需要知道一个字节(或更长符号)何时结束以及下一个字节何时开始。这在链路训练期间由**字节/符号对齐(字节引导)**逻辑设置,通过寻找特殊的8b10b(或64b66b、128b130b)字符来识别编码流中的起始位置。

这些字符可以很容易地在流中标识出,所以逻辑会引导移位寄存器的对齐,直到符号起始位置与移位寄存器的起始位置对齐,然后在运行时保持这个位置。在链路训练后,数据是连续的,即使在没有用户数据要发送的情况下,也必须传输一些空闲字符(10到130位)来填充未使用的比特时间,以保持字节对齐并保持CDR锁定,只要设备通电就持续进行。

接收FIFO及其用途

接收FIFO有多个用途:

  • 时钟域交叉支持:实现从线速时钟到核心时钟域的转换。
  • 通道间去偏差:纠正通道间的时间不匹配。
  • 参考时钟频率补偿:调整参考时钟频率的变化。

在链路训练期间,接收器状态机检测每个通道之间的偏差量,以实现通道间去偏差或“通道绑定”功能。这涉及查找流中的特殊8b10b或64b66b代码字符。状态机会对每条通道的FIFO索引添加偏移量,直到它们在同一时钟周期内产生相同的对齐字符。

时钟补偿逻辑会从FIFO中移除“跳过”控制字符,以防止由于两个ASIC使用稍微不同的时钟频率而导致的溢出或下溢。FIFO在核心侧可能更宽,以允许核心逻辑以较低的频率和功耗运行。

符号字符解码器

符号字符解码器(如8b10b)简单地重建原始数据流。当信号到达此处时,所有的8b10b控制字符已经完成其目的,可以被丢弃。PRBS检查器计算正确的PRBS序列,并将输入流与计算出的序列进行比较,以检测比特错误,这仅在PRBS测试模式下启用。

老旧与新型SERDES设计

某些低速的老旧SERDES设计并不包含数字DFE均衡器,仅依赖于CTLE。而一些更新的SERDES接收器则基于ADC(模数转换器)。在这种情况下,信号由ADC在恢复的时钟下采样,但DFE使用的是数字汇总电路,而不是模拟的。在方框图中,CTLE与DFE之间将存在一个ADC模块。这些完全数字的DFE通常被称为“DSP”。

值得注意的是,一些基于ADC的PAM4收发器可能不支持内部眼图扫描,仅提供简化的统计图;用户应查阅相关文档以

### SerDes IP核在FPGA和ASIC中的设计、实现与使用 SerDes(Serializer/Deserializer)IP核是一种广泛应用于高速数据传输的接口技术,其核心功能是将并行数据转换为串行数据以进行长距离传输,并在接收端将串行数据重新转换为并行数据。以下内容详细探讨了SerDes IP核在FPGA和ASIC中的设计、实现及使用方法。 #### 1. SerDes IP核的设计 SerDes IP核的设计通常需要考虑目标架构(FPGA或ASIC)的具体需求和限制。对于ASIC设计,SerDes IP核通常是定制化的,以满足特定工艺节点的性能要求[^3]。而在FPGA中,由于硬件资源的灵活性较低,设计时需要特别关注资源利用率和功耗优化。例如,在Intel Altera FPGA中,Enhanced PCS模块支持特定的数据位宽配置,如当FPGA与PCS接口位宽为66时,`txparallel`位宽为64bit,且控制字位于低2bit位置[^4]。 #### 2. SerDes IP核的实现 在FPGA中实现SerDes IP核时,通常会利用内置的硬核模块(如收发器),这些模块提供高性能的串行通信能力。然而,对于ASIC实现,SerDes IP核可能包括模拟组件(如PHY层),这些组件无法直接移植到FPGA上[^3]。因此,在基于FPGA的原型中,通常需要通过数字“仿真PHY”或其他替代方案来模拟模拟接口的功能[^3]。 #### 3. SerDes IP核的使用 在使用SerDes IP核时,无论是FPGA还是ASIC,都需要对参数进行精确配置。例如,在FPGA中使用Intel Altera Transceiver IP核时,必须正确设置数据位宽、时钟频率和其他相关参数[^4]。此外,IP核的使用并非简单的“即插即用”过程,尤其是在FPGA环境中,可能需要额外的适配工作以确保功能的正确性和兼容性[^2]。 ```python # 示例:配置Intel FPGA SerDes IP核 def configure_serdes_ip(fpga_model, data_width, clock_frequency): if fpga_model == "Altera": if data_width == 64: # 配置Enhanced PCS模式 tx_parallel_data = [0] * 64 control_word = [0, 0] return tx_parallel_data + control_word else: raise ValueError("Unsupported data width for this FPGA model.") else: raise NotImplementedError("Configuration not supported for this FPGA model.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值