【MIPI协议 C-PHY详解】

news2024/9/21 16:39:37

MIPI协议 C-PHY详解

  • 前言
  • 一、C-PHY介绍
    • 1.1 C-PHY 与 D-PHY wire的区别
    • 1.2 3 wire的状态(states)变化
    • 1.3 C-PHY Data Mapping Between 7 Symbols and a 16-Bit Data
    • 1.3 C-PHY Lane States and Line Levels ~ LP Mode
  • 二、C-PHY LP Package Format
    • 2.1 C-PHY HS Short package Format
    • 2.2 C-PHY HS Long package Format
  • 三、C-PHY Lane Management


前言

下面为MIPI协议中C-PHY相关的学习记录

在这里插入图片描述

一、C-PHY介绍

C-PHY类似于D-PHY,其逻辑层主要也是面向摄像头(CSI)、显示屏(DSI)等用途,C-PHY中的C指的是Channel-limited。C-PHY总共有3条lane,每条lane使用3根信号线,3条信号线彼此差分。C-PHY没有单独的clock,时钟信号是包含在通讯的时序中。

1.1 C-PHY 与 D-PHY wire的区别

在这里插入图片描述

1 lane with 3 wire A/B/C,each HS mode UI is one state controlled
2.single ended->3/4=375mv 1/2=250mv 1/4 = 125mv
3.Tri-State controlled for each wire,so called 3 phase D-PHY

1.2 3 wire的状态(states)变化

在这里插入图片描述

如上所示3 wire共有6种states,对于每一种状态,下一步的变化都有5中变化状态。
example:+y can switch (-y -x +x -z +z)

注意:将states 转成 symbol的记忆方法:只需记住x y z 的位置
在这里插入图片描述
在这里插入图片描述

1.3 C-PHY Data Mapping Between 7 Symbols and a 16-Bit Data

我们可以通过mappIng映射表将7 symbols和16-bit data之间的对应关系查看出来

在这里插入图片描述

For example, TX need to send TX_Data[15:0] = 0x6543 to DIC side

1.First, look up the mapping table, 0x6543 is between 0x6000 to 0x6FFF

在这里插入图片描述

2.By mapping table

0x6543 = 0110 0101 0100 0011 = [0,1,1,0, ro6, po6, ro5, po5, ro4, po4, ro3, po3, ro1, po1, ro0, po0]

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

TX need to send TX_Data[15:0] = 0x6543 to DIC side

在这里插入图片描述

1.3 C-PHY Lane States and Line Levels ~ LP Mode

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

LP Mode C-PHY和D-PHY很相像,但是C-PHY 1Lane有3条wire,A/B/C,wire B will not do transition in the LP mode Escape mode

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

C-PHY和D-PHY

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

在这里插入图片描述

二、C-PHY LP Package Format

C-PHYd的LPDT Protocol与D-PHY基本完全一致:
Lane0-A —>D0+
Lane0-C---->D0-
Lane0B----->keep LP_Low(不关心)

在这里插入图片描述

2.1 C-PHY HS Short package Format

在这里插入图片描述

C-PHY HS package新增SSDC(包括short和long package)
SSDC:
Symbol Slip Detection Code,只在short package以及long package的PH中出现,固定为8(1000)

在这里插入图片描述

C-PHY HS Short package 会连续送两次,如果其中一次出错,会报error,但是数据会采用正确的那次资料,如果两次资料都错,就报error并直接忽略

2.2 C-PHY HS Long package Format

在这里插入图片描述

long Package 和 short Package 发送相同都需要连续发送两次

在这里插入图片描述

host 在传输数据时,会对数据进行二次编码:
1.将16bit数据转成7个symbol
2.将7个symbol转成对应的状态(+x -x +y -y +z -x)

在这里插入图片描述

C-PHY的传输效率是D-PHY的:16 / 7 = 2.28倍

