精华内容
下载资源
问答
  • HC-05蓝牙串口通信模块应该是使用最广泛的一种蓝牙模块之一了。为什么呢? 因为HC05模块是一款高性能主从一体蓝牙串口模块,可以不用知道太多蓝牙相关知识就可以很好的上手。说白了,只是个蓝牙转串口的设备,你...

    HC-05蓝牙串口通信模块应该是使用最广泛的一种蓝牙模块之一了。为什么呢?

    因为HC05模块是一款高性能主从一体蓝牙串口模块,可以不用知道太多蓝牙相关知识就可以很好的上手。说白了,只是个蓝牙转串口的设备,你只要知道串口怎么编程使用,就可以了,实现了所谓的透明传输。

    但是就是这么一个很常见的模块,网上很多的博客写的都是错的,或者都是很不详细的。

    所以本文就介绍一下这款蓝牙通信模块的使用,包括蓝牙模块的调试、手机与蓝牙模块之间的传输、手机蓝牙控制STM32单片机,应该是逐渐深入的一个过程。但是这仅仅是使用,以后有时间应该会对蓝牙有一个稍微深度的学习,而不能仅仅是浮于表面,只会用。

     

    模块名称:HC-05蓝牙串口通信模块

    参考资料:HC-05蓝牙串口通信模块官方资料包

    知识储备:【STM32】串口通信基本原理(超基础、详细版)

    其他模块:USB转TTL模块、手机蓝牙串口助手app

    手机蓝牙串口助手软件,可以点击链接下载:蓝牙串口。因为这是我见过所有手机端界面最好看的了,其他的界面都有点太糟糕了。

     

    蓝牙模块的调试

    准备工作

    USB转TTL模块与HC-05蓝牙模块的接线:

    两模块共地,两模块共VCC(VCC取5V);蓝牙模块的RX接转换模块的TX,蓝牙模块的TX接转换模块的RX。如下图所示:

    这个时候就要将转换模块连接到电脑上,然后利用串口调试助手进行蓝牙模块的调试。

    附可能会用到的驱动:链接:https://pan.baidu.com/s/1bpYLfCr 密码:yabv

    蓝牙模块的调试

    HC-05蓝牙串口通讯模块具有两种工作模式:命令响应工作模式和自动连接工作模式。在自动连接工作模式下模块又可分为主(Master)、从(Slave)和回环(Loopback)三种工作角色。

    • 当模块处于自动连接工作模式时,将自动根据事先设定的方式连接的数据传输;
    • 当模块处于命令响应工作模式时能执行AT命令,用户可向模块发送各种AT 指令,为模块设定控制参数或发布控制命令。

    怎么进入命令响应工作模式?

    进入命令响应工作模式有两种方法:

    • 模块上电,未配对情况下就是AT模式,波特率为模块本身的波特率,默认:9600,发送一次AT指令时需要置高一次PIO11;
    • PIO11 置高电平后,再给模块上电,此时模块进入AT 模式,波特率固定为:38400,可以直接发送AT指令。

    什么叫做置高一次PIO11?

    在蓝牙模块中有一个小按键,按一下就置高一次PIO11。也就是说,第一种方法需要每发送一次AT指令按一次;而第二种方式是长按的过程中上电,之后就无需再管了,直接发送AT命令即可。

    需要注意一下,两种进入命令响应工作模式的方式使用的波特率是不一样的,建议使用第二种方式。

    怎么区分进了命令响应工作模式呢?

    在蓝牙模块上有灯,当灯快闪的时候,就是自动连接工作模式;当灯慢闪的时候,就是命令响应工作模式。

    AT命令

    进入到命令响应工作模式之后,就可以使用串口调试助手进行蓝牙调试了。

    首先有一点,AT指令不区分大小写,均以回车、换行结尾。下面介绍常用的AT指令:

    常用AT指令
    指令名响应含义
    ATOK测试指令
    AT+RESETOK模块复位
    AT+VERSION?+VERSION:<Param> OK获得软件版本号
    AT+ORGLOK恢复默认状态
    AT+ADDR?+ADDR:<Param> OK获得蓝牙模块地址
    AT+NAME=<Param>OK设置设备名称
    AT+NAME?+NAME:<Param> OK获得设备名称
    AT+PSWD=<Param>OK设置模块密码
    AT+PSWD?+PSWD:<Param> OK获得模块密码
    AT+UART=<Param1>,<Param2>,<Param3>OK设置串口参数
    AT+UART?+UART:<Param1>,<Param2>,<Param3> OK获得串口参数

    对于AT指令,有几点注意:

    • AT+NAME?:获得设备名称,这个AT指令有很大可能性是没有返回的,因为我也看到了很多的例子……,但是其他的指令都是没有问题的,直接设置设备名称就行了;
    • AT+UART?:获得串口参数,串口的参数一共有三个,波特率、停止位、检验位。其取值如下:
    串口参数
    参数名称取值
    波特率

    2400、4800、9600、19200、38400、5760、

    115200、230400、460800、921600、1382400

    停止位

    0:1位

    1:2位

    校验位0:NONE  1:Odd  2:Even

    其默认值为:9600,0,0。

    例子:

    本文中,蓝牙串口的波特率设置成115200。之后的内容,就会采用这个波特率来进行通讯了。

     

    手机与蓝牙模块之间的传输

    直接将蓝牙模块与转换模块连接,再讲其连接到电脑上,蓝牙模块直接进入自动连接工作模式。

    此时手机打开蓝牙串口调试应用,用其来连接蓝牙模块。手机蓝牙串口助手软件,可以点击链接下载:蓝牙串口。万分推荐这款,因为界面脱离了那种黑不溜秋的感觉,比较简洁、清爽。

    这个软件的使用:点击界面右下角蓝牙的标志,选择蓝牙进行连接。

    然后在电脑上的调试助手和手机的蓝牙串口调试应用之间就可以相互传输了,比如:

    可以清楚的看到:电脑向手机发送了“hello you”,手机向电脑发送了“hello world”。

     

    手机蓝牙控制STM32单片机

    之前的两个例子都是相比较而言比较简单的,这个例子将会涉及到程序的内容了。

    实现功能:手机通过蓝牙,向STM32单片机发送消息,STM32接收到消息之后原封不动的返回给手机。当然如果掌握了这个例子,也可以修改成,手机发送特定的消息,然后,STM32单片机做出相对应的动作。比如:点亮LED等、发动电机等等。

    连接说明

    使用USART1进行试验,也就是说STM32选取PA9、PA10来和HC-05进行连接。同时手机通过蓝牙来和HC-05进行连接。

    原理就是:手机通过蓝牙传输到HC-05上,再通过串口通信和STM32通信;而之前一般都是电脑上通过USB线转串口的方式,通过串口和STM32通信。本质上没有区别的。

    这个时候就应该更加深刻地体会到了本文开篇的一句话:说白了,只是个蓝牙转串口的设备,你只要知道串口怎么编程使用,就可以了,实现了所谓的透明传输。蓝牙的相关一切都被封装起来了,都不需要接触到。

    STM32控制程序

    #include "stm32f10x.h"
    
     void My_USART1_Init(void)  
    {  
        GPIO_InitTypeDef GPIO_InitStrue;  
        USART_InitTypeDef USART_InitStrue;  
        NVIC_InitTypeDef NVIC_InitStrue;  
          
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//GPIO端口使能  
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//串口端口使能  
          
        GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;  
        GPIO_InitStrue.GPIO_Pin=GPIO_Pin_9;  
        GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;  
        GPIO_Init(GPIOA,&GPIO_InitStrue);  
          
        GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;  
        GPIO_InitStrue.GPIO_Pin=GPIO_Pin_10;  
        GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;  
        GPIO_Init(GPIOA,&GPIO_InitStrue);  
          
        USART_InitStrue.USART_BaudRate=115200;  
        USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;  
        USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;  
        USART_InitStrue.USART_Parity=USART_Parity_No;  
        USART_InitStrue.USART_StopBits=USART_StopBits_1;  
        USART_InitStrue.USART_WordLength=USART_WordLength_8b;  
          
        USART_Init(USART1,&USART_InitStrue);
          
        USART_Cmd(USART1,ENABLE);//使能串口1  
          
        USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//开启接收中断  
          
        NVIC_InitStrue.NVIC_IRQChannel=USART1_IRQn;  
        NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;  
        NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;  
        NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;  
        NVIC_Init(&NVIC_InitStrue);  
          
    }  
      
    void USART1_IRQHandler(void)  
    {  
        u8 res;  
         if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)  
     {  
         res= USART_ReceiveData(USART1); 	 
         USART_SendData(USART1,res);     
      }  
    }  
       
     int main(void)  
     {    
    	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  
        My_USART1_Init();  
         while(1);  
           
     } 

    这段程序和【STM32】串口相关配置寄存器、库函数(UART一般步骤)中的程序一模一样,几乎没有什么改动。

    区别就是,在UART实验中,USART1是和USB转串口模块连接在一起的,然后与电脑上的串口调试助手进行通信;现在改成USART1是和蓝牙模块连接在一起的,然后和手机上的蓝牙串口调试助手进行通信。

     

    展开全文
  • SAP S4 HANA财务模块入门到精通

    千人学习 2019-08-21 11:23:51
    HANA的财务模块,涵盖了主流的总账,应收,应付,资产等子模块,让您深入浅出全面学习财务模块的知识。 2. 课程采用PPT+思维导图+系统演示(操作+配置)三位一体的讲解方式,让您在图文并茂和系统实操中更好更...
  • 【入门基础+轻实战演示】【讲授方式轻松幽默、有趣不枯燥、案例与实操结合,与相关课程差异化】常用模块的介绍,详细剖析包括time模块,os模块等常用模块,正则表达式基础语法,常用函数,以及通过正则表达式完成...
  • VBA中比较高阶的课程,主要讲解关于各种事件的应用,各种控件的应用,如果使用类模块,如果在VBA用调用SQL语句去处理数据库中的数据等操作。学习完成本课后,你可以在Excel中开发各种小型应用系统。以下是课程主要...
  • MATLAB Simulink模块库详解(一)Sources篇

    万次阅读 多人点赞 2018-07-16 09:41:56
    MATLAB Simulink模块库详解(一)Sources篇Simulink模块库概述1.Sources模块库,为仿真提供各种信号源2.Sinks模块库,为仿真提供输出设备元件3.Continuous模块库,为仿真提供连续系统4.Discrete模块库,为仿真提供...

    MATLAB Simulink模块库详解(一)Sources篇

    Simulink模块库概述

    1.Sources模块库,为仿真提供各种信号源

    2.Sinks模块库,为仿真提供输出设备元件

    3.Continuous模块库,为仿真提供连续系统

    4.Discrete模块库,为仿真提供离散元件

    5.Math模块库,提供数学运算功能元件

    6.Function&Tables模块库,自定义函数和线形插值查表模块库

    7.Nonlinear模块库,非连续系统元件

    8.Signals&System模块库,提供用于输入、输出和控制的相关信号及相关处理

    9.Subsystems模块库,各种子系统

    Source模块库

    模块功能
    In1子系统输入
    Constant生成一个常量值
    Signal Generator生成变化的波形
    Ramp生成一连续递增或递减的信号
    Sine Wave生成正弦波
    Step生成一阶跃函数
    Repeating Sequence生成一重复的任意信号
    Pules Generator生成有着规则间隔的脉冲
    Chirp Signal产生一个频率递增的正弦波
    Ground接地
    Clock提供仿真时间
    Digital Clock提供给定采样频率的仿真时间
    From File从文件读取数据
    From Workspace从工作空间的矩阵中读取数据
    Random Number生成正态分布的随机数
    Uniform Random Number生成均匀的随机数
    Band-Limited White Noise给连续系统引入白噪声

    Inport(输入端口)

    模块功能

    为子系统或外部输入创建输入端口

    模块说明

    该模块件输入信号从一个系统的外部引入到系统的内部。Simulink按照规则来指定Inport端口的编号。

    模块数据类型

    该模块接受任何实型或复数值信号。

    模块参数对话框

    Port number:端口数;

    Port dimensions:端口维数;

    Sample time:采样时间;

    Data type:信号类型

    Interpolate data:插值数据;选择斥责或外推方法,对从文件读取数据有用。

    Constant(常量)

    模块功能

    生成一常量

    模块说明

    Constant模块生成一个与时间无关的指定的实数或复数值。

    模块数据类型

    数据类型与模块参数Constant value一样

    模块参数对话框

    常数值(Constant value)参数是该模块的输出,它可以是具体数值或常量名。

    Signal Generator(信号发生器)

    模块功能

    生成不同波形

    模块说明

    Signal Generator模块能够产生三种不同波形:正弦波、方波和锯齿波;信号参数单位可以为Hz或者rad/s

    模块数据类型

    双精度型实数值信号

    模块参数对话框

    Wave form:波形,sine(正弦)、square(方波)、sawtooth(锯齿波);random(随机波形)

    Amplitude:幅度,信号的幅度

    Frequency:频率,信号的频率

    Units:单位,Hertz和rad/sec

    Ramp(斜波)

    模块功能

    产生连续增大或减小的信号

    模块说明

    Ramp模块生成一从指定时间和大小开始。以一定的速率增大或减小的信号。

    模块数据类型

    输出双精度类型信号

    模块参数对话框

    Slope:斜率,产生信号的变化率

    Start time:信号开始产生的时间

    Initial output:信号初始值

    Sine Wave (正弦波)

    模块功能

    产生一个正弦波

    模块说明

    Sine Wave 提供连续或离散形式的正弦波

    模块数据类型

    双精度类型实数信号

    模块参数对话框

    Amplitude:信号的幅度

    Frequency:信号的频率(rad/sec)

    Phase;信号的相位(rad)

    Sample time:采样周期(0:连续;>0:离散采样时间;-1:工作模式与接收信号模式相同)

    y=Amplitude * sin(Frequency * time+Phase)

    Step(阶跃)

    模块功能

    产生一个阶跃信号

    模块说明

    Step提供在指定时间处在两个可定义的水平间的阶跃

    模块数据类型

    双精度类型实数信号

    模块参数对话框

    Step time:发生阶跃变化的时间(s)

    Initial value:从开始仿真达到Step time时的麦克输出值

    Final value:仿真超过Step time后的输出值

    Sample time:阶跃采样率当仿真时间小于Step time,则输出Initial value;当仿真时间大于或等于Step time输出Final value

    Repeating Sequence(重复序列)

    模块功能

    产生重复的任意信号

    模块说明

    Repeating Sequence模块可生成随时间变化的重复信号。波形任意指定,当仿真达到Time values向量中的最大时间值时,信号开始重复。

    模块数据类型

    双精度类型实数信号

    模块参数对话框

    Time value:单调增加的时间向量(s)

    Output values:与Time values对应的输出向量

    Pulse Generator(脉冲发生器)

    模块功能

    以一定的间隔生成脉冲

    模块说明

    Pulse Generator 模块以一定的间隔产生一系列的脉冲

    模块数据类型

    双精度类型实数信号

    模块参数对话框

    Amplitude:脉冲幅度

    Period:脉冲周期(s)

    Pulse Width:脉冲宽度(占整个周期的百分比)

    Phase delay:脉冲产生开始前的时间延迟(s)

    Chirp(扫频信号)

    模块功能

    产生一频率递增的正弦波信号

    模块说明

    Chirp模块产生一频率随时间线性递增的正弦波信号,可以用该模块进行非线性系统的频谱分析

    模块数据类型

    双精度类型实数信号

    模块参数对话框

    Initial frequency:信号的初始频率

    Target time:频率达到目标频率的时间值,在该时间后,频率以相同的速率连续改变

    Frequency at target time:在目标时间的频率

    Clock(时钟)

    模块功能

    显示并提供仿真时间

    模块说明

    Clock模块在每一步仿真,输出当时的仿真时间。当该模块被打开时,这一时间将显示在窗口中。在打开该模块的情况下仿真会减慢仿真速度。它对需要仿真时间的模块来说很有用处。

    模块数据类型

    双精度类型实数信号

    模块参数对话框

    Display time:使用该复选框,在模块图标旁显示当前仿真时间,并改变其图标的外观

    Decimation:时间更新获取的增量,可以是任意正整数,如取值为1000,固定积分步为1ms,则时钟将每隔1s更新一次。

    Digital Clock(时钟)

    模块功能

    以指定参与时间间隔输出仿真时间

    模块说明

    Digital Clock模块仅仅输出指定采样时间间隔的仿真时间。在其它时间,输出保持为先前的值。在离散系统中,需要当前时间,应采用该模块,而不是Clock

    模块数据类型

    双精度类型实数信号

    模块参数对话框

    Sample time:采样时间间隔

    From File(从文件读取数据)

    模块功能

    从文件读数据

    模块说明

    From File模块从指定的文件读取数据作为其输出。模块的图标中显示了提供数据的文件名。文件名必须包含一个两行或两行以上的矩阵,第一行应是单调递增的时间点,其它行是与之对应的数据点

    模块数据类型

    双精度类型实数信号

    模块参数对话框

    File name:输入数据的文件名

    Sample time:从文件中读去数据的采样率

    From Workspace(从工作空间读数据)

    模块功能

    从文件数据

    模块说明

    From Workspace模块从MATLAB工作空间读取数据。模块的Data参数指定工作空间的数据,由包含信号值和时间步表的矩阵或结构的MATLAB计算表达式来指定。其矩阵或结构的格式与工作空间中输入的数据是一致的。模块的图标显示了Data参考的表达式。

    模块数据类型

    任何类型实数或复数信号

    模块参数对话框

    Data:包含仿真时间和相应信号的数值表。如果所需的信号-时间矩阵或结构已经存在于工作空间中,则只需要输入矩阵名称。

    Sample time:从工作空间读取数据的采样率

    Form output after final data value by:在数据超过Data的末尾时所输出的值。

    Random Number(随机数产生器)

    模块功能

    生成正态分布的随机数

    模块说明

    Random Number模块生成正态分布的随机数,每次仿真开始,种子被置为指定值。应避免对随机信号进行积分。如果需要,用Band-Limited Noise模块代替

    模块数据类型

    双精度类型实数信号

    模块参数对话框

    Mean:产生的随机数的平均值

    Variance:产生的随机数的方差

    Initial seed:随机数发生器开始的种子

    Sample time:采样的时间间隔

    Uniform Random Number(均匀分布随机数)

    模块功能

    生成均匀分布的随机数

    模块说明

    Uniform Random Number模块在指定的区间内,以起始种子,生成均匀峰的随机数。生成的随机序列是课重复的,只要种子和参数相同。

    模块数据类型

    双精度类型实数信号

    模块对话框

    Minimum:指定区间的最小值

    Maximum:指定区间的最大值

    Initial seed:随机发生器开始的种子

    Sample time:采样周期

    Band-Limited White Noise(限带白噪声)

    模块功能

    给一个连续系统引入白噪声

    模块说明

    Band-Limited White Noise模块生成正态分布的随机数,它适用于连续或者混合系统。它以一定的采样率产生输出

    模块数据类型

    双精度类型实数信号

    模块参数对话框

    Noise power:白噪声功率谱密度图的高度

    Sample time:噪声相关时间(理论上为0)

    Seed:发生随机数的开始种子

    本文转载https://wenku.baidu.com/view/1aa4468a59eef8c75ebfb35b.html若有侵权联系删除

    展开全文
  • SAP S4 HANA CO 成本模块学习

    千人学习 2019-08-25 22:55:54
    HANA的成本模块,涵盖了主流的成本中心,内部订单,生产成本,获利能力分析,物料帐模块让您深入浅出全面学习成本模块的知识。 2. 课程采用PPT+思维导图+系统演示(操作+配置)三位一体的讲解方式,让您在...
  • Python使用csv模块读写csv文件

    万次阅读 多人点赞 2019-05-26 17:18:09
    Python使用csv模块读写csv文件 csv是逗号分隔值(Comma-Separated Values)的简称。 有时也称为字符分隔值,因为分隔字符也可以不是逗号,其文件以纯文本形式存储表格数据。纯文本意味着该文件是一个字符序列,...

    Python使用csv模块读写csv文件

    csv是逗号分隔值(Comma-Separated Values)的简称。

    有时也称为字符分隔值,因为分隔字符也可以不是逗号,其文件以纯文本形式存储表格数据。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。

    csv可以存储各种各样的数据,不过,通常来说,比较适合存储有相同字段或表头的一批数据,这些数据可以展示成表格。

    可以使用excel开启csv文件,打开后看到的数据以excel表格的方式进行展示。

    现在我们就开始使用csv将数据写入csv文件,然后将数据从csv中读取出来使用。

    一、将数据写入csv文件中

    import csv
    
    
    csv_data = (
        (1, 2, 3, 4, 5, 6),
        ('a', 'b', 'c', 'd', 'e', 'f'),
        ('p', 'y', 't', 'h', 'o', 'n')
    )
    output_file_name = 'csv_file.csv'
    
    
    def save_csv(target_list, output_file_name):
        """
        将数据写入csv文件
        """
        if not output_file_name.endswith('.csv'):
            output_file_name += '.csv'
        csv_file = open(output_file_name, "w", newline="")
        key_data = target_list[0]
        value_data = [target for target in target_list]
        csv_writer = csv.writer(csv_file)
        csv_writer.writerow(key_data)
        csv_writer.writerows(value_data)
        csv_file.close()
    
    
    save_csv(csv_data, output_file_name)

    代码描述:

    1.我们先将需要保存的数据解析好,保存成固定的数据类型(保存成列表,元组,字典都可以,根据具体场景来选择)

    2.我们将保存数据到csv文件的代码封装成一个函数,方便重用。步骤主要分为三步:打开文件,写入数据,关闭文件。其中,写入数据时记得先写入表头(我们使用excel打开时需要表头)再写入表格中的数据,数据要以一个列表的形式传递给writerows()。

    运行结果:

    运行以上代码后,会在当前目录下创建一个csv_file.csv的文件,并写入csv_data的数据,可以使用excel打开文件查看。如下图。

    二、从csv文件中读取数据

    input_file_name = 'csv_file.csv'
    
    
    def read_csv(input_file_name):
        """
        读取csv文件数据
        """
        with open(input_file_name, 'r', encoding='utf-8') as csv_file:
            csv_reader = csv.reader(csv_file)
            # csv_reader对象,是一个列表的格式
            print(csv_reader)
            # csv_reader对象的一个迭代器,可以通过next()取出其中的元素
            print(next(csv_reader))
            # 也可以通过for循环取出所有元素
            for line in csv_reader:
                print(''.join(line))
    
    
    read_csv(output_file_name)

    代码描述:

    1.可以通过with上下文管理的方式打开csv文件,如果想在with的代码块外对读出来的数据进行处理,则可以使用open()打开,再使用close()关闭。

    2.csv通过csv.reader()来打开csv文件,返回的是一个列表格式的迭代器,可以通过next()方法获取其中的元素,也可以使用for循环依次取出所有元素。

    运行结果:

    <_csv.reader object at 0x00000295BC044528>
    ['1', '2', '3', '4', '5', '6']
    123456
    abcdef
    python
    

    这样,将数据写入csv和从csv中读取数据就完成了,使用过程是非常简单的。

     

     

    展开全文
  • 模块学习总结

    千次阅读 多人点赞 2020-08-23 00:48:28
    准确来说,光模块是几种类别的模块的统称,具体包括:光发送模块Transmitter、光接收模块Receiver、光收发一体模块Transceiver和光转发模块Transponder。通常我们所说的光模块,一般是指光收发一体模块(下同)。 ...

    光模块简介

    什么是光模块:

    光模块(Optical Module)作为光纤通信中的重要组成部分,是实现光电转换和电光转换功能的光电子器件。

    准确来说,光模块是几种类别的模块的统称,具体包括:光发送模块Transmitter、光接收模块Receiver、光收发一体模块Transceiver和光转发模块Transponder。通常我们所说的光模块,一般是指光收发一体模块(下同)。

    工作原理:

    光模块工作在OSI模型的物理层,是光纤通信系统中的核心器件之一。它主要由光电子器件(光发射器、光接收器)、功能电路和光(电)接口等部分组成,主要作用就是实现光纤通信中的光电转换和电光转换功能。

    在这里插入图片描述

    图:光模块原理图

    基本原理:发送接口输入一定码率的电信号,经过内部的驱动芯片处理后由驱动半导体激光器(LD)或者发光二极管(LED)发射出相应速率的调制光信号,通过光纤传输后,接收接口再把光信号由光探测二极管转换成电信号,并经过前置放大器后输出相应码率的电信号。

    光模块关键参数指标

    光模块的关键技术指标主要包含:发送光功率接收光功率、过载光功率、接收灵敏度最大值、消光比。

    • **接收光功率:**发送光功率指光模块在正常工作条件下发送端光源输出的光功率,可以理解为光的强度,单位为W或mW或dBm。其中W或mW为线性单位,dBm为对数单位。在通信中,我们通常使用dBm来表示光功率,0dBm的光功率对应1mW。

    • 接收光功率:接收光功率指光模块在一定的误码率(BER=10-12)条件下,接收端组件能接收的平均光功率范围。上限值为过载光功率,下限值为接收灵敏度最大值。

    • 过载光功率: 又称饱和光功率,指的是在一定的传输速率下,维持一定的误码率(BER=10-12)时接收端组件所能接收的最大输入平均光功率,单位:dBm。

      需要注意的是,光探测器在强光照射下会出现光电流饱和现象,当出现此现象后,探测器需要一定的时间恢复,此时接收灵敏度下降,接收到的信号有可能出现误判而造成误码现象,而且还非常容易损坏接收端探测器,在使用操作中应尽量避免强光照射,防止超出饱和光功率。

    • 接收灵敏度最大值: 接收灵敏度指的是在一定的传输速率下,维持一定的误码率(BER=10-12)时接收端组件所能接收的最小平均输入光功率,单位:dBm。

      一般情况下,速率越高接收灵敏度越差,即最小接收光功率越大,对于光模块接收端器件的要求也越高。

    • 消光比:消光比(Extinction Ratio,EXT)是用于衡量光模块质量的重要参数之一。它是指全调制条件下激光器在发射全“1”码时的光功率P1与全“0”码时发射的光功率P0的比值,单位为dB。消光比反应了光信号“1”电平和“0”电平相对幅度。光模块中影响消光比的因素是偏置电流(Bias)与调制电流(Mod),消光比可看作为EXT=Bias/Mod的值。

      消光比的值并非越大光模块越好,而是消光比满足IEEE 802.3标准的光模块才好。

    交换机上光模块信息示例:

    华为设备接口光模块信息:

    [huawei] display  interface  100GE  1/0/0  transceiver verbose  
    
     100GE1/0/0 transceiver information:
    -------------------------------------------------------------------
     Common information:
       Transceiver Type                      :100GBASE_CWDM4
       Connector Type                        :LC
       Wavelength (nm)                       :1301
       Transfer Distance (m)                 :2000(9um/125um SMF)
       Digital Diagnostic Monitoring         :YES
       Vendor Name                           :XXX
       Vendor Part Number                    :XXXX
       Ordering Name                         :
    -------------------------------------------------------------------
     Manufacture information:
       Manu. Serial Number                   :XXXXX
       Manufacturing Date                    :2017-11-2+08:00
       Vendor Name                           :FINISAR CORP.
    -------------------------------------------------------------------
     Alarm information:
        Non-Huawei-Ethernet-Switch-Certified Transceiver
    -------------------------------------------------------------------
     Diagnostic information: 
       Temperature (Celsius)                 :38.64
       Voltage (V)                           :3.25
       Bias Current (mA)                     :40.23|36.02  (Lane0|Lane1)
                                              36.68|36.97  (Lane2|Lane3)
       Bias High Threshold (mA)              :55.00
       Bias Low Threshold (mA)               :25.00
       Current RX Power (dBm)                :-1.05|-1.02  (Lane0|Lane1)                                          
                                              0.14|0.01    (Lane2|Lane3)
       Default RX Power High Threshold (dBm) :3.50
       Default RX Power Low Threshold (dBm)  :-16.00
       Current TX Power (dBm)                :0.72|-0.14   (Lane0|Lane1)                                         
                                              -0.48|0.55   (Lane2|Lane3)
       Default TX Power High Threshold (dBm) :5.50
       Default TX Power Low Threshold (dBm)  :-8.00
    -------------------------------------------------------------------
    

    个参数详细说明:

    项目描述
    Common information表示光模块的常规信息。
    Transceiver Type表示光模块类型。
    Connector Type表示接口类型。
    Wavelength (nm)表示光波波长。
    Transfer Distance (m)表示光波传输距离。50um/125um表示光纤的直径,OM2表示光纤的等级。
    Digital Diagnostic Monitoring表示光模块诊断信息是否监控。
    Vendor Name表示光模块制造厂商名称。如果显示内容为“HUAWEI”,表示是经过华为数据中心交换机认证的光模块;其他的显示内容表示是非华为数据中心交换机认证光模块。
    Vendor Part Number表示光模块制造厂商编号。
    Ordering Name表示光模块对外型号。
    Manufacture information表示光模块制造信息。
    Manu. Serial Number表示光模块生产序列号。
    Manufacturing Date表示光模块生产日期。
    Alarm information表示光模块告警信息。
    Diagnostic information表示光模块诊断信息。如果显示为“-”,则表示该光模块不支持获取此信息或信息不精确。
    Temperature (Celsius)表示光模块当前温度。
    Voltage(V)表示光模块当前电压。
    Bias Current (mA)表示光模块当前电流。**说明:**如果接口支持拆分,当接口插入光模块后,会显示光模块中每条Lane的当前电流。每条lane的当前电流值均应在Bias Low Threshold (mA)~Bias High Threshold (mA)范围内才能保证模块正常工作。
    Bias High Threshold (mA)表示光模块电流上限。
    Bias Low Threshold (mA)表示光模块电流下限。
    Current RX Power (dBm)表示当前光模块接收功率。**说明:**如果接口支持拆分,当接口插入光模块后,会显示光模块中每条Lane的当前接收功率。
    Default RX Power High Threshold (dBm)表示默认光模块接收功率上限。
    Default RX Power Low Threshold (dBm)表示默认光模块接收功率下限。
    Current TX Power (dBm)表示当前光模块发送功率。**说明:**如果接口支持拆分,当接口插入光模块后,会显示光模块中每条Lane的当前发送功率。
    Default TX Power High Threshold (dBm)表示默认光模块发送功率上限。
    Default TX Power Low Threshold (dBm)表示默认光模块发送功率下限。

    华三设备接口光模块信息:

    # 查看接口光模块信息
    [H3C]display transceiver interface  HundredGigE  6/0/1  
    HundredGigE6/0/1 transceiver information:
      Transceiver Type              : 100G_CWDM4_FEC_QSFP28
      Connector Type                : LC
      Wavelength(nm)                : 1301
      Transfer Distance(km)         : 2(SMF)
      Digital Diagnostic Monitoring : YES
      Vendor Name                   : XXXX
        
    
    #查看接口光模块诊断信息
    [H3C]display transceiver diagnosis interface HundredGigE 6/0/1 
    HundredGigE6/0/1 transceiver diagnostic information:
      Current diagnostic parameters:
    [module]  Temp.(oltage(V)  
              31         3.31        
    [channel] Bias(mA)  RX power(dBm)  TX power(dBm)  
        1     39.71     -0.91          -0.72          
        2     36.20     -0.97          -0.39          
        3     36.22     -0.49          0.65           
        4     36.45     -0.74          0.02           
      Alarm thresholds:
              Temp.(oltage(V)  Bias(mA)  RX power(dBm)  TX power(dBm)  
        High  75         3.63        55.00     3.50           5.50           
        Low   -5         2.97        25.00     -16.00         -8.00 
    

    锐捷设备接口光模块信息:

    Ruijie# show interface hundredGigabitEthernet  0/49 transceiver
      Transceiver Type    :  100GBASE-SR4-QSFP28
    Connector Type      :  MPO
    Wavelength(nm)      :  850
    Wavelength tolerance(nm):  (+/-)10
    Transfer Distance   : 
        50/125 um OM3 fiber
            -- 70m
        50/125 um OM4 fiber
            -- 100m
    Digital Diagnostic Monitoring  : YES
    Vendor Serial Number           : XXXX
    
    Current diagnostic parameters[C1:Channel-1 C2:Channel-2 C3:Channel-3 C4:Channel-4 AP:Average Power]:
    Temp(Celsius)   Voltage(V)      Bias(mA)            RX power(dBm)       TX power(dBm)
    47(OK)          3.34(OK)        7.70(OK)[C1]        -0.42(OK)[C1/AP]    -1.90(OK)[C1]
                                    7.70(OK)[C2]        -0.19(OK)[C2/AP]    -1.80(OK)[C2]
                                    7.70(OK)[C3]        -0.18(OK)[C3/AP]    -1.90(OK)[C3]
                                    7.70(OK)[C4]        -0.08(OK)[C4/AP]    -2.46(OK)[C4]
    
    Transceiver current alarm information:
    None
    

    思科设备接口光模块信息:

    Cisco# show int ethernet  1/50 transceiver   details  
    Ethernet1/50
        transceiver is present
        type is QSFP-100G-SR4
        name is XXXX
        part number is XXX
        revision is 1A
        serial number is XXXX
        nominal bitrate is 25500 MBit/sec per channel
        Link length supported for 50/125um OM3 fiber is 70 m
        cisco id is 17
        cisco extended id number is 204
    
    Lane Number:1 Network Lane
               SFP Detail Diagnostics Information (internal calibration)
      ----------------------------------------------------------------------------
                    Current              Alarms                  Warnings
                    Measurement     High        Low         High          Low
      ----------------------------------------------------------------------------
      Temperature   45.25 C        75.00 C     -5.00 C     73.00 C       -3.00 C
      Voltage        3.24 V         3.63 V      2.97 V      3.46 V        3.13 V
      Current        7.38 mA       14.99 mA     3.00 mA    12.99 mA       4.49 mA
      Tx Power      -0.31 dBm       3.39 dBm  -10.40 dBm    2.39 dBm     -8.41 dBm
      Rx Power      -0.06 dBm       3.39 dBm  -12.36 dBm    2.39 dBm    -10.31 dBm
      Transmit Fault Count = 0
      ----------------------------------------------------------------------------
      Note: ++  high-alarm; +  high-warning; --  low-alarm; -  low-warning
    

    光模块的分类与封装

    按速率分类:

    目前常见光模块种类如下:

    • 400GE光模块
    • 200GE光模块
    • 100GE光模块
    • 40GE光模块
    • 25GE光模块
    • 10GE光模块
    • GE光模块
    • FE光模块

    按封装类型分类:

    传输速率越高,结构越复杂,由此产生了不同的封装方式。有SFP/eSFP、SFP+、SFP28、QSFP+、CXP、CFP、QSFP28等。

    • SFP(Small Form-factor Pluggable)光模块:小型可插拔。SFP光模块支持LC光纤连接器。
    • eSFP(Enhanced Small Form-factor Pluggable)光模块:增强型SFP,指的是带电压、温度、偏置电流、发送光功率、接收光功率监控功能的SFP,当前所有的SFP都带,所以也就把eSFP都统一叫SFP了。
    • SFP+(Small Form-factor Pluggable Plus)光模块:指速率提升的SFP模块,因为速率提升,所以对EMI敏感,壳子上面的裙片做的多了,配对的笼子也相对缩紧了。
    • XFP(10GB Small Form-factor Pluggable)光模块:“X”是罗马数字10的缩写,所有的XFP模块都是10GE光模块。XFP光模块支持LC光纤连接器。相比SFP+光模块,XFP光模块尺寸更宽更长。
    • SFP28(Small Form-factor Pluggable 28)光模块:接口封装大小与SFP+相同,支持速率为25G的SFP28光模块和10G的SFP+光模块。
    • QSFP+(Quad Small Form-factor Pluggable)光模块:四通道小型可热插拔光模块。QSFP+光模块支持MPO光纤连接器,相比SFP+光模块尺寸更大。
    • CXP(120 Gb/s eXtended-capability Form Factor Pluggable Module)光模块:是一种可热插拔的高密并行光模块标准,在发送和接收(Tx/Rx)方向各提供12个通道,仅适用于短距离多模链路。
    • CFP(Centum Form-factor Pluggable)光模块:长×宽×高尺寸定义为144.75mm×82mm×13.6mm,是一种高速的可以热插拔的支持数据通信和电信传输两大应用的新型光模块标准。
    • QSFP28(Quad Small Form-factor Pluggable 28)光模块:接口封装大小与QSFP+相同,支持速率为100G的QSFP28光模块和40G的QSFP+光模块。

    按模式分类:

    纤分为单模光纤、多模光纤。为了使用不同类别的光纤,产生了单模光模块、多模光模块。

    • 单模光模块与单模光纤配套使用。单模光纤传输频带宽,传输容量大,适用于长距传输。
    • 多模光模块与多模光纤配套使用。多模光纤有模式色散缺陷,其传输性能比单模光纤差,但成本低,适用于较小容量、短距传输。

    中心波长指光信号传输所使用的光波段。目前常用的光模块的中心波长主要有三种:850nm 波段、1310nm 波段以及 1550nm 波段。

    • 850nm 波段:多用于≤2km 短距离传输
    • 1310nm 和 1550nm 波段:多用于中长距离传输,2km 以上的传输。

    按传输距离分类:

    根据光模块传输距离的不同,大体可以分为:

    • 短距离光模块,一般认为2km及以下为短距离。
    • 中距离光模块,10~20km为中距离。
    • 长距离光模块:一般指传输距离为30Km以上的光模块。

    光模块的传输距离受到限制,主要是因为光信号在光纤传输时会有一定的损耗和色散。

    • 损耗是光在光纤中传输时,由于介质的吸收散射以及泄漏导致的光能量损失,这部分能量 随着传输距离的增加以一定的比率耗散。
    • 色散的产生主要是因为不同波长的电磁波在同一介质中传播时速度不等,从而造成光信号 的不同波长成分由于传输距离的累积而在不同的时间到达接收端,导致脉冲展宽,进而无 法分辨信号值。

    其他光模块:

    • 彩色光模块

      彩色光模块与其它类型的光模块的最大的区别是中心波长不同,一般的光模块的中心波长有850nm、1310nm和1550nm。彩色光模块承载了若干不同中心波长的光。彩色光模块分为粗集波光模块(CWDM)和密集波光模块(DWDM)两种。在同一波段下,密集波光模块的种类更多,所以密集波光模块对波段的资源利用更充分。中心波长各异的光在同一根光纤中可以互不干涉的传输,因此,通过无源合波器将来自多路彩色光模块不同中心波长的光合成一路进行传输,远端则通过分波器根据不同的中心波长将光分出多路,有效的节省了光纤线路。彩色光模块主要应用于长距离的传输线路。

      使用长距光模块,其发送光功率一般大于过载光功率,因此需要关注光纤长度,保证实际接收光功率小于过载光功率。如果光纤长度较短,使用长距光模块时需要配合光衰使用,注意不能烧坏光模块。

    • 光电模块

      光电模块通常称为电模块,又叫做光转电模块、RJ45模块,与光模块不同,电模块不进行光电转换。通过电模块的转接,可以用网线将两个光接口连接起来。目前华为只提供GE电模块,接口为RJ45接口,使用5类网线,支持1000BASE-T(IEEE 802.3ab)标准,最大传输距离为100m。

    光模块的命名规则

    100G光模块命名规则:

    100G光模块的关键标准组织主要有两个,IEEE和MSA,两者之间互补而又互相借鉴。其中100GBASE开头的标准都是IEEE802.3提出的,命名规则如下:
    在这里插入图片描述

    图:光模块命名规则

    每个字段具体规则如下:

    • 第一个字端:XXX,表示速率,速率标准;100就是指100GE。
    • m:表示传输距离,常见距离有如下几种:
      • KR:表示传输距离为10cm级,K即backplane,为背板之间的信号传输距离。
      • CR:表示传输距离为米级,C即copper,高速线缆连接。
      • SR:表示传输距离为10m级,S级short,短距离传输,一般为多模光纤。
      • DR:表示传输距离为500m。PSM4是500米传输,但是不属于IEEE的标准体系。
      • FR:表示传输距离为2km。通常是CWDM单模
      • LR:表示传输距离为10km,L即Long。单模光纤
      • ER:表示传输距离为40km,E即Extended。
      • ZR:表示传输距离为80km。
    • n:表示通道数量,表示100GE占用的SerDes通道数量。
      • 4:表示占用4个SerDes通道,即4*25GE。
      • 10:表示占用的10个SerDes通道,即10*10GE。

    除了以上规则,一般在后面还会有封装类型。

    光模块的演进历程

    以太网的发展经历了1Mbit/s、10Mbit/s、100Mbit/s(FE)、1Gbit/s(GE)、10Gbit/s(10GE)到40Gbit/s(40GE)、100Gbit\s(100GE)的迅速变迁,随着大数据、智慧城市、移动互联网、云计算等业务的快速发展,网络流量已经呈现指数增长。对带宽持续增长的渴求将需要更高的带宽速率,光模块也将快速发展。

    在当前主流数据中心的物理架构网络中,普遍遵循Spine-Leaf(Clos网络架构)架构。通常以10GE接口作为接入侧服务器对接,Leaf侧上的上行链路则普遍采用40GE接口。在大型数据数据中心,已经普遍使用25G作为主流接入,100G上行链路。在需要高计算,高带宽的场景中,使用RDMA技术,GPU服务器等已经使用了100GE,甚至200GE接入的。数据中心交换机互联正在向大规模400GE互联演进。

    Clos网络可参考:Clos网络架构

    25GE标准:

    25GE标准方案的诞生是在2014年的IEEE北京会议中,微软率先提出了25GE的立项需求,用于制定TOR与Server互联场景,但IEEE大会以25GE会分散业内投资、不利于行业发展为理由拒绝了25GE标准的立项需求。由于25GE方案能够解决服务器网卡从10Gbit/s迁移至40Gbit/s带来的CPU性能提升、PICE位带宽匹配等一系列问题,微软、高通等厂商自主成立了25GE以太网联盟,投入25GE方案的研究。IEEE不希望25GE游离于组织标准外而成为事实的标准,在同年7月通过了25GE项目。随着网络发展,事实证明25GE规范能够经济高效地扩展网络带宽,为新一代的服务器和存储方案提供更好的支撑,将来会覆盖更多的互联场景。

    25GE标准技术目前主要应用于数据中心的服务器接入。将从以下几个方面来解读为什么数据中心网络的接入速率是25Gbit/s,而不是已有的40Gbit/s。

    一、技术实现的天然优势。

    ​ 提及25GE标准技术,就必须提到SerDes(串行器/解串器)。SerDes被广泛地应用在各种电路与光纤通信技术中,从计算机内部使用的PCIe到网卡、交换机内部芯片之间的互联,全部采用SerDes连接。可以说,所有的高速器件都是使用SerDes的串行组件连接,转化为最终接收器的数据**。一个交换机端口所需要的SerDes连接数量称为“通道数(Lane)**”。

    ​ 经过多年的技术发展,SerDes速度可以达到25Gbit/s,也就是说,从25Gbit/s网卡出来,经过交换机传输到另一端的25Gbit/s网卡,端到端的所连接全都只需要使用一条25Gbit/s速率的SerDes连接通道即可,而40GE端口则采用QSFP封装类型,利用4个并行的10GE链路构成(每个10GE利用12.5GHz SerDes),需要4个SerDes通道。

    ​ 另外,在汇聚层和骨干层已经成为主流的100GE端口,在前期的探索中已经有了成熟的IEEE 100Gbit/s 以太标准,它包括4个通道的25 Gbit/s电子信号,通过在4根光纤或者铜缆对上运行4个25Gbit/s的通道(IEEE 802.3bj)来实现,为了25GE标准方案的诞生奠定了一定的基础。而且100GE端口通过一条QSPF28转SFP28的一分四线缆,即可转换成4个25GE端口,从端口匹配来比较,相较于40GE也有明显的优势。

    二、交换机性能提升

    ​ 如果说40GE是10Gbit/s速率时代的产物,那么25GE则是技术上的大势所趋,单通道的25GE相比现有的10GE解决方案,将性能提升了2.5倍。同时,相对于机架服务器连接的40GE解决方案而言,25GE拥有更高的端口密度。

    25GE标准与40GE标准技术参数对比如下:

    技术参数通道(Lane)SerDes(Gbit/s)封装类型接头类型光纤数/条
    25GE125SFP28DLC2
    40GE410QSFP+MPO8

    三、现有拓扑平滑演进,降低成本

    ​ 资本支出(CapEx)是采用任何新数据中心技术都需重点考虑的因素之一。企业最关心数据中心部署的一个方面是布线。很多工作工程师认为数据中心管理中最复杂的、最困难的部分就是布线,大多数工程师在安装一次线缆后都希望不再触碰它们。

    ​ 40GE交换机上使用的是QSFP+封装的光模块,机柜内部或者相邻机柜的连接可以采用QSFP+的DAC线缆,而更远的连接就必须使用QSFP+光模块配合MPO光线缆进行传输,QSFP+光模块普遍采用12芯光纤,相比10GE接口,两芯LC接口光纤的成本大大提高,而且完全不能兼容。如果考虑基于现有10GE升级到40GE的话,则全部的光纤线缆都要废弃,并且采用MPO光缆进行重新布线。

    ​ 25GE交换机上使用的SFP28封装类型的光模块,与10GE SFP封装类型的光模块一样,仅采用单通道连接,可以兼容现有拓扑的LC连接头类型的光纤。相较于从10GE升级到40GE而言,如果升级到25GE的话,支持从10GE以太网无缝迁移,无需重新规划拓扑以及重新布线,设备升级或者更换为25GE光模块后,可以即插即用,省心省力。

    ​ 相较于机架服务连接的40Gbit/s解决方案而言,25GE标准方案不仅可以利用当前10GE的拓扑平滑演进,还可以大幅度降低TOR交换机和线缆的采购支持,减少了电力、散热和占地空间的需求。

    100GE标准:

    ​ 提到100GE标准,就得说一说光模块的标准化组织。在光模块产业刚刚起步的时代,产业链较为混乱,每家厂商有各自的封装结构类型,尺寸外观也是五花八门。IEEE作为一个官方组织,IEEE 802.3工作组对光模块标准的统一起到了关键作用。区别于官方组织IEEE,MSA(Multi Source Agreement,多源协议)算是一个非官方的组织形式,作为产业内企业联盟行为,针对不同光模块的标准形成一致协议,定义统一的光模块结构封装(封装类型、外观尺寸、引脚分配等)。

    ​ IEEE早在2006年就成立了以研究下一代高速以太网100GE标准为目标的工作组,并与2012年发布了关于100GE的多个标准。为了满足不同距离的100GE上行场景需求,IEEE与MSA定义的100GE标准超过了10种,如下表所示,下面主要是数据中心网络中主流的几种标准。

    标准制定机构连接器光纤类型传输距离
    100GBASE-SR10IEEE 802.324芯MPO多摸光纤,中心波长850nm多模(OM2)光纤:30m;多模(OM3)光纤:100M;多模(OM4)光纤:150M;
    100GBASE-LR4IEEE 802.3LC单模光纤,中心波长1295.56~1309.14nm单模(G.652)光纤:10km
    100GBASE-ER4IEEE 802.3LC单模光纤,中心波长1295.56~1309.14nm单模(G.652)光纤:40km
    100GBASE-SR4IEEE 802.38/12芯MPO多模光纤,中心波长850nm多模(OM3)光纤:70m;多模(OM4)光纤:100m;
    100G PSM4MSA12芯MPO单模光纤,中心波长1310nm单模(G.652)光纤:500km
    100G CWDM4MSALC单模光纤,中心波长1310nm单模(G.652)光纤:2km

    100GBASE系列标准都是由IEEE 802.3制定的,具体命名规则已经在光模块命名那节已列出。

    ​ 光纤的传输特性和光模块的制造成本决定了不同的应用场景,多模常用于短距离传输,单模常用于长距离传输。由前面总结可知,IEEE的100GBASE系列标准足以覆盖长短距离的数据中心传输,100GBASE-SR4和100GBASE-LR4是IEEE定义的最为常用的标准规范。但在大部分数据中心内部互联场景中,100GBASE-SR4支持的距离过短,100GBASE-LR4的成本过高。MSA提出的PSM和CWDM4标准则完美解决了中距离传输场景中的成本问题。

    ​ CWDM4是通过光学器件MUX和DEMUX将4条并行的25Gbit/s通道波峰复用到一条100Gbit/s光纤链路上,这一点与LR4类似,区别如下。

    1. 通道间隔不同:

      CWDM4定义的是20nm的通道间隔,而LR4定义的是4.5nm的LAC-WDM间隔。通道间隔越大,对光学器件的要求越低,成本也随之降低。

    2. 激光器不同:

      CWDM使用的是DML(Direct Modulated Laser,直接调制激光器),是单个激光器。而LR4使用的EML(Electro-absorption Modulated Laser,电吸收调制激光器)是由DML和EAM组成的器件。

    3. 控温要求不同:

      由于LR4的通道间隔为4.5nm,激光器需要放置TEC(Thermo Electric Cooler,半导体热电制冷器)Driver芯片。

    ​ 总结以上3点,100GBASE-LR4标准的光模块成本相较于100G WDM4成本更高。除了CWDM之外,PSM4也是中距离传输的一种选择方案。100G PSM4规范定义了8根单模光纤(4发4收)的点对点100Gbit/s链路,每个通道以25Gbit/s的速率发送,每个信号方向使用4个相同波长且独立的通道。

    ​ 由于CWDM4使用了波分复用器,所以光模块成本高于PSM4。但在收发信号时,只需要两根单膜光纤,远少于PSM4要求的8根单膜光纤。随着传输距离的增加,PSM4的成本随之增加。

    ​ 完整的光模块解决方案不仅仅包括光模块的光电接口标准,还需要配套的结构封装。如下表,最早被提出应用的封装格式时CFP,但由于尺寸问题,随着光模块集成度的提高,CFP得以演进到CFP2、CFP4,再到盛行的QSFP28,光模块的总体发展呈现出高速率、高密度、低成本、低功耗的趋势。

    下表是100GE光模块封装格式演进趋势:

    封装格式功耗通道 * 速率对比
    CFP32W10 * 10Gbit/s或者4 * 25Gbit/s尺寸大、功耗高、传输距离远
    CFP212W4 * 25Gbit/s尺寸大、功耗高、传输距离远
    CFP46W4 * 25Gbit/s尺寸较小、功耗较低
    QSFP283.5W4 * 25Gbit/s尺寸小、功耗第

    ​ 经过几代的发展,100GE光模块的发展已经成熟。针对一些新技术应用和新的发展方向,不断有新的100G MSA成立和形成规范,推动相关产业链的持续发展。对于网络来讲,更高带宽、更低时延时我们面临的永无止境的挑战。

    400GE标准:

    ​ 400GE以太网的标准仍然由IEEE 802.3负责,自2013年起IEEE就实现了400GE标准的立项,启动了学习小组阶段性地对400GE的规格进行探讨。经过多次技术竞争和方案会议,400GE和200GE标准IEEE 802.3bs正式发布,其中关键技术在于层次化结构定义、FEC规范以及物理光接口传输机制。400GE标准主要采用的物理层技术方案和传输距离如下表所示。

    标准传输距离编码方式
    400GBASE-SR16100m16 * 25Gbit/s NRZ
    400GBASE-DR4500m4 * 100Gbit/s PAM4
    400GBASE-FR82km8 * 50Gbit/s PAM4
    400GBASE-LR810km8 * 50Gbit/s PAM4

    ​ 其中,基于多模光纤的SR16基本无人问津,基于PAM4电信号的调制技术的DR4、FR8和LR8成为瞩目的焦点。区域于之前100GE标准普遍采用的NRZ信号传输技术(采用高、低两种电平表示数字逻辑信号0和1),PAM4采用4个不同的信号电平进行传输,每个时钟周期可以传输2bit的逻辑信息(即00、01、10、11)。因此,在同一的波特率的条件下,PAM4的传输效率是NRZ信号的2倍。正式因为PAM4高效的传输效率,IEEE将其规范为400GE标准的电信号标准。

    ​ 前面提到,SerDes速度可以达到25Gbit/s,通过PAM4调制可以使对应比特率为50Gbit/s,所以通常将IEEE 802.3 400GE/200GE接口中的编码技术成为50Gbit/s/lane PAM4编码技术。

    400GE光模块封装格式综合比较:

    封装格式外观尺寸/mm功耗/W电接口通道光接口通道
    CFP8107.5 * 41.5 * 12.512-1816 * 25 Gbit/s8 * 56 Gbit/s
    OSFP107.8 * 22.6 * 13.012-158 * 56 Gbit/s8 * 56 Gbit/s
    OSFP-DD89.4 * 18.4 * 8.57-108 * 56 Gbit/s4 * 100Gbit/s

    ​ 以上三种400G光模块封装结构,目前市场对OSFP-DD的支持力度相对最大,其生态圈也是最为成为。主流光模块厂商所生产的400G光模块,最常见的就是OSFP-DD封装,同时也包括主流交换机,主流商业PHY芯片等都对OSFP-DD的支持最为广泛。OSFP-DD和OSFP都是电口支持8 * 50G PAM4信号,光口最高可支持8路并行,能耗较低,CFP8电口支持16 * 25G NRZ信号,光口最高支持16路并行,功耗相对较高。

    ​ 相较于400GE标准,200GE虽然起步较晚,但从目前情况来看,各厂家均比较倾向于采用4 * 56 Gbit/s PAM4方式, 光器件即可采用现有的28Gbit/s器件。从应用角度来看,200GE光模块的实现难度低,在数据中心场景中的应用可能早于400GE,为自身的定位保留的窗口的可能。但随着单波100GE技术研究的不断深入,短距400GE光模块在数据中新场景中将会得到更多的青睐。

    更高速率800GE,1.6T:

    面对新的应用,以太网的速率也在不断增长,如下图所示,从最初的10M,100M到最近标准化的400G,接口速率已经翻了4万倍。进一步应对数据中心每两年交换机容量翻一倍的需求,于2018年,以太网联盟就已经明确了在未来的几年内,将推出下一代以太网速率,800G和1.6T。

    在这里插入图片描述

    光模块提升带宽的方法有两种:

    1. 提高每个通道的比特速率

    2. 增加通道数。

      10G到40G,提升的是通道数。从40G到100G,提升的是单通道的波特率(10G->25G)。

    http://www.iccsz.com/site/cn/News/2020/04/20/20200420041614627821.htm

    光模块主要厂家

    光器件及芯片是光通信企业最核心的技术竞争力,尤其以光通信芯片为最。而我国光器件 及芯片企业整体实力较弱,产品主要集中在中低端领域,在 10G 以上速率的有源器件和 100G 光模块还需突破。

    国内芯片供不应求态势仍将持续。中国光器件厂商普遍规模偏小、实力偏弱,难以单独承 受高端器件及芯片高额的研发费用。极少能研发高端芯片的厂商也面临核心专利被国外垄断 的风险。即使在门槛较低的接入网市场,其芯片也难以自给自足,需要向外采购。

    在芯片层面仍然主要依赖国外芯片厂商

    光模块产业链:

    在这里插入图片描述
    在这里插入图片描述

    产业链进一步向中国集中,国内光模块供应商开始主导全球市场,市场份额有望超 50%。 LightCounting 最近一期调查报告指出,来自中国的中际旭创、海信、光迅科技、华工 正源和新易盛等 5 家光模块厂商有望在 2020 年进入全球前十,主导全球光模块市场, 对比 2010 年时只有一家中国企业进入前十。中际旭创有望在 2020 年终结 Finisar 的“连 冠”记录,登顶光模块前十排行榜。

    http://www.xyt-tech.com/upload/files/2020-04/2020041501.pdf

    光模块厂商份额:

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    光模块生产厂家世界前几大巨头:

    1. Finisar(菲尼萨),总部位于美国硅谷,Finisar 是光通信领域的全球技术领导者,是全球最大的光通信器件产品的供应商。

    2. JDSU(捷迪讯),总部位于美国,目前全球最大光纤零件供应商,

      光通讯领域巨头之一。

    3. Oclaro(合并Opnext)

    4. Avago(安华高科技)。

    5. Oplink,总部美国,为全球著名企业美国科氏(Koch)工业集团下属莫仕(Molex)公司之全资企业,致 力于为各种应用提供创新型光纤集成解决方案。分公司-光联通讯(珠海)有限公司则是全 球最重要的光无源和有源通讯器件、模块及子系统供应商之一。

    6. Source Photonics (索尔思)EML,是一家领先的光通信产品供应商,其产品广泛应用于电信系统和 数据通讯网络。

    国内目前具备一定影响力的厂商:

    • Netphotonics新飞通(深圳),总部,美国。光电元器件、光电通讯系统及相关产品等。
    • 光迅(Accelink)(WTD),武汉,全球领先的光电子器件厂商。
    • 海信(HISENSE)
    • 旭创(InnoLight),苏州。
    • 飞博创(FIBERXON),总部,美国。以技术和市场为主导,剥离生产环节的典型硅谷高科技公司。
    • 亦飞扬(Gigalight),光网络中间件,致力于全球光网络中间件最优秀的提供商和设计大成者。
    • 新易盛,点对点光模块,一直专注于光模块的研发。
    • 华工科技,光电器件。
    • 天孚通信,连接细分行业,光纤连接细分行业的领军企业。
    • 剑桥科技

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    来源: https://discourse-production.oss-cn-shanghai.aliyuncs.com/original/3X/7/5/75bb476048c105b24f100aaa14e563fb28f1c110.pdf

    https://blog.51cto.com/14625403/2475661

    https://www.sohu.com/a/413247085_100034932

    http://www.199it.com/archives/1031418.html

    http://news.eeworld.com.cn/mp/ICVIS/a72398.jspx

    光模块失效的原因以及故障处理

    光模块失效的主要原因:

    光口污染和损伤引起光链路损耗变大,导致光链路不通。光口污染和损伤的原因主要有:

    1. 光模块的光口暴露在环境中,光口有灰尘进入而污染。
    2. 使用的光纤连接器端面已经污染,光模块的光口被二次污染。
    3. 带尾纤的光接头端面使用不当,比如:端面划伤等。
    4. 使用了劣质的光纤连接器。

    这种情况下,对于污染的光口请用光口清洁棒等专用工具轻轻擦拭,对于损坏、划伤的尾纤请直接更换。

    在日常处理故障链路过程中:

    常见链路故障原因,由光模块引起的主要有:

    以下情况:是个人在日常工作中通过解决大量故障链路总结而来。

    • 发现无法识别的光模块,可重新插拔或者更换光模块。
    • 发现接口抖动的情况,可能原因是光模块有问题,导致接口有错误包,或者光纤有问题。解决办法:首先查看两边收发光是否正常,其次判断两边接口下是否有error包,crc包,丢包等。一般是入方向有error包,crc包,此时可通过更换对端光模块尝试解决。
    • 一般情况下,如果发现接口出方向有丢包,可通过更换光模块尝试解决。
    • 链路down的情况,可查看是否是err-down,这种情况一般是是有错误包过多导致的,或者光纤问题。如果有错误包,可直接更换光模块尝试恢复。err-down的端口,在更换光模块后一般需要手动shutdown,no/undo shutdown才能恢复。
    • RX / TX low的情况导致接口不up的情况:
      • 如果TX low:是本端没发光,现判断本端端口是否关闭,如果没有关闭,插拔或者更换光模块尝试解决。
      • 如果RX low:是收光低,可能是对端光模块发光低,也可能是光纤问题,或者本端光模块可能也有问题。需要通过更换尝试解决。
    • 通过将两个端口自环测试,可确定是光模块问题还是交换机端口有问题。

    光模块对接问题

    光模块对接时主要考虑以下原则:接口标准类型相同理论上即可对接,但实际使用时要注意下收发光功率范围和传输距离。

    影响光模块对接的主要因素:

    因素说明
    波长严禁不同波长的光模块对接。由于在光纤中的传输损耗和色散不同,同一速率不同波长对应的传输距离是不一样的,因此对接时需要选择相同波长的光模块。
    传输距离光模块要求对等使用,不同距离的光模块接口指标差别很大,长距离的光模块价格也高,因此长距离光模块与短距离光模块对接,必须通过增加光衰减器对接;严禁光模块支持距离小于光纤长度。
    速率光模块标称速率需和实际链路速率一致,在低速情况下可以向下适配,对于部分高速光模块是不支持1.25G等低速率;严禁低速率光模块跑高速信号。光模块标称速率必须大于接口速率。
    模式光纤与光模块要配对使用,即单模光模块使用单模光纤,多模光模块使用多模光纤,不要混用

    参考资料:

    https://support.huawei.com/enterprise/zh/doc/EDOC1100130745?section=j003

    https://support.huawei.com/hedex/hdx.do?docid=EDOC1100101225&lang=zh&idPath=24030814%7C21782165%7C21782236%7C22318638%7C7542409

    《云数据中心网络架构与技术》张磊,陈乐

    https://zhuanlan.zhihu.com/p/101607360

    https://fiber.ofweek.com/2019-01/ART-210001-8500-30296814.html

    https://www.c-fol.net/baike/content/3/1701.html

    https://posts.careerengine.us/p/5e99afbb3f338d1b55693d9d

    https://discourse-production.oss-cn-shanghai.aliyuncs.com/original/3X/7/5/75bb476048c105b24f100aaa14e563fb28f1c110.pdf

    https://blog.51cto.com/14625403/2475661

    https://www.sohu.com/a/413247085_100034932

    http://www.as-fh.com/cn/views_news/industry_insight/364.html

    http://www.iccsz.com/site/cn/News/2020/04/20/20200420041614627821.htm

    光模块行业深度报告 http://www.xyt-tech.com/upload/files/2020-04/2020041501.pdf


    展开全文
  • ESP8266wifi模块与51单片机通信教程

    万次阅读 多人点赞 2019-11-10 17:45:59
    ESP8266wifi模块与51单片机通信教程 准备两个200欧左右的电阻 准备6根杜邦线 然后将ES8266通过如图这种方式连接起来 注意:在连接单片机的RX和TX引脚时必须和ESP8266模块的RX和TX反接才能保证正常通信 将程序下载...
  • LD3320语音识别模块学习(1)——控制电机转动

    万次阅读 多人点赞 2018-12-05 09:42:01
    ·通过语音模块(LD3320)控制电机转动方向,其实这个语音模块的代码网上很全,淘宝会提供一套完整的开发代码,我们使用者其实不需要关注它的具体实现过程,只需要掌握如何去修改代码完成功能即可。 修改的部分代码...
  • 智能小车红外避障模块----使用教程

    万次阅读 2019-09-30 16:04:08
    今天就给·大家分享一下,何如在你的单片机或者树莓派上调用红外避障模块。 循迹模块介绍 循迹模块和红外避障模块类似。循迹模块的红外发射二极管不断发射红外线,当放射出的红外线被物理反射时,被红外接收器接收,...
  • 用友U8视频教程全集(全模块)

    万人学习 2017-07-23 19:17:08
    以用友U8 12.0为题材,包含U8全部功能模块。不停留在U8软件操作,深入业务流程实现,融入企业管理之中。讲师具有20多年跨行业企业信息管理经历。实战辅导数十家企业。
  • fcntl.py模块

    千次下载 热门讨论 2016-06-04 21:14:41
    ImportError: No module named fcntl错误解决, 将资源fcntl.py下载下来,放到python的安装目录下的\Lib目录内即可。我的是放到D:\Python27\Lib目录下了。
  • ASP.NET开发典型模块大全 (修订版) (源代码)

    千次下载 热门讨论 2011-11-15 12:27:58
    《ASP.NET开发典型模块大全(修订版)》以关键技术和热点技术为核心,通过27个典型模块和5章热点技术,全面地介绍了如何使用asp.net进行各领域的web项目开发。全书共3篇分为32章,第1篇关键模块篇,覆盖网站开发的...
  • 前端模块化详解(完整版)

    万次阅读 多人点赞 2019-02-16 19:13:46
    前言 在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可;如今CPU、浏览器性能得到了极大的提升,很...本文内容主要有理解模块化,为什么要模块化,模块化的优缺点以及模块化规范,并且介绍下开发中...
  • 什么时候选择L298N或继电器模块? L298N模块 主控芯片为L298N的双H桥电机驱动模块,驱动电压为5~35V,一般驱动直流电机正反转一般使用L298N。 接线引脚 VCC:有12V端口和5V端口各一个。比如控制12V的直流电机,...
  • 基于STM32的wifi模块连接实现

    热门讨论 2016-01-12 15:57:45
    使用ESP8266 wifi模块与STM32连接,提供C语言版的ESP8266库函数,并用串口打印实时连接状态,实现smartlink和TCP连接功能,亲自编写,测试可用。
  • C#开发典型模块大全

    千次下载 热门讨论 2013-05-04 12:58:48
    C#开发典型模块大全.明日科技.扫描版,此为第二部分。
  • ESP8266WiFi模块入门使用手册

    千次阅读 2018-06-04 11:10:00
    ESP8266WiFi模块系列模块使用指南,模组全家福,技术资料请 点击打开链接
  • 模块化架构设计

    千次阅读 2020-09-02 18:10:39
    项目结构 项目结构解读 我将项目模块分为,业务模块,核心模块,业务组件模块来进行管理,关于他们的定义如下: 1、业务模块,是项目组成的基本单元,可以理解为一个项目由N个业务模块组合起来。另外业务模块也是...
  • 蓝牙模块调试总结(BLE\HC-05\HC-06\HC-01\MLT-BT05)

    万次阅读 多人点赞 2019-10-12 09:43:31
    最近在使用蓝牙模块与手机进行联合调试,遇到了一些问题,在此总结一下。 1.蓝牙模块分类 BLE BLE(Bluetooh Low Energy)蓝牙低能耗技术是短距离、低成本、可互操作性的无线技术,它利用许多智能手段最大...
  • python serial模块

    千次下载 热门讨论 2012-06-06 15:16:34
    开发python串口的模块,简洁方便。在开发前,请确保安装此模块
  • 【Linux】Linux基础知识(Linux模块

    万次阅读 2018-07-14 18:51:17
    Linux的内核模块机制允许开发者动态的向内核添加功能,我们常见的文件系统、驱动程序等都可以通过模块的方式添加到内核而无需对内核重新编译,这在很大程度上减少了操作的复杂度。模块机制使内核预编译时不必包含很...
  • Linux内核模块详解

    万次阅读 多人点赞 2019-08-26 09:22:36
    内核模块 实验目的 内核模块是Linux操作系统中一个比较独特的机制。通过这一章学习,希望能够理解Linux提出内核模块这个机制的意义;理解并掌握Linux实现内核模块机制的基本技术路线;运用Linux提供的工具和命令,...
  • python模块详解

    热门讨论 2012-02-29 21:06:35
    python模块详解 各个模块的详解 核心模块 1.1. 介绍 1.2. _ _builtin_ _ 模块 1.3. exceptions 模块 1.4. os 模块 1.5. os.path 模块 1.6. stat 模块 1.7. string 模块 1.8. re 模块 1.9. math 模块 1.10....
  • Java 9 模块化开发:核心原则与实践

    万次阅读 2018-12-21 23:30:20
    Java 9 向 Java 平台引入了模块系统,这是一个非常重要的飞跃,标志着模块化 Java 软件开发的新纪元。当需要创建灵活且易于维护的代码时,模块化是一个关键的架构设计原则。本书给出了 Java 模块系统的明确概述,并...
  • 随着物联网无线通信技术的日益发展, WiFi的网络覆盖范围大,移动便捷。传输速度快,安装简单。健康安全等优势。在生活中得到了广泛应用。...WiFi模块也就细分为了串口WiFi模块,SDIOWiFi模块,SPI接口
  • import scipy.io as scio ...无法启动报"ImportError: DLL load failed: 找不到指定的模块"的解决办法 ############################################### 解决办法: 先pip uninstall scipy ...
  • stm32f103c8t6控制蓝牙模块实现led灯亮灭

    千次阅读 多人点赞 2020-11-19 19:51:22
    stm32f103c8t6控制蓝牙模块实现led灯亮灭 之前利用蓝牙模块是用arduino控制板的,现在已经渐渐接触stm32,所以,这次想着用stm32来控制蓝牙模块。 首先的话,需要配置蓝牙模块的一些参数,用到的模块有: USB转TTL...
  • JDK9的新特性:JPMS模块

    千次阅读 2020-05-22 06:50:41
    模块化的本质就是将一个大型的项目拆分成为一个一个的模块,每个模块都是独立的单元,并且不同的模块之间可以互相引用和调用。 在module中会有元数据来描述该模块的信息和该模块与其他模块之间的关系。这些模块组合...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,550,568
精华内容 1,420,227
关键字:

模块