搭建EOE链路并实现系统仿真

前言

前面已经分别对 MZM EOE 仿真ADS 中的 Ethernet Designer 做了简单介绍和入门,现在可以将两者融会起来,完成阶段性目标:

  • EOE链路的引入并完成系统仿真

搭建 EOE 链路

创建项目

新建一个项目 Workspace

创建新的项目并添加 Photonics Designer 工具包

为了省事儿,我们可以直接将案例搭建的 lib 直接调过来,这样很多基础组件和公用模块就不用从头开始了。

在DesignKits中添加Lib

利用 MZM_behavioural_lib 构建好的模块

添加案例中构架的 lib

项目中可以看到之前 MZM EOE 链路的原理图和模块了。

需要注意的是,你对调用过来的 lib 进行的修改,是会同步到原项目的!也就是说,它不是复制,而是共享读写,修改前最好做个备份,免得把原 lib 给改坏了。

接着,我们需要对项目中引入的 lib 和原理图进行整理,要养成好习惯,将自己的项目整理的井然有序

右键点击项目根文件夹,新建几个 Folder,用来分类 Ethernet lib 和 MZM lib ,并建立一个 bak 文件夹将刚引入的一堆 cell 备份进去

整理项目

这个时候 bak 文件夹里就是最初引进来的 lib,需要修改的文件根据类型复制到 EthernetDesigners 或 OpticalLinks 文件夹里,不需要修改的例如 PAM4_Source 不用管即可

文件分类

创建 EOE 原理图

我们先从单向 MZM EOE 入手,首先复制 MZM EOE 原理图到 OpticalLinks 文件夹

复制Cell文件 复制光链路

打开这个 schematic,对原理图进行修改:

  1. 将光源 optical_source_env 换成 optical_source,这个极其重要,否则会吃大亏!因为系统链路调用 EOE 子链路会存在光源不兼容导致计算失败!
  2. 信源需要进行差分调整,原链路信源是通过反接 MZM 正负极实现差分输入,但后面 AMI 通过 Port 进来就已经是差分信号了,因此需要将反接正负极改回来,并将底部 PAM4 的 DC 偏置改为负值!
  3. 将接收电路改成差分输出,原 PIN 很复杂,我们这里为了快速走流程,直接用 PIN Behav 行为器件等效,跨阻设为 500,并接 balun 转成差分信号。
  4. 接端口 P1-P4,并将仿真器和变量禁用。

修改后的子原理图如下

修改后的光链路子原理图

创建 Symbol,供后续 Ethernet Designer 调用

为光子链路创建符号 创建符号引脚

搭建系统链路

创建 System Designer 原理图

前面已经将光的子链路创建好了,现在要将其整合在博文ADS 中的 Ethernet Designer中的系统链路中。我们直接复制之前的系统链路到 EthernetDesigners 文件夹中

复制前面搭建好的系统链路 复制到EthernetDesigners文件夹中

打开系统原理图,添加 OPTICAL LINK 模块至 Host 与 Module 之间,复制 Host 端的 S 参数模块到 Module 端,并修改各节点与端口参数。注意这里需要在仿真器中设置 EOE 仿真类型,并将前面 EOE 原理图中被禁用的变量复制过来

系统原理图

这里我选定 EOE 模块左节点 U100,右节点 U200,Module 端节点 U2。先定义 EOE 的节点设置

EOE节点设置

由于前面已经定义了光子链路的符号,这里下拉就能看到。根据引脚左 P1P3,引脚右 P2P4 的定义,分配好线路类型。

双击 Host 端的 PostLayout,设置端口与节点

Host端的PostLayout设置 Module端的PostLayout设置

双击 Host 和 Module 模块,设置端口与节点。注意这里要 Back 回来,确保 Host/Module 所接的模块没出错。

Host回退选择正确的接口 Host端节点设置
Module回退选择正确的接口 Module端节点设置

全都设置好了,就可以连线了。

检查仿真设置

仿真设置一定要仔细检查,不然很容易仿真失败。这里包络仿真要确定光链路谐波频率,并只计算一次谐波,因为光载波没有发生非线性过程。

设置仿真模式 包络仿真设置

Probe 的设置也要重新检查,尤其是 Signal Stream 这里,确保数据传播方向正确

检查 Probe 的 Stream Type

需要额外注意的一点是,Rx 的 AMI 可能会输出一些数据,需要双击 Module 模块,设置 Rx AMI 的 Save Out/InOut parametersyes

Rx AMI 设置

需要注意 Rx AMI 中的 Ignore_Bits 参数,你要跑的 NumberOfBits 参数最好要大于这个数,否则 AMI 没有输出了。

做好全部这些,就可以开始运行仿真了。


仿真结果

仿真运行大概半分钟左右,结果如下

第一次仿真结果

这里的眼图结果从上往下的顺序是:U1——U100——U200——U2——Rx_AMI_out。

我们可以发现,第一张图 U1 很明显不正常,这是由于光子链路中 MZM 的反射导致的(我个人觉得奇怪的是 MZM 电极的 S 参数和阻抗没地方设置)。因此,我们回到 EOE 子链路中,在 P1P2 端口后加一个 Amplifier2 组件,并设置 S12 回损为 0,再来个 3 dB 放大,抵消 Tx 端输出阻抗的分压。

EOE中插入一个理想放大器

保存后,回头再跑一次系统仿真

第二次仿真结果

现在可以看到,U1 节点处的眼图变得正常了。