光电链路训练
光电链路训练
前言
遇到的困境
终于来到了最终关卡,是我这两年来一直想做,但却一直只做了个半吊子的工作——完整光电链路训练。
以前一直在找平台做这件事,有段时间用的是 ADS + VPI 平台,但问题是这个平台对链路训练的支持极差。它只负责计算波形输出,但输出的波形直接交给 Channelsim 中的 Rx 会出问题。
我曾花了很多精力解决这个麻烦,想将 VPI 导回 ADS 的波形重新用 ADS 中的 Rx 去均衡。但这么做不行,因为我这边的 IBIS-AMI 模型属于脉冲自适应型,而非波形自适应。"波形自适应"指的是模型在 AMI_GetWave 流式处理过程中,根据它看到的信号统计去调 CTLE/DFE 系数。
脉冲自适应 / pulse based:CTLE/VGA/FFE/DFE 的系数全部在 AMI_Init 里、根据通道冲激响应算好,AMI_GetWave 只是套用这套固定系数。必须有真实冲激响应,无法用 delta 跳过。
波形自适应型模型:系数是在 AMI_GetWave 里边处理波形边收敛的。这种才可以 delta-Init + 纯 GetWa ...
搭建EOE链路并实现系统仿真
搭建EOE链路并实现系统仿真
前言
前面已经分别对 MZM EOE 仿真和 ADS 中的 Ethernet Designer 做了简单介绍和入门,现在可以将两者融会起来,完成阶段性目标:
EOE链路的引入并完成系统仿真
搭建 EOE 链路
创建项目
新建一个项目 Workspace
为了省事儿,我们可以直接将案例搭建的 lib 直接调过来,这样很多基础组件和公用模块就不用从头开始了。
利用 MZM_behavioural_lib 构建好的模块
项目中可以看到之前 MZM EOE 链路的原理图和模块了。
需要注意的是,你对调用过来的 lib 进行的修改,是会同步到原项目的!也就是说,它不是复制,而是共享读写,修改前最好做个备份,免得把原 lib 给改坏了。
接着,我们需要对项目中引入的 lib 和原理图进行整理,要养成好习惯,将自己的项目整理的井然有序
右键点击项目根文件夹,新建几个 Folder,用来分类 Ethernet lib 和 MZM lib ,并建立一个 bak 文件夹将刚引入的一堆 cell 备份进去
这个时候 bak 文件夹里就是最初引进来的 lib,需 ...
ADS 中的 Ethernet Designer
ADS 中的 Ethernet Designer
—— 快速入门 System Designer for Ethernet
前言
近年来,随着人工智能对算力与带宽需求的持续提升,数据中心内部的互连架构正逐渐从传统中心化交换模式向更高带宽密度、更低延迟的点对点互连模式演进。以 NVLink、NVSwitch 为代表的新型高速互连技术,正在推动 ASIC 芯片之间形成更加紧密的协同计算网络。与此同时,工程领域对于链路信号完整性(SI)的关注也不断提升,人们更加关注眼图、BER、SNR 等关键指标在高速链路中的演化规律,并基于系统级仿真结果对器件与链路结构进行联合优化。
为了进一步提高服务器之间的信息传输效率,业界开始尝试以光互连替代传统铜缆互连,在数据中心层级构建高带宽、低功耗的光通信网络。目前广泛采用的方案通常通过可插拔光模块完成电口到光口的转换,但信号在 ASIC、封装基板与光模块之间的长距离电互连过程中会引入额外损耗与功耗,限制系统整体性能。因此,人们希望实现"光 I/O"架构,使信号从 ASIC 输出后即可直接完成光调制,并通过光纤进行高速信息交互,由此催生了 ...
MZM EOE 仿真
MZM EOE 仿真
今天研究一下 ADS 中的 EOE 链路仿真案例
前言
根据前面的了解,对于一个 EOE 链路而言,最基础的链路构成包含:
电信号源
载波光源
电光调制器
光纤
光电探测器
Tx 和 Rx 就不细说了,里面可能包含 Driver,TIA,VGA 以及各种 DSP 电路,这些都是 EOE 前后的组件。
以前我们在 VPI 中对 EOE 链路进行了仿真计算,但自从 ADS 出来 Photonics Designer Suite 后,可以考虑在 ADS 中对该链路直接计算了。
我们接下来以MZM_EOE_Simulation案例为例,详细分析 ADS 中的 EOE 链路仿真。
仿真器
首先分析该仿真案例的全局情况
包络仿真器具体工作原理和机制已经在前面的博客ADS 中的包络仿真器中介绍过了,这里仅针对当前仿真案例的情况进行描述。首先用一个变量与方程组件来集中管理包络仿真器里的参数,包括信号的波特率 15e9,仿真符号数 10000,环境带宽为 5 倍波特率。同时定义了载波频率 Freq[1] 与载波波长 lambda。仿真时间根据带宽和符号数来确定。
信源
...
离散时间PRBS源
离散时间PRBS源
前言
在进行链路仿真中会经常遇到各种 PRBS7、PRBS13、SSPRQ 等码型。这些码型在仿真中通常用算法来生成,而非直接存储调用。针对 ADS 中的 PRBS 码型生成器 VtLFSR_DT,我们大致了解一下码型的生成原理与设置指标。
信源生成器
VtLFSR_DT 是一个信源生成器组件,全名是 Vt(Voltage source in time domain)、LFSR(Linear Feedback Shift Register)、DT(Discrete Time)。这是一个离散时间数字源,需要输入的主要参数为 Vlow、Vhigh、Rate、Delay、Taps 和 Seed。
Vlow、Vhigh、Rate、Delay 不需要多说,无非就是高低电平,符号率与时延,决定了输出序列的大小、速率和相位。
问题主要集中在 Taps 和 Seed,这俩是啥?
为了彻底搞清楚这俩到底是什么,我们得从一个最基本的数学概念开始讲起,伽罗瓦域
群论与伽罗瓦域
伽罗瓦域的概念源自于群论,想必大家都听说过法国数学家伽罗瓦的故事,在他还只有十几岁的时候,他就发现了 n 次多项 ...
ADS 中的包络仿真器
ADS 中的包络仿真器
仿真器工作原理
仿真器是ENVELOPE,具体原理与 VPI 中保持一致,即慢变振幅近似下的等效基带变换。主要分析载波的时变振幅,因此得名包络仿真器。
包络仿真器的处理对象是时域调制信号,下面概述电路包络仿真过程的基本概念:
输入信号变换:
每个调制信号都可以表示为一个载波由一个包络调制而成,即 A(t)ejf(t)A(t)e^{jf(t)}A(t)ejf(t)。采样包络的幅值和相位用作谐波平衡分析的输入信号。
含时变包络的谐波平衡分析:
在每个时间步都会进行谐波平衡分析,该分析既包含基本的谐波平衡方程,也考虑时变包络的影响。此过程会生成一系列频谱用以表征不同时间步下电路的响应。电路包络通过具有时变系数的傅里叶级数提供电路的完整非稳态解。
这里需要详细说一下背后的原理
什么是谐波分析,谐波分析 = 用傅里叶分析专门研究“谐波”这一类频率成分,如果基波频率是 f0f_0f0,2f02f_02f0 就是二次谐波,3f03f_03f0 就是三次谐波,特别关注这一类整数倍频的方法就叫谐波分析。谐波平衡,就是在谐波分析的基础上,让电路满足 ...
求解器中的预处理器
求解器中的预处理器
Krylov 算法中的预处理器 Preconditioner
前言
Newton-Krylov 迭代法已经能求解绝大多数非线性电路方程组了,但遇到一些刚性电路(特征值量级差异巨大的电路,雅可比矩阵病态),一个器件时间常数纳秒级,一个器件时间常数毫秒级,且带有严重非线性,收敛还是会变得非常困难。
人们为了解决上述情况,提出了预处理器(Preconditioner)这个概念。预处理的本质定义就是
把原问题 Ax=bAx=bAx=b 变成一个更容易被 Krylov 收敛的问题。
数学原理
当求解器拿到一个大型方程组 Ax=bAx=bAx=b 的时候,它通常不会直接开解,而会先对方程组进行预处理
左预处理(常见)
M−1Ax=M−1bM^{-1}Ax=M^{-1}b
M−1Ax=M−1b
右预处理
AM−1y=b,x=M−1yAM^{-1}y=b,\quad x=M^{-1}y
AM−1y=b,x=M−1y
通过上述处理,能够使 M−1AM^{-1}AM−1A 的谱性质更好,从而更容易收敛。预处理之所以能够加速收敛,是因为
Krylov 迭代的收敛速度,近似取决于其 ...
非线性方程组求解器算法
非线性方程组求解器算法
总结一下电路仿真器中的非线性方程组求解器算法,即 Newton-Krylov 方法
算法概述
外层循环:非线性泰勒展开(牛顿法)
动作:面对复杂的非线性方程 F(x)=0F(x)=0F(x)=0,牛顿法确实是在当前点进行一阶泰勒展开。
结果:它丢掉了高阶项,将原本"弯曲"的非线性问题变成了"笔直"的线性方程 J⋅Δx=−F(x)J\cdot \Delta x=-F(x)J⋅Δx=−F(x)
内层计算:线性方程组求解(Krylov 迭代)
动作:现在我们手里有一个巨大的线性方程组。如果电路很大,我们不用"暴力"的高斯消元,而是用 Krylov 子空间迭代(如 GMRES)。
结果:它不存完整的 JJJ 矩阵,而是通过不断的"向量乘法"试探,快速求出 Δx\Delta xΔx
约束导向:弧长法加持(弧长约束)
动作:如果此时电路处于极端非线性区(比如增益压缩的拐点),直接按牛顿法的 Δx\Delta xΔx 跳过去可能会"脱轨" ...
ADS 中的光 S 参数
ADS 中的光 S 参数
前言
最近 ADS 新出了 Photonics Designer Suite,试用了一下,整体知识图谱与 VPIphotonics 一模一样,无非就是基于慢变振幅近似下等效基带变换的数学原理。因此,ADS 给这个仿真器起了个很直白的名字,叫做ENVELOPE,即波包仿真器(这个仿真器很早就有了)。
最有趣的还是 Photonics Designer 中引入了几个新的仿真器和模块,是专门针对光信号的,例如OPTICAL S-PARAMETERS和Optical Simulation Block。
其中Optical Simulation Block的作用是针对光信号偏振而来的,我们知道 VPIphotonics 中的光信号基本模式有两种,一种是Sample,一种是Block,分别对应不同边界条件。前者非周期双向交互,后者往往是周期单向,且传输延迟远大于数据块持续时间。ADS 里的Block对应含义与 VPI 中保持一致。
最有意思的还是OPTICAL S-PARAMETERS这个仿真器,因为据我所用的 VPI 11.1 版本中还没有这个东西,而它又是非常重要的网 ...
SerDes 信号是如何恢复出来的
SerDes 信号是如何恢复出来的
搞了快两年的信号处理,知识碎片零零散散,趁这个机会总结提炼一下。
SerDes 信号与系统
所谓 SerDes,就是 Serializer-Deserializer 的简写,指代发射端并行信号先通过串化器转成串行信号,通常以差分信号的形式传输,并在接收端解串还原成并行信号的系统。
因此发射端输出的信号是一串速率极高的振荡波形,从一G到百G量级的电磁信号。如果信号是以光载波的形式传输,整个系统可以看成强度调制-直接探测(IM-DD)系统,不同的幅值对应不同的比特序列。最常见的 NRZ 信号一个符号对应一个比特,也就是 PAM2 信号,有两个电平 level。PAM4 信号有四个电平 level,一个符号对应俩比特,因为俩比特的状态有四种。
我们真正想要的,是发射端输出的比特能尽可能正确的在接收端拿到。即便拿到的比特序列误码率很高,也要想办法尽可能恢复出最真实的结果。这个过程中主要存在三个主体:
发射端 Tx
信道 Channel
接收端 Rx
我们的目的是保证 Tx 送到 Rx 的信息尽可能正确传达,Rx 的波形形貌还是不是 Tx 送出的样子,并不 ...