对于DIC与host则相反,但需要进行二次编码:
1.将(+x -x +y -y +z -x)转成7个symbol
将7个symbol转成16bit data

C-PHY状态(state)的简单记忆规则:

  1. 忽略中间准位,只看最高准位和最低准位;
  2. 以最高和最低来识别state

在这里插入图片描述

三、C-PHY Lane Management

1-Lane

在这里插入图片描述

2-lane

在这里插入图片描述

3-lane

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/821530.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQLI_LABS攻击

目录 Less1 首先来爆字段 联合注入 判断注入点 爆数据库名 爆破表名 information_schema information_schmea.tables group_concat() 爆破列名 information_schema.columns 爆值 SQLMAP Less-2 -4 Less -5 布尔 数据库 表名 字段名 爆破值 SQLMAP Less-6 …

​LeetCode解法汇总142. 环形链表 II

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接: 力扣 描述: 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如…

ssl单向证书和双向证书校验测试及搭建流程

零、前提准备 说明: 50.50.1.118作为服务端,系统是 linux,openssl版本是:OpenSSL 1.1.1f 31 Mar 2020。 50.50.1.116是客户端,系统是Windows,openssl版本是:OpenSSL 3.0.5 5 Jul 2022 (Library…

Day07-作业(MySQL查询设计)

作业1: 根据如下需求完成SQL语句的编写 【仔细阅读题目需求】 数据准备: 创建一个数据库 db02_homework 执行如下SQL语句,准备测试数据 -- 员工管理(带约束) create table tb_emp (id int unsigned primary key auto_increment comment ID,username …

这款轻量级规则引擎,真香!

大家好,我是老三,之前同事用了一款轻量级的规则引擎脚本AviatorScript,老三也跟着用了起来,真的挺香,能少写很多代码。这期就给大家介绍一下这款规则引擎。 简介 AviatorScript 是一门高性能、轻量级寄宿于 JVM &…

阿里云率先荣获容器集群稳定性先进级认证

7 月 25 日,由中国信通院发起的“2023 稳保体系”评估结果在可信云大会现场公布,阿里云容器服务 ACK 成为首批通过“云服务稳定运行能力-容器集群稳定性”评估的产品,并荣获“先进级”认证。 云原生技术正在激活应用构建新范式,构…

数据结构初阶--树和二叉树的概念与结构

目录 一.树 1.1.树的概念 1.2.树的相关概念 1.3.树的表示 1.4.树在实际中的运用 二.二叉树 2.1.二叉树的概念 2.2.特殊的二叉树 满二叉树 完全二叉树 2.3.二叉树的性质 2.4.二叉树的存储结构 顺序存储 链式存储 一.树 1.1.树的概念 树是一种非线性的数据结构&am…

【SVN】merge 合并trunk branch代码,解决冲突

在命令行模式下进入待merge的项目根目录 1.将指定url上的代码merge到本地当前文件夹下(--dry-run表示test merge) E:\project\ry\trunk\ees-tem>svn merge http://192.168.0.2/svn/repo/ProD/JinZay/EE S/code/ees-tem/branches/develop -c 1149491 …

5个方法!轻松提升Windows Server 2016性能!

​Windows Server 2016性能降低 ​“我们在使用Windows Server 2016时遇到了卡顿不流畅的问题,服务器(300GB硬盘、16GB内存、4核CPU)主要用于使用Office(Word、Outlook、Excel)和上网,客户表示很慢&…

顺序表小项目---通讯录的实现

文章目录 前言一、静态通讯录的需求分析与实现1.通讯录的结构体需求2.通讯录的功能需求3.通讯录的主函数创建4.通讯录的所用函数的实现1.通讯录的初始化2.通讯录的增加联系人3.通讯录的查找联系人4.通讯录的删除联系人5.通讯录的修改联系人6.联系人的排序 二、静态通讯录的需求…

使用Debate Dynamics在知识图谱上进行推理(2020)7.31+8.1

使用Debate Dynamics在知识图谱上进行推理 摘要介绍背景与相关工作我们的方法状态行为环境policiesDebate Dynamics 摘要 我们提出了一种新的基于 Debate Dynamics 的知识图谱自动推理方法。 其主要思想是将三重分类任务定义为两个强化学习主体之间的辩论游戏,这两…

n位的二进制可以表示多少个小数?

文章目录 导论推理过程结论练习 导论 首先来思考一个十进制小数是如何被转化成二进制的。它使用的方式:乘基取整。你想把它化成n进制,基数就是n。以小数0.6875为例,将它化成二进制 那么它化成二进制0.1101。以原码或补码表示成01101。 并不…

Gis入门,使用起止点和两个控制点生成三阶贝塞尔曲线(共四个控制点,线段转曲线)

前言 本章讲解如何在gis地图中使用起止点和两个控制点(总共四个控制点)生成三阶贝塞尔曲线。 二阶贝塞尔曲线请参考上一章《Gis入门,如何根据起止点和一个控制点计算二阶贝塞尔曲线(共三个控制点)》 贝塞尔曲线(Bezier curve)介绍 贝塞尔曲线(Bezier curve)是一种…

用Delphi编写一个通用视频转换工具,让视频格式转换变得更简单

用Delphi编写的简单视频格式转换程序,它使用TComboBox、TOpenDialog和TSaveDialog组件来选择转换格式、选择源视频文件和选择目标视频文件。程序还使用TEdit组件允许用户输入参数,然后将这些组件中的信息拼接成转换命令并在DOS窗口中运行它。 procedure…

认识springboot 之 了解它的日志 -4

前言 本篇介绍springboot的日志,如何认识日志,如何进行日志持久化,通过日志级别判断信息,了解Lombok插件的使用,通过Lombok自带注释更简洁的来完成日志打印,如有错误,请在评论区指正&#xff0…

动手学深度学习—深度学习计算(层和块、参数管理、自定义层和读写文件)

目录 1. 层和块1.1 自定义块1.2 顺序块1.3 在前向传播函数中执行代码 2. 参数管理2.1 参数访问2.1.1 目标参数2.1.2 一次性访问所有参数2.1.3 从嵌套块收集参数 2.2 参数初始化2.2.1 内置初始化2.2.2 自定义初始化 2.3 参数绑定 3. 自定义层3.1 不带参数的层3.2 带参数的层 4. …

【PWN · 栈迁移】[BUUCTF][Black Watch 入群题]PWN

记一道栈迁移题目 前言 【PWN 栈迁移】[BUUCTF]ciscn_2019_es_2_Mr_Fmnwon的博客-CSDN博客 一、代码审计 总结信息如下: 1. 第12行存在栈溢出漏洞,刚好可以溢出覆盖到ebp和ret 2. 第9行可输入大量数据到bss段 二、思路过程 1.栈迁移 进能够覆盖e…

Nodejs 第八章(npm搭建私服)

构建npm私服 构建私服有什么收益吗? 可以离线使用,你可以将npm私服部署到内网集群,这样离线也可以访问私有的包。提高包的安全性,使用私有的npm仓库可以更好的管理你的包,避免在使用公共的npm包的时候出现漏洞。提高…

SAM(Segment Anything)大模型论文汇总

A Comprehensive Survey on Segment Anything Model for Vision and Beyond 论文:https://arxiv.org/abs/2305.08196 25页综述,198篇参考文献!52个开源项目!本文第一个全面回顾了分割一切模型(SAM)的研究和应用进展,…

AttributeError: module ‘PyQt5.QtGui‘ has no attribute ‘QMainWindow‘

场景描述: 这个问题是使用PyUIC将ui文件变成py文件后遇到的 解决办法: 改动1:把object改成QtWidgets.QMainWindow 改动2:增加__init__函数,函数结构如下: def __init__(self):super(Ui_MainWindow,self).…