当前位置: 首页 > article >正文

计算光纤色散带来的相位移动 matlab

 需要注意的地方

1.以下内容纯属个人理解,很有可能不准确,请大家仅做参考

2.光速不要直接用3e8 m/s,需要用精确的2.9979....

3.光的频率无论在真空还是光纤(介质)都是不变的,是固有属性,但是波长lambda=c/f在不同的介质中是不同的。

4.光在介质的传播速度vg = c/n,其中n是介质的折射率。紧接第2条,光在介质中的波长是lamda = vg/f,而非真空中的c/f;

5.一个调制在光载波fc=193.1THz两侧的信号(DSB调制),fs=30GHz。假设信号的phase=0的条件下:

光负边带相位 phase(fc-fs)=-180;

光正边带相位 phase(fc+fs)=0;

那么我将fs=30GHz的调制信号phase=0改变为phase=30,对应的:

负边带相位 phase(fc-fs)=-180-30=-210 (wrapTo180方法后,就是150度);

正边带相位 phase(fc+fs)=0+30=30;

原因在于:相对于光载波fc,正边带的角频率(ws(t))是正的(顺时针旋转),负边带的角频率是负的(-ws(t))(逆时针旋转)

6.色散参数D以及色散带来的延时计算

(1)色散参数表示经过L长度的光纤后,目标信号的波长(比如193.2THz)与参考波长(比如193.1THz对应的波长)的波长差d_lambda(c/193.1THz   -  c/193.2 THz)造成的延时,其单位是(s/m^2)

(2)造成的延时tao = D*L*d_lamda;当然,记得考虑上光传播的物理延时:L/vg;

那么tao_all =  D*L*d_lamda + L/vg;

(3)传播常数的理解,参考另一位博主的文章:全网首篇用人话讲清楚:光纤中的色散_光纤色散-CSDN博客

注意,波数k就是传播常数,当然波数不要理解为波的数量(比如有几束波)

以下是以下总结:

(4)例子(注意,此处的色散计算没有用到传播常数,而是在已经知道光参考频率Fref以及在参考频率Fref上的色散参数D做的例子):

下列公式表示了一个DSB调制的光信号(MZM直流偏压造成的相位移动是pi/2,输入角频率为ws的信号在MZM上下RF口相位差为pi),fai_0和fai_+1,fai_-1分别是色散引入的相位移动,边带信号ws的相位被默认为0度:

PD后的信号如下

所以,只需要计算fai_-1和fai_+1的大小,就能得到PD后信号的相位

%% ---- plot successful all wavelength--------------------------------------------------
c=physconst('LightSpeed'); % 真空中光速,单位:m/s
L = 10e3;  % 光纤长度,单位:m
D = 16e-6; % 色散系数,单位:s/m²
n=1.47;    % 光纤折射率
vg = c/n;  %光纤群速度
Fref  = 193.1e12; % 中心频率(光纤参考频率),单位:Hz
freq_opt = linspace(193.1e12, 195.5e12, 25)';  %频率范围193.1-195.5(THz)
Fsig_l = 30e9;  % 左边带频率 (模拟VPI由于采样不为整数的情况)
Fsig_r = 30e9;  % 右边带频率 (模拟VPI由于采样不为整数的情况)
tao_left =    zeros(length(freq_opt),1);    %存放-30°延时
tao_right =   zeros(length(freq_opt),1);   %存放+30°延时
phase_left =  zeros(length(freq_opt),1);  %存放-30°相位
phase_right = zeros(length(freq_opt),1); %存放+30°相位
phase_left_plot  = zeros(length(freq_opt),1);  %绘图
phase_right_plot = zeros(length(freq_opt),1);  %绘图
phase_true_plot = zeros(length(freq_opt),1);   %绘图
phase_PD = zeros(length(freq_opt),1);          %存放PD后信号的相位
phase_PD_wrap180 = zeros(length(freq_opt),1);  %存放PD后信号的相位(180°wrap)
for i=1:length(freq_opt)
    delta_lamda_l = -(c/(freq_opt(i)-Fsig_l)-c/Fref); %左边带与参考波长193.1THz的波长差(nm)
    delta_lamda_r =  (c/(freq_opt(i)+Fsig_r)-c/Fref); %右边带与参考波长193.1THz的波长差(nm)
    tao_left(i)  = D*L*delta_lamda_l + L/vg;          %左边带与参考波长193.1THz的延时差(s)
    tao_right(i) = D*L*delta_lamda_r + L/vg;          %右边带与参考波长193.1THz的延时差(s)
    phase_left(i)  = -2*pi*Fsig_l*(tao_left(i));   %左边带色散造成的相位移动(rad)
    phase_right(i) = -2*pi*Fsig_r*(tao_right(i));  %右边带色散造成的相位移动(rad)
    phase_left_plot(i)  = getDegree(-2*pi*Fsig_l*(D*L*delta_lamda_l+L/vg)) ;  %左边带色散造成的相位移动(rad)
    phase_right_plot(i) = getDegree(-2*pi*Fsig_r*(D*L*delta_lamda_r+L/vg)) ;  %右边带色散造成的相位移动(rad)
    
    phase_PD_wrap180(i) = (getDegree(phase_right(i))-getDegree(phase_left(i)))/2
