精华内容
下载资源
问答
  • GMSL 介绍
    千次阅读
    2021-09-30 10:52:11

     一、GMSL是什么?

    GMSL--Gigabit Multimedia Serial Link (中文译为:吉比特多媒体串行链路), 整个传输线路包含串行器和解串器(SerDes),GMSL全面支持汽车信息娱乐系统、高级驾驶辅助系统(ADAS)甚至未来无人驾驶 要求的宽带、复杂互连和数据完整性。

    从摄像头的超低功耗要求、到传感器数据汇聚的宽带要求,GMSL SerDes能够满足未来系统的所有需求。先进的链路完整性和诊断功能提供可靠的链路性能监测——这对汽车安全系统的设计至关重要。GMSL串行器和解串器支持长达15m的屏蔽双绞线(STP)或同轴电缆传输,满足汽车行业最苛刻的电磁兼容(EMC)要求。

    串行器和解串器IC均内置扩频功能,以改善链路的电磁兼容(EMI)性,无需外部扩频时钟。串行器和解串器系列产品的互操作性允许链路两侧使用不同接口。除驱动高分辨率中央/后排显示屏和仪表盘外,GMSL SerDes也能出胜任百万像素级摄像机系统设计。

    在现代新型汽车视频互连众多性能的基础上,GMSL技术提供宽带、功能丰富、设计灵活性等优势,支持无人驾驶系统等未来汽车的设计需求。

    GMSL 技术芯片厂商:MAXIM美信

    二、GMSL可以做是什么?

    近来,汽车ADAS高级驾驶辅助系统装车率快速增长,纵览各大厂商,这些技术基本上集中在L2-L3级自动驾驶,而为了实现这些功能,单车感知系统中,摄像头的使用量基本上都在5个以上。比如说特斯拉8个、小鹏P7为14个、威马W6是7个、而背靠阿里与上汽的智己汽车将之增加到15个。

    图片

    这些摄像头根据不同位置分布实现其不同功能,GMSL摄像头典型应用场景:

    1. 前视: 前车防撞预警、车道偏离预警、交通标识识别、行人防撞预警等ADAS应用
    2. 环视: 360°全景泊车 Automotive Surround View
    3. 后视: 倒车影像(采用广角)
    4. 侧视: 视觉盲点监测等
    5. 内置: 疲劳提醒、手势识别、情绪识别等

    三、如何利用GMSL 来做这些事 ?

           举例NVIDIA Jetson Xavier AGX 平台+GMSL信号采集板+8路GMSL相机的应用案例:

            硬件:

            Jetson Xavier AGX Devkit 开发套件

            GMSL2 信号采集板 --- 4xMAX9296/4x4Lane CSI

            GMSL2 相机 --- AR0231RGB + MAX9295A (后置ISP)

            软件:

            Jetson Xavier AGX JetPack4.4 SDK(可兼容其他版本)

            Ubuntu 18.04 --- Linux-4.9.140

            应用:

            Gstreamer 命令查看RAW相机                

    #查看相机/dev/video0 带帧率显示
    gst-launch-1.0 --gst-debug=4 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM),width=1920,height=1080,framerate=30/1,format=NV12' ! nvvidconv ! fpsdisplaysink video-sink=xvimagesink sync=false 
    
    
    #查看多路相机/dev/video0|1 带帧率显示
    gst-launch-1.0 nvarguscamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM),width=1920,height=1080,framerate=30/1,format=NV12' ! nvvidconv ! fpsdisplaysink video-sink=xvimagesink sync=false \
    & gst-launch-1.0 nvarguscamerasrc sensor-id=1 ! 'video/x-raw(memory:NVMM),width=1920,height=1080,framerate=30/1,format=NV12' ! nvvidconv ! fpsdisplaysink video-sink=xvimagesink sync=false

            JetPack SDK -->nvidia-l4t-jetson-multimedia-api 打开RAW 相机参考

    /usr/src/jetson_multimedia_api/samples/13_multi_camera/

            OpenCV 预览多路相机代码参考:        

    /*
     * Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions
     * are met:
     *  * Redistributions of source code must retain the above copyright
     *    notice, this list of conditions and the following disclaimer.
     *  * Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the
     *    documentation and/or other materials provided with the distribution.
     *  * Neither the name of NVIDIA CORPORATION nor the names of its
     *    contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
     * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     */
    
    #include <iostream>
    #include <string>
    #include <sstream>
    #include <chrono>
    #include <opencv2/core/core.hpp>
    #include <opencv2/videoio/videoio.hpp>
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/imgproc/imgproc.hpp>
    
    static void help()
    {
        std::cout << "\nThis is a sample OpenCV application to demonstrate "
        "CSI-camera capture1 pipeline for NVIDIA accelerated GStreamer.\n\n"
        "./opencv_nvgstcam [--Options]\n\n"
        "OPTIONS:\n"
        "\t-h,--help            Prints this message\n"
        "\t--width              capture1 width [Default = 1280]\n"
        "\t--height             capture1 height [Default = 720]\n"
        "\t--fps                Frames per second [Default = 30]\n"
        "\tq                    Runtime command to stop capture1\n\n"
        << std::endl;
    
    }
    
    static std::string create_capture (int index, int width, int height, int fps)
    {
        std::stringstream pipeline_str;
        pipeline_str << "nvarguscamerasrc sensor-id=" <<std::to_string(index)<<" ! video/x-raw(memory:NVMM), width=(int)"
            << std::to_string(width) << ", height=(int)" << std::to_string(height)
            << ", format=(string)NV12, framerate=(fraction)" << std::to_string(fps)
            << "/1 ! nvvidconv ! video/x-raw, format=(string)I420 ! videoconvert"
            " ! video/x-raw, format=(string)BGR ! appsink ";
    
    	std::cout <<pipeline_str.str()<< std::endl;
        return pipeline_str.str();
    }
    
    int main(int argc, char const *argv[])
    {
        unsigned int fps;
        int width;
        int height;
        int return_val = 0;
        double fps_calculated;
        cv::VideoCapture capture1;
        cv::VideoCapture capture2;
        cv::VideoCapture capture3;
        cv::VideoCapture capture4;
        cv::Mat frame1;
        cv::Mat frame2;
        cv::Mat frame3;
        cv::Mat frame4;
        cv::Mat frame1_dst;
        cv::Mat frame2_dst;
        cv::Mat frame3_dst;
        cv::Mat frame4_dst;
    	
        cv::TickMeter ticks;
    
        const std::string keys =
        "{h help         |     | message }"
        "{width          |1928 | width }"
        "{height         |1208  | height }"
        "{fps            |30   | frame per second }"
        ;
        // Create 1920x1080 mat for window
        cv::Mat disp_mat1(cv::Size(1280,360), CV_8UC3);
        cv::Mat disp_mat2(cv::Size(1280,360), CV_8UC3);	
        cv::Mat disp_vmat(cv::Size(1280,720), CV_8UC3);
    
        //
        cv::CommandLineParser cmd_parser(argc, argv, keys);
    
        if (cmd_parser.has("help"))
        {
            help();
            goto cleanup;
        }
    
        fps = cmd_parser.get<unsigned int>("fps");
        width = cmd_parser.get<int>("width");
        height = cmd_parser.get<int>("height");
    
        if (!cmd_parser.check())
        {
            cmd_parser.printErrors();
            help();
            return_val = -1;
            goto cleanup;
        }
        
        capture1.open(create_capture(0, width, height, fps), cv::CAP_GSTREAMER);//Open 
        capture2.open(create_capture(1, width, height, fps), cv::CAP_GSTREAMER);
        capture3.open(create_capture(2, width, height, fps), cv::CAP_GSTREAMER);
        capture4.open(create_capture(3, width, height, fps), cv::CAP_GSTREAMER);
        
        //
        if (!capture1.isOpened())
        {
            std::cerr << "Failed to open VideoCapture" << std::endl;
            return_val = -4;
            goto cleanup;
        }
    
        //Display window setting
        cv::namedWindow("FPDLINKIII_4xCamera_Demo");
        cv::moveWindow("FPDLINKIII_4xCamera_Demo", 0, 0);
    
        while (true)
        {
            ticks.start();
            capture1 >> frame1;
    	capture2 >> frame2;
            capture3 >> frame3;
            capture4 >> frame4;
    	cv::resize(frame1, frame1_dst, cv::Size(640,360));
    	cv::resize(frame2, frame2_dst, cv::Size(640,360));
    	cv::resize(frame3, frame3_dst, cv::Size(640,360));
    	cv::resize(frame4, frame4_dst, cv::Size(640,360));
    	#if 1
    	cv::hconcat(frame1_dst, frame2_dst, disp_mat1);
    	cv::hconcat(frame3_dst, frame4_dst, disp_mat2);		
    	cv::vconcat(disp_mat1, disp_mat2, disp_vmat);
    	cv::imshow("FPDLINKIII_4xCamera_Demo", disp_vmat);
    	#else
    	cv::imshow("FPDLINKIII_4xCamera_Demo", frame1);
    	#endif
            int key = cv::waitKey(1);
            // 'q' for termination
            if (key == 'q' )
            {
                break;
            }
            ticks.stop();
        }
    
        if (ticks.getCounter() == 0)
        {
            std::cerr << "No frames processed" << std::endl;
            return_val = -10;
            goto cleanup;
        }
    
        fps_calculated = ticks.getCounter() / ticks.getTimeSec();
        std::cout << "Fps observed " << fps_calculated << std::endl;
    
    cleanup:
        capture1.release();
        capture2.release();
        capture3.release();
        capture4.release();
        return return_val;
    }
    

             

    更多相关内容
  • 摘要:Maxim的吉比特(千兆)多媒体串行链路(GMSL)方案可以对数字视频和音频数据进行串行转换,然后通过一对双绞线串行传输。另外,集成双向控制通道可以使能单个微处理器(µC)对串行器、解串器和所有连接外设...
  • 摘要:Maxim的吉比特(千兆)多媒体串行链路(GMSL)方案可以对数字视频和音频数据进行串行转换,然后通过一对双绞线串行传输。另外,集成双向控制通道可以使能单个微处理器(µC)对串行器、解串器和所有连接外设...
  • GMSL(千兆多媒体串行链路)的特点以及功能进行介绍
  • Jetson_GMSL_Camera_Framework_Guide_nv.pdf nvidia xavier nx平台关于GMSL相机驱动调试
  • 完整版MAX9286英文数据手册,文档介绍详细,详细说明寄存器的配置,数据格式,典型的应用案例等,1.5Gbps高速传输的MAX9286可以连接4路GMSL摄像头,可兼容MAX96705、MAX9271等串行器。可使用UART或者IIC接口控制MAX...
  • General Description The MAX96705 is a compact serializer with features especially suited for automotive camera applications. It is function and pin compatible with the MAX9271. In high bandwidth ...
  • 本文以MAX9259吉比特多媒体串行链路(GMSL)为例进行了说明。  MAX9259的内部线路故障监控电路用来监视串行链路的故障,比如线路与电源线(电池)短路、与地短路、或者是开路。图1为原始电路和所需的外部电阻,这在MAX...
  • MAX9259的内部线路故障监控电路用来监视串行链路的故障,比如线路与电源线(电池)短路、与地短路、或者是开路。图1为原始电路和所需的外部电阻,这在MAX9259的数据资料中也有提及。
  • 通信协议-GMSL(千兆多媒体串行链路)

    千次阅读 热门讨论 2021-08-30 13:58:11
    首先,了解一下什么是GMSL GMSL(Gigabit Multimedia Serial Links),中文名称为千兆多媒体串行链路,是Maxim公司推出的一种高速串行接口,适用于音频,视频和控制信号的传输。 通信介质支持同轴电缆以及屏蔽双绞线,...

    首先,了解一下什么是GMSL

    在这里插入图片描述

    GMSL(Gigabit Multimedia Serial Links),中文名称为千兆多媒体串行链路,是Maxim公司推出的一种高速串行接口,适用于音频,视频和控制信号的传输。

    通信介质支持同轴电缆以及屏蔽双绞线,使用50Ω同轴电缆或者100Ω屏蔽双绞线(STP)时,长度可达15m甚至更长

    其核心技术为串行器/解串器技术,简称SerDes.首先通过串行器将并行数据流转为串行数据流,然后通过更高的频率进行传输,之后通过解串器将接收到的串行数据流转换为并行数据流。

    GMSL诞生的意义

    GMSL的意义在于解决了音频,视频和控制信号的高速传输问题。

    在GMSL诞生之前,面对大量的数据传输一般采用的方法是通过并行总线增加带宽,一根线传输不够,我10根线总够了吧,10根还不够,我继续往上加。这种方式面临一个问题,就是线束会特别多,在工业生产中,大量的线束意味着增加成本和重量,同时也会增加EMI电磁干扰。因此线束的数量一般不能太多,但面对大量的数据,我又该怎么传输呢?还有一个办法就是增加频率,我之前一秒发10组数据,我现在改成一秒发100组,这种方式在数据量不算太大时,是可以实施的。但当数据量达到一定量级后,高频率的发送数据会使并行总线的劣势显示出来了。

    并行总线传输数据的前提是使用同一时序(同时发送,同时接收)。当频率过高时,数据传送难以和时钟同步,同时布线的长度稍有差异,也会导致同步困难,另外,提升时钟频率还容易引起信号线间的相互干扰。总之,一系列的问题表明高速的数据传输并行总线是无法胜任的,这也是目前并行总线的技术瓶颈所在。

    并行总线无法胜任高数据流传输,于是人们又把目光集中到串行总线上。想了想,串行总线就一根,不存在信号线之间的干扰,而且也没有同一时序问题,只需提高频率,就能进行高数据流传输,而且工业上,串行总线一般使用差分信号进行传输,这更加保证了信号的准确性。可以说,目前面对高数据流的传输,大家一般都会采用串行总线,差分信号传输。

    以ADAS摄像头为例,这也是GMSL应用的主要领域。一般来讲,摄像头除了对外发送捕获到的图像数据外,还会发送帧同步信号,行同步信号,像素时钟等信息,此外还有电源供给等等,它是由许多信号线组成的一个并行总线,之前我们说过,并行总线在高速的数据传输过程中,是不占据优势的,因此我们需要将这些并行的信号合并为串行信号,再通过更高频率进行传输。

    办法可能看起来很简单,但其中涉及的技术却是很复杂的,需要考虑数据流的合并、回原、带宽以及稳定性等等问题,目前掌握这项技术的只有Maxim和TI两家。

    Maxim将这种串行器/解串器技术称为GMSL;
    TI将串行器/解串器技术称为FPD Link,现已发展到第三版本:FPD Link III

    这两家旗下分别有相对应的串行器和解串器产品,一般是为摄像头供应商服务,集成到摄像头内部,作为OEM的二级供应商。

    今天我们的内容只涉及GMSL

    GMSL的通信机理

    下图为GMSL在ADAS摄像头中的应用,其大体流程如下:
    在这里插入图片描述
    具体描述:

    • 图像传感器Image Sensor将捕获的光信号转为数字信号,经CSI2协议传输给串行器(MAX9295A),
      传输内容包括:图像数据信息,像素时钟,行同步信号,帧同步信号,其中raw12表示摄像头的传输数据格式为原始数据raw格式,每个像素点有12bit数据,30fps表示每秒发送30张图像
    • 串行器接收到数据信息后,对信息进行串行化处理,将数据整理成包的形式,然后通过同轴电缆,将包以串行的形式发送出去,我们注意到在通过同轴电缆时,有两个方向的数据流传输,其中一个是前向通道,用于发送摄像头捕捉的图像数据,其带宽为6Gbps,还有一个为回馈通道,用以接收应答信息,带宽为187Mbps,这两个通道的传输速率是不一样的,可以根据实际需要进行设定,这也是GMSL的一大特色
    • 之后解串器会接收到串行器串行化的数据,对数据再进行解串,使数据回复至原来模样,然后将原始数据传给FPGA,这个一个定制电路板,一般图像处理器ISP模块会集成到里面,原始数据其实就是发送给了FPGA里面的ISP模块,在它里面对数据进行一些算法处理,最终输出RGB或者YUV格式
    • 图中是将处理好的数据发送给了LCD(液晶显示器),但在自动驾驶中,这个地方就会有些差异,ISP会将处理好的图像数据发送给FPGA里的AI芯片,通过卷积神经网络(CNN)对图像进行分类,检测,跟踪等等,然后根据实际情况,指挥FPGA中的MCU对底盘进行控制,以达到自动驾驶的目的

    GMSL数据传输

    本文以MAX96711产品文档为例,介绍GMSL数据传输的特点:

    MAX96711产品描述
    • 该设备可在各种输入宽度和字数下工作,串行数据速率高达1.74Gbps
    • 高带宽模式提供116MHz的并行时钟速率,具有12位视频数据和2位同步(HS/VS)数据
    • 嵌入式9.6kbps至1Mbps控制通道程序
    • 序列化程序、反序列化程序和任何连接的UART或I2C外围设备。
    • 为了促进安全应用,该设备具备视频和控制数据的CRC保护。
    • 控制信道重传和高抗扰度模式减少位错误对通信的影响
    串行链路信号和数据格式

    序列化程序对输入的并行数据进行加扰,然后将其与前进控制数据相结合。这个数据之后会进行编码然后以几倍于输入字速率的单个序列化比特流进行传输(取决于总线宽度)。反序列化程序接收串行数据并恢复时钟信号。然后,数据将被反序列化、解码并解扰为并行输出数据和前向控制数据

    工作模式

    GMSL设备可配置为以多种模式运行(取决于应用程序)。这些模式可以更有效地利用串行带宽。其中大部分设置在系统设计期间设置,并使用外部配置引脚或通过寄存器位进行配置。

    视频链路和配置链路

    在正常工作中,序列化程序以视频链路模式运行(serializer SEREN=1)将视频数据和控制数据通过串行链路发送。在序列化程序中设置SEREN=0关闭序列化。序列化程序以视频链路模式启动,需要有效的PCLK才能运行。当PCLK不可用时,配置链路可用于设置串行器,解串器和外围设备。在序列化程序中设置SEREN=0和CLINK=1以启用配置链接(SEREN=1强制序列化程序进入视频链接模式)。一旦PCLK被建立,就打开视频链路(SEREN=1)。
    默认情况下,视频链路模式需要有效的PCLK才能工作。在序列化程序中设置AUTO_CLINK bit=1和SEREN=1,使设备在视频链路和配置链路之间自动切换,当PCLK不存在时。

    单/双模式

    单/双模操作将可用的1.74Gbps带宽配置为各种宽度和字速率。单模操作与所有GMSL设备和串行器兼容,每个串行字产生一个并行字。双模式为每个串行字序列化两个半宽并行字,从而使并行字速率范围增加2倍(与单模式相比)。对于单模式操作,设置DBL=0;对于双模式操作,设置DBL=1。

    HS/VS编码

    默认情况下,GMSL为HSYNC、VSYNC和DE(如果使用)分配一个视频位插槽。使用HS/VS编码,该设备将对特殊数据包进行编码,以同步信号,从而释放额外的视频比特槽。当设备处于高带宽模式(HIBW=1)时,默认情况下HS/VS编码打开。DE仅在HIBW=1且DE_EN=1时编码。当HIBW=0时,设置HVEN=1以启用HS/VS编码(DE,如果启用,则使用一个视频位)。HS/VS编码要求HSYNC、VSYNC和DE(如果使用)在活动视频期间保持高电平,在消隐期间保持低电平。使用反极性同步信号时,使用HS/VS反转。

    错误监测

    串行链路的8b/10b编码/解码和1位奇偶校验检测串行链路上发生的位错误。可选的6位CRC检查是以牺牲6个视频位为代价的(当HIBW=0时)。要激活6位CRC模式,首先在远程侧设备中设置PXL_CRC=1,然后在本地侧设备中设置。当使用6位CRC模式时,可用的内部总线宽度在单输入模式(DBL=0)下减少6位,在双输入模式(DBL=1)下减少3位。注意,由于串行器或解串器的引脚可用性,输入总线宽度可能已经减小;因此,CRC的带宽减少可能不可见
    一个额外的32位视频链路CRC可通过设置LINE_CRC_EN=1获得。启用时,序列化程序计算视频链路的32位CRC,并在消隐期间发送此信息。解串器将接收到的CRC与视频链路数据进行比较。当检测到CRC错误时,解串器的LINE_CRC_ERR位锁存。读取时,LINE_CRC_ERR清除。

    总线带宽

    串行链路具有多个总线宽度设置,这些设置决定并行总线宽度和产生的并行字速率。串行链路的最大串行比特率为1.74Gbps。BWS位决定每个串行数据包的长度是30位还是40位,当BWS=0或1时,这将转换为最大串行数据包速率(以及产生的最大并行字速率)分别为58MHz或43.5MHz。编码将24、27或32并行位转换为30或40位串行数据包。一位用于奇偶校验,另一位用于控制通道。在可选的6位CRC期间,使用额外的6位。除此之外,如果使用双模式,则会将剩余的字大小一分为二。剩余的位可用于视频位(如果不使用H/V编码,则减去任何同步位)
    以下模式列出了内部总线宽度。可用输入和输出引脚的数量可能会限制可用的实际总线宽度

    • 24位模式
      当BWS=0和HIBW=0时,30位串行包与表示24位(24位模式)的三个8b/10b符号相对应。在奇偶校验和控制信道之后,如果使用或未使用CRC(单模式下),则留下16/22位视频数据;如果使用或未使用CRC(双模式下),则留下8/11位视频数据。
      在这里插入图片描述

    • 27位高带宽模式
      当BWS=0和HIBW=1(高带宽模式)时,30位串行包与表示27位(27位模式)的三个9b/10b符号相对应。在奇偶校验和控制信道之后,如果使用或未使用CRC(单模式下),则留下19/25位视频数据;如果使用或未使用CRC(双模式下),则留下9/12位视频数据。
      在这里插入图片描述

    • 32位模式
      当BWS=1时,40位串行包对应于表示32位(32位模式)的四个8b/10b符号。在奇偶校验和控制信道之后,如果使用或未使用CRC(单模式下),则留下24/30位视频数据,如果使用或未使用CRC(双模式下),则留下12/15位视频数据。
      在这里插入图片描述

    控制信道和寄存器编程

    控制通道通过串行总线发送信息用于控制串行器、解串器和任何附加的外围设备。控制信道在串行链路上是多路复用的,无论有没有视频通道,都是可用的

    前向控制信道

    从串行器发送到解串器的控制数据为在前向控制信道上发送。数据被编码作为前向高速链路中的串行位之一。之后经过解串器,从串行链路中提取前向控制通道数据。前向控制信道带宽超过最大外部控制数据速率,并且前向控制通道上发送的所有数据均显示在传输延迟几位后的远程端。

    反向控制通道

    从解串器发送到串行器的控制数据通过反向控制通道发送。数据被编码为一系列1μs脉冲,最大原始
    数据速率为1Mbps。高抗扰度模式可用于增加反向控制通道的鲁棒性,在一个降低后的500kbps原始比特率下。在下表中,设置REV_FAST bit=1将该速率增加回1Mbps。在I2C模式下,如果输入数据速率(编码后)超过反向数据速率,则通过时钟拉伸保持输入时钟,以减慢外部时钟进而满足内部比特率。
    在这里插入图片描述

    UART接口

    UART接口与所有GMSL设备兼容,通过多个UART数据包在设备之间发送命令。有两种模式可用:基本模式和旁路模式。基本模式用于串行器、解串器和使用UART-to-I2C转换的I2C外围设备之间的通信。旁路模式允许使用任何UART协议与外围设备进行全双工UART通信

    I2C接口

    串行链路通过控制通道将串行器和解串器I2C接口连接在一起。当I2C主机向链路一侧(本地侧)发送命令时,控制通道将该信息转发至链路另一侧(远程侧),并从链路另一侧(远程侧)发送该信息,从而允许单个微控制器配置串行器,解串器和外围设备。微控制器可以位于串行器端(显示应用程序)和解串器端(相机应用程序)。只要使用软件仲裁方法,就支持双微控制器操作。串行链路认为在任何给定时间只有一个微控制器在通话。

    远程操作

    当I2C主设备在本地从设备(直接连接到主设备的串行器/解串器)上启动通信时,远程侧设备充当主设备,发送从本地端设备转发的数据,并转发从连接到远程设备的外围设备接收的任何数据。该远程侧主设备根据I2C主设置寄存器中的定时设置进行工作。设置主设置项来满足被外部微控制器所使用的定时设置。

    时钟拉伸定时

    I2C接口使用时钟拉伸来允许数据通过串行链路转发。主微控制器以及任何连接的外围设备必须接受GMSL设备的时钟拉伸。

    基于数据包的I2C

    基于数据包的控制信道可用于增强控制信道的错误处理。这种控制信道方法处理同时发生的GPI/GPO和I2C传输,以及错误检测和重传。

    数据包协议摘要

    基于数据包的控制信道使用一个同步的基于符号的系统通过控制信道进行发送数据,通过控制信道发送的数据被分割成符号并存储在传输队列中,然后通过链路发送。如果需要同时发送GPI和I2C数据(例如,在I2C传输期间GPI进行转换),则来自这两个命令的符号被组合在队列中。如果传输队列为空,则通过链路发送空闲数据包,以保持控制信道锁定。接收到的I2C数据包由微控制器SCL速率(本地设备)或编程主比特率(远程设备)确定输出。设备保持SCL低电平(时钟拉伸),直到从远端设备接收到数据

    控制信道错误检测和数据包重传

    当使用基于数据包的控制信道时,所有数据包的错误都会通过CRC检查。CRC使用1、5或8位检测数据包中的1、3或4个随机位错误。每当检测到错误时,发送器会重新传输数据包。如果重试次数超过8次,发送器将设置一个标志。接收器过滤掉有错误的数据包。

    GPO/GPI控制

    串行器上的GPO遵循解串器上的GPI转换。此GPO/GPI功能可用于传输信号,如环绕视摄像头系统中的帧同步。可选的,GPO可以通过寄存器位直接设置。

    扩频

    串行器包含一个可编程的扩频输出,通过将时钟频率峰值分散到整个频谱来降低发射电平。此外,串行器和解串器可以跟踪扩展输入时钟,消除对多个扩展时钟的需要

    电缆类型配置

    驱动器输出可编程为两种类型电缆,100Ω双绞线和50Ω同轴电缆。同轴模式下,将OUT+连接到解串器的IN+。将未使用的IN-引脚保持未连接状态,或将其通过50Ω接地和一个电容器增加电源拒绝。通过50Ω电阻器将OUT-连接至VDD
    在这里插入图片描述

    交叉开关

    交叉开关在并行输入/输出和SerDes之间按路径发送数据。无障碍的路径确保了视频源和目标之间的映射。由于每个交叉开关矩阵输出 (XBO_)一个通过crossbar_寄存器位从可用的交叉矩阵输入 (XBI_)中进行选择的一个多路复用输入,因此多个交叉开关输出可以使用相同的交叉开关输入。默认情况下,同步信号共享相同的输入作为视频数据的MSB(最高有效位)
    在这里插入图片描述

    视频定时生成器

    串行器包括可编程视频定时生成器用于生成/重定时输入同步信号。这个定时生成器可用于修改相机的输入定时,过滤掉同步信号中的小故障,或减少所需的输入同步信号数。每个同步信号可以单独重定时或不修改。几个寄存器决定定时参数的长度(PCLK循环)如下图所示。定时参数包括高/低周期长度、行计数和输入VS信号的延迟。
    定时发生器使用三种不同的触发模式,跟踪、单触发和自动运行。跟踪模式查看输入VSYNC,一旦收到三个连续相同的VSYNC信号就锁定。跟踪器之后继续输出相同的信号,擦除任何VSYNC上可能出现的故障。如果三个连续的输入波形与锁定信号不匹配,跟踪器将尝试重新锁定到新信号。单触发器为每个输入VSYNC边生成一个已经生成的帧。自动运行以确定的速率(这个速率由VSYNC高/低周期决定)生成新帧。如果有新的VSYNC信号在帧(单触发或自动运行模式下生成的帧)之前出现,那么新帧立即开始,缩短前一帧。
    在这里插入图片描述

    关机和睡眠模式

    当不需要完全运行时,可以使用几种睡眠和关机模式

    • 配置链路
      当高速视频链路不需要或不可用时,可以使用配置链路代替高速视频链路。在配置链路模式下,并行数字输入/输出被禁用,锁定引脚保持低位,串行链路内部生成自己的时钟,以允许控制通道(UART/I2C和GPIO)的完全操作。
    • 串行器禁用
      当串行链路不需要时,例如当下游设备断电时,用户可以禁用串行器。在此模式下,所有前向通信将关闭。用户可以通过本地或反向通道重新启用串行器
    • 睡眠模式
      为了进一步降低功耗,可以将设备置于睡眠模式。在此模式下,所有寄存器保持其编程值,设备中的所有功能均断电,本地控制接口上的唤醒检测器和串行链路除外。被唤醒检测器检测到的任何活动都会临时打开控制通道接口。在此期间,微控制器可以命令设备退出睡眠模式。
    • 断电模式
      最低功耗模式为断电模式。在此模式下,所有功能均断电,所有寄存器值丢失。
      在这里插入图片描述
    展开全文
  • Nvidia AGX Xavier MAX9286 GMSL 载板 2021年重点推荐板卡。现货充足。 SHENDU Xavier GMSL 载板 基于NVIDIA Jetson AGX Xavier|32TOPS|30W 8路GMSL车规级摄像头接入|5路CAN FD支持 2路以太网 提供 Cadence ...

    王晓明  QQ / 微信 :199663740

    提供板卡定制,承接项目。

    Nvidia AGX Xavier MAX9286 GMSL 载板

    2021年重点推荐板卡。现货充足。

    SHENDU Xavier GMSL 载板
    基于NVIDIA Jetson AGX Xavier|32TOPS|30W
    8路GMSL车规级摄像头接入|5路CAN FD支持 2路以太网

    提供 Cadence 格式原理图,PCB图,提供MAX9286,MAX96705
    的驱动源代码,设备树文件和采集显示程序全套源代码,购买上述资料和软件,请与深度科技直接联系。(王晓明  QQ / 微信 :199663740)

    深度科技的AGX Xavier GMSL 载板,是一款带有8×GMSL视频输入接口的嵌入式人工智能计算产品,能够为众多终端设备赋予人工智能计算力,从而有效降低人工智能产品的落地门槛。Xavier能够提供高达32Tops计算能力,能够很好的满足低速无人驾驶,工业机器视觉等场景的图像、激光点云等计算需求。同时提供Cadence格式的原理图,PCB图,GMSL SerDes 芯片MAX9286和MAX96705的驱动程序及其图像采集显示程序的源代码,不仅为终端用户的产品开发及其产品上市节约时间,并且能为用户提供稳定可靠经过验证的软硬件技术保证。

    产品清单

    • SHENDU AGX Xavier GMSL 载板 x1

    • 快速上手指南×1

    • 合格证×1

    • 保修卡×1

    • 散热器(选配

    服务与支持




    技术支持 
     

    如果您遇到问题,或者您认为您的产品有缺陷,请发问题到email: zhongxon@163.com,我们将帮助您解决问题。也可以通过微信直接联系。



    保修 
     

    保修期:深度公司产品保修期为自购买之日起一年。 保修条例:保修期内产品,若出现非人为损坏的故障深度公司将进行免费保修。请联系zhongxon@163.com或微信获取保修协助。


     

    开机画面:

    图像采集显示效果:

    一个摄像头的图像:(1280 x 720 25fps采集)

    二个摄像头的图像:(2560 x 720 25fps采集)

    四个摄像头的图像:(5120 x 720 25fps采集)

    八个摄像头的图像:(2x 5120 x 720 25fps采集)

    GMSL SerDes 芯片 MAX9286和MAX96705驱动程序源码:

    采集显示程序源码:

    原理图(Cadence 源格式):

    PCB 图(Cadence 源格式):

    BOM表:(部分)

    有了这些软件硬件资料后,终端用户能很快投入生产。

    也可以在此基础上修改后,加入自己的设计,然后再生产。

    淘宝店:

    https://item.taobao.com/item.htm?spm=a1z10.1-c.w4023-22333026886.4.50c8342d0ZmZ6Q&id=651181358797

    提供板卡,现货充足,提供 Cadence 格式原理图,PCB图,提供MAX9286,MAX96705
    的驱动源代码,设备树文件和采集显示程序全套源代码。

    后续会写一些MAX9286 调试类技术文章。

    微信/QQ :199663740  用QQ号加微信。

    展开全文
  • GMSL部分问题解答/含官方FAE解答

    千次阅读 2021-10-03 00:10:16
    Q: GMSL串行器和解串器通过同轴线传输电源吗? A: 是的。电源和信号占用不同的频段。电源分布在DC和低频,信号则占用较高频率。电源和信号可以通过同一根同轴线进行传输。需要考虑的是:电源通过同轴线传输时,在...

     Q: GMSL串行器和解串器通过同轴线传输电源吗?

    A: 是的。电源和信号占用不同的频段。电源分布在DC和低频,信号则占用较高频率。电源和信号可以通过同一根同轴线进行传输。需要考虑的是:电源通过同轴线传输时,在同轴线上会造成压降。在电源传输一端,需要考虑到这一压降,用比较高的电压进行传输。在电源接收端需要对电源进行稳压处理。(例如:MAX9271/2,MAX9296/MAX9295/96705,MAX9286/MAX96705等搭配原理基本相同)

     

    Q: 串行器和解串器芯片中有很多配置管脚,这些配置管脚可以在工作过程中改变状态吗?

    A: ADDx、CX/TP、I2CSEL、SD、HIM 和 BWS管脚在退出省电模式后,管脚状态被锁存。之后这些管脚的电平改变,不会影响引脚对应的功能。而MS引脚在退出省电模式时的状态不被锁存,正常工作时MS管脚状态的改变会导致相应功能的改变。

     

    Q: 如何理解MAX9271/MAX9286的Double input mode?

    A: 比如MAX9271的数据以帧(frame)为单位进行传输。每帧包含24位或者32位的数据。如下图所示。

    针对摄像头的应用,因为大多数摄像头输出的是RawData格式的数据,位数比较低。因此,可以把两个像素的数据放到一个帧里进行传输。即上图所示的24位或32位的数据里包含两个像素的数据。这种每帧传输两个像素的方式称为双输入模式。硬件实现方法如下图所示。

    Q: 针对普通摄像头应用,如何计算同轴线或双绞线上传输信号的最大速率。

    A: 举例:MAX9271/2以帧(Frame)为单位传输。为了消除传输过程中的直流分量,传输前进行8b/10b编码。这样,下图对应的24位和32位数据被编码成30位和40位的数据。

    同轴线或双绞线上信号的传输速率计算方法为:

    (行像素x列像素)/2 x每秒场数x1.25 x 30 (24-bit模式)

    或(行像素x列像素)/2 x每秒场数x1.25 x 40(32-bit模式)

    其中1.25是考虑行场消隐后所做的修正。“/2”是因为一帧传输了两个像素的数据。

    如果已经知道了像素的时钟速率,计算方法为:

    像素时钟(PCLK)速率x 30 (24-bit模式)或像素时钟(PCLK)速率x 40(32-bit模式)

     

    对常见的720P,每秒30场的摄像头,同轴线或双绞线传输的最大速率为:

    (720x1280)/ 2 x30 x 1.25 x 30= 437Mbps(24-bit模式),或

    (720x1280)/ 2 x30 x 1.25 x 40= 583Mbps(32-bit模式)

     

    Q: 如何利用MAX9271侧的MCU,通过同轴线或双绞线控制MAX9272侧的GPIO的状态?

    A: 每个Serdes器件都对应有两个I2C器件地址。MAX9271的寄存器0x00对应的是MAX9271的I2C器件地址,寄存器0x01对应的是Deserializer(MAX9272)的I2C器件地址。通过对寄存器0x01所列的I2C地址进行读写,就可以对MAX9272进行配置或状态读取。对MAX9272的GPIO进行操作,对应的寄存器是0x0E(参见MAX9272数据手册的寄存器列表)。

     

    Q: 如何判断MAX9271/MAX96705/MAX9295等串行器是否工作?

    A: 最直观的方式是测量串行器的输出信号波形。但很多公司可能没有测高速信号所用的示波器。用常见的几十~几百兆带宽的示波器也可大致判断出串行器是否正常工作:测量串行器的输出端(在AC耦合电容之前)的共模电压,正常工作时的共模电压在1.1V~ 1.56V之间,典型值在1.4V。如果测量到的共模电压在几百毫伏以下,基本可以判断芯片没有正常工作。

     

    Q: 串行器和解串器间的数据传输线缆即同轴线或双绞线有要求吗?

    A: 要求同轴线/双绞线对高频信号的损耗小,阻抗有较好的控制。如果同轴线/双绞线高频信号损耗大,会影响信号眼图和最大传输距离。

    附:MAX96705 规格描述

    • 理想用于摄像系统
      • 支持低成本50Ω同轴(100Ω STP)电缆
      • 视频/控制数据检错
      • 高抗干扰模式,支持可靠的控制通道EMC容限
      • 检测到错误时重发控制数据
      • 同类中最佳供电电流:93mA (最大)
      • 预加重/预减重,全速模式下电缆可长达15m
      • 32引脚(5mm x 5mm)、TQFN封装,引脚间距为0.5mm
    • 高速数据串行化,支持百万像素摄像头
      • 串行码率高达1.74Gbps
      • 12.5MHz至87MHz × 14位 + H/V数据
      • 36.66MHz至116MHz × 12位 + H/V数据(通过内部编码)
    • 多种模式,提高系统灵活性
      • 9.6kbps至1Mbps控制通道,UART、I²C (时钟展宽)或UART至I²C模式
      • 交叉点开关支持任意输入位映射
      • 支持编码VSYNC和HSYNC的模式
    • 降低EMI屏蔽要求
      • 可编程输出扩频
      • 跟踪并行输入上的扩频
      • 1.7V至3.6V I/O电源
    • 用于摄像头上电和验证的外设功能
      • 内置PRBS发生器,用于BER测试
      • 专用GPO,用于摄像头帧同步触发和其他用途
      • 远端/本地休眠模式唤醒
    • 满足AEC-Q100汽车规范
      • -40°C至+115°C工作温度范围
      • ±8kV接触放电保护和±15kV气隙放电保护,满足IEC 61000-4-2和ISO 10605标准的ESD保护要求

     详情:https://www.maximintegrated.com/cn/products/interface/high-speed-signaling/MAX96705A.html/product-details/tabs-3?intcid=para

    展开全文
  • 三、GMSL GMSL英文全称为Gigabit Multimedia Serial Link ,是美信推出的一种针对车用的串行传输接口标准,其标准的发展历程如下图4所示,发展到现在,可以支持的最高串行话速率为3.125Gbps,同样支持同轴电缆传输...
  • 一、设计目标 1. 支持Jetson Xavier AGX Devkit 开发...2. GMSL Deserializer 采用 MAX9296 3. 支持多路 MAX9295 Serializer相机 4. 同时兼容MAX96705即GMSL1 5. 支持Virtual Channel 6. 支持Frame sync和...
  • 环境:opencv 3.4.15、 ROS melodic ros中使用usb相机 首先创建一个工作空间: $ mkdir -p ~/ros_ws/src $ cd ~/ros_ws/ $ catkin_make $ source devel/setup.bash ...$ catkin_create_pkg learning_image_...
  • 15米 GMSL&FPDLink传输线束 2. 主控平时接入6~7路相机,其中有一个15米线束接入1080P相机 3. 正常帧率10 fps 4. 主控 问题: 使用几个月后,15米线束接入1080P的相机,帧率降到2~3 fps; 其它相机...
  • 使用GMSL的串行器和解串器9295 9296 两路imx390相机 有两种采集方式, 一种是在前端拼接好作为一路采集; 另一种是独立采集,使用MIPI的虚拟通道。 下面为调试记录 2. 搭建环境 设备树: 只截取部分 { num-...
  • gmsl摄像头Android平台调试思路

    千次阅读 2020-04-09 11:08:36
    配置max9288的i2c通信,可读取id 配置max96705的i2c通信,可读取id 配置ar0144的i2c通信,可读取id 以上三步i2c如果不同请排查硬件配置,测量电源是否正常,i2c地址是否配对等问题。 配置ar0144为color bar模式...
  • FPDLINK与GMSL汇总

    千次阅读 2019-12-04 08:50:37
    FPDLINK与GMSL汇总 1 TI PDFLINK DS90UB913 933 953 DS90UB914 934 954 2 MAXIM GMSL MAX96705 MAX9295A MAX96706 MAX9296B 暂时只用过这么多了。。。 欢迎使用Markdown编辑器 你好! 这是你第一次使用 ...
  • 美信推出GMSL四通道解串器MAX9286

    千次阅读 2021-03-03 17:13:52
    GMSL(GigabitMultimediaSerialLink),是串行器和解串器构成的传输链路,基于LVDS传输,很多域控制器上直接使用GMSL4通道解串器,同时支持4路摄像头数据传入,例如在AVM(AroundViewMonitor)中,需要多路摄像输入。...
  • 推出GMSL四通道解串器MAX9286,以更少元件、更短时间实现ADAS (高级驾驶辅助系统)的环视系统设计。仅需一片MAX9286吉比特多媒体串行链路(GMSL)解串器,即可接收并自动同步来自4个摄像头的视频信号。环视系统是现今日...
  • static struct gmsl_monitor gmsl_monitor_default = { .name = "gms_diag_monitor", .interval = 2 * HZ, .gmsl_monitor = gmsl_line_fault_monitor_polling, }; static int gmsl_line_fault_monitor_polling...
  • MAX9286吉比特多媒体串行链路(GMSL)解串器接收多达四个GMSL串行器的数据,采用50Ω同轴电缆或100Ω屏蔽双绞线(STP)电缆,通过四个CSI-2通道输出数据。每条串行链路具有嵌入式控制通道,工作在9.6kbps至1Mbps,工作...
  • 为了解决未来汽车系统所面临的问题,美信日前推出了全新下一代GMSL技术,即吉比特多媒体串行链路(GMSL)串行器和解串器,用来支持未来ADAS和信息娱乐系统要求的宽带、互联复杂度和数据完整性的要求。 GMSL技术最高...
  • MAX9291/MAX9293 GMSL串行器将HDMI输入转换为吉比特多媒体串行链路(GMSL)输出,适用于视频、音频和控制信号的传输,使用50Ω同轴电缆或100Ω屏蔽双绞线(STP)电缆时的距离可达15m或更长。MAX9293具有HDCP内容保护,但...
  • camera接口---MIPI CSI-2接口、DVP接口和FPD-Link III LVDS、GMSL等接口对比 转载于:https://www.cnblogs.com/LittleTiger/p/10742052.html
  • 摘要:本应用笔记介绍如何通过吉比特多媒体串行链路(GMSL) SerDes的远端I2C接口访问16位寄存器地址。  引言  Maxim吉比特多媒体串行链路(GMSL)串行器/解串器(SerDes)系列包括MAX9249、MAX9259、MAX9260、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 444
精华内容 177
关键字:

GMSL