end
phase_right_plot(1)= -phase_right_plot(1);   %因为第一个测试波长和参考波长一样,导致d_lamda为负数了
phase_true = (phase_right_plot-phase_left_plot)/2

figure(1);
scatter(freq_opt,phase_left_plot,10,"o","filled");
hold on;
scatter(freq_opt,phase_right_plot,10,"^","filled");
plot(freq_opt,phase_true);
hold off;
legend("(φ+1)","(φ-1)","[(φ+1)-(φ-1)]/2");

% xlim([0:196e12])  ;
% ylim([0,2.2e5]);      
set(gca,'linewidth',1.5);
set(gcf,'PaperUnits','normalized','Position',[500 200 950 450]) %采用相对值设置
% set(gca,'FontName','Times New Roman','FontSize',14);
% set(get(gca,'XLabel'),'FontName','Times New Roman','FontSize',14);
% set(get(gca,'YLabel'),'FontName','Times New Roman','FontSize',14);
set(gca,'XTick',[0:100e9:195.5e12]);
set(gca,'YTick',[-180:30:180]);
% set(get(gca, 'XLabel'), 'String', []);set(get(gca, 'YLabel'), 'String', [])% 去掉label
% set(gca,'xticklabel','','yticklabel','','zticklabel',''); % 去掉坐标值
function degree180 = getDegree(radLong)
%UNTITLED3 此处显示有关此函数的摘要
%   此处显示详细说明
tmp  = rad2deg(radLong);
degree180 = wrapTo180(tmp);
end


http://www.kler.cn/a/397574.html

相关文章:

  • 【WPF】Prism学习(三)
  • LLM - 计算 多模态大语言模型 的参数量(Qwen2-VL、Llama-3.1) 教程
  • 微服务瞎写
  • 【python】用 Scrapy 实现高效爬虫项目
  • Qt 项目架构设计
  • 【miniMax开放平台-注册安全分析报告-无验证方式导致安全隐患】
  • vue.js设计与实现(霍春阳著) 章节总结
  • golang对日期格式化
  • Tailwind CSS 和 UnoCSS简单比较
  • 数据库管理-第262期 崖山:知其不可而为之(20241116)
  • 【笔记】Vue3回忆录
  • 【C语言指南】C语言内存管理 深度解析
  • aitrader双界面引擎(dash和streamlit),引入zvt作为数据获取及存储支持
  • 以太坊基础知识结构详解
  • 将大型语言模型(如GPT-4)微调用于文本续写任务
  • STM32设计井下瓦斯检测联网WIFI加Zigbee多路节点协调器传输
  • 【jvm】如何破坏双亲委派机制
  • LeetCode - #134 加油站
  • vocode Vue3项目 红色波浪线解决方案集锦
  • 丹摩征文活动|丹摩智算平台使用指南
  • 1436:数列分段II -整型二分
  • 两行命令搭建深度学习环境(Docker/torch2.5.1+cu118/命令行美化+插件),含完整的 Docker 安装步骤
  • 护眼模式浓度调整到最低
  • 【软件测试】一个简单的自动化Java程序编写
  • ELMo模型介绍:深度理解语言模型的嵌入艺术
  • Java基础——网络编程