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

MIPI_CSI22_Xilinx IP

MIPI CSI-2 Tx Subsystem

参考Xilinx官方文档PG260

概述

a)该系统包含三个子系统,分别是:AXI-Crossbar(控制)+MIPI-CSI2-Tx-Controller(数据处理)+MIPI-DPHY(物理层传输)
/
1)MIPI-DPHY的工作流程如下:
①通过PPI接口接收来自MIPI CSI2 Tx Controller的并行数据,并将其转换为串行信号输出至外部MIPI接收器;
②通过AXI CrossBar接收AXI4-Lite接口的配置指令,支持动态调整传输参数(如通道数量和传输速率等)。
2)MIPI CSI-2 TX Controller主要功能包括:
①接收来自原生视频接口或AXI4-Stream接口的像素数据;
②按照MIPI CSI-2协议规范对数据进行封装处理:添加帧/行的起始/结束同步包、完成像素到字节的转换;
③生成校验信息:包头错误校正码ECC、载荷校验码CRC,生成多项式为x16+x12+x5+x0x^{16} + x^{12} + x^{5} + x^{0}x16+x12+x5+x0
④通过AXI交叉开关接收AXI4-Lite接口的配置指令,支持动态调整:数据封装参数、传输参数(如虚拟通道、数据类型等)。
/
3)AXI-Crossbar负责对AXI4-Lite接口的控制请求进行地址路由,将寄存器的读写指令分发至对应的子核心(如MIPI CSI-2发送控制器、MIPI D-PHY),从而实现对不同子模块的配置与控制信号交互。

b)CSI-2 Tx Subsystem的延迟由两部分组成:
1)CSI-2发送控制器延迟:指从AXIS接口的tlast信号有效到PPI接口tx_requesths信号上升沿的时间间隔;
2)PHY延迟:指从PPI接口tx_requesths信号上升沿有效到串行线路上检测到HS-REQ(即LP-01状态)的时间间隔。

端口描述(7系列)

a)DPHY Interface Shared Logic in the Core:将子系统关键时钟管理模块(MMCM/PLL)和基础辅助功能逻辑集成到MIPI CSI-2 TX子系统的核心内部,而非置于子系统外部或用户自定义逻辑中。这种核心集成方式使子系统直接管理相关模块,并通过PPI接口输出适配外部电路的关键信号,从而简化用户设计。
①txclkesc_out(PPI输出):D-PHY在低功耗模式(LP模式:数据包间低功耗;ULPS模式:超低功耗)下,通过逃逸时钟传输控制信号(如ULPS进入/退出指令)。此信号是保障MIPI低功耗特性的基础时钟源。
②oserdes_clk_out(PPI输出):输出OSERDES专用时钟,用于连接外部OSERDES芯片的时钟引脚。时钟频率 = line_rate/2。
③txbyteclkhs(PPI输出):输出D-PHY TX的字节时钟,作为D-PHY并行数据的字节级同步时钟。时钟频率 = line_rate/8.0。
④system_rst_out(PPI输出):输出高电平有效的系统复位信号,供外部数据源或控制器使用。
⑤mmcm_lock_out(PPI 输出):输出MMCM的锁定指示信号,用于告知外部电路子系统时钟已稳定。
⑥mipi_phy_if(PPI 输出):输出D-PHY串行接口信号。

b)AXI4-Stream Input Interface
①s_axis_aclk(System输入):为AXI4-Stream数据传输提供时序基准,必须与AXI4-Lite接口的时钟同源同频(确保控制指令与数据传输时序同步)。
②s_axis_aresetn(System输入):复位时长需至少保持40个dphy_clk_200M周期。
③s_axis_tready(S_AXIS输出):当信号为高电平时表示子系统内部的Line Buffer有空闲空间,可接收外部输入的s_axis_tdata。
④s_axis_tvalid(S_AXIS输入):若该信号为高且对应每行第一个像素,需同步使能 s_axis_tdest(虚拟通道标识)、s_axis_tuser[47:32](行号)、s_axis_tuser[63:48](包长度) 等边带信号,确保子系统获取完整的帧/行配置信息。
⑤s_axis_tlast(S_AXIS输入):仅在每行最后一个像素传输时置为高电平,其他时刻为低。子系统检测到该信号后,会自动封装Line End包,并更新内部行计数(与Line Count寄存器配置的行数比对,用于判断帧是否结束)。
⑥s_axis_tdest(S_AXIS输入):虚拟通道标识VCID,用于区分不同的数据流。
⑦s_axis_tuser(S_AXIS输入)
/

c)Native Video Interface
①vid_vsync、vid_hsync:系统在vid_vsync上升沿捕获帧号,实现帧同步;在vid_hsync上升沿采集行号和长包长度,确保行数据对齐。
②vid_enable
③vid_pxl:端口宽度 = 字节对齐(C_CSI_MAX_BPC×3×像素模式)。其中C_CSI_MAX_BPC表示单分量最大位数、像素模式可选1/2/4像素/beat,该参数由像素类型(如RAW12、RGB565)和像素模式共同决定。
④vid_di:标识像素数据格式,是子系统封装CSI-2数据包头部的关键参数。示例:RAW8=0x2A、RAW12=0x2C、YUV422 10-Bit=0x20。
⑤vid_linenum、vid_framenum:在vid_hsync/vid_vsync的上升沿采样,仅当接收端需要同步时配置,子系统仅作透传处理。
⑥vid_wc:当前行对应的CSI-2长包字节数,是子系统封装CSI-2长包的必需参数。在vid_hsync的上升沿 采样,确保包长度与当前行数据量匹配。

d)中断信号
该信号实质上是子系统的状态告警通道,不负责数据传输,仅通过电平变化来向外部系统发出子系统需关注的提示。具体的异常类型或状态细节,需要通过AXI4-Lite接口读取相关寄存器来确认。这一设计是子系统故障诊断和运行状态监控的关键机制。

像素编码

a)s_axis_tdata/vid_pxl端口宽度=(单分量最大位数参数C_CSI_MAX_BPC×3×像素模式)的字节对齐结果。

b)
/
1)采用单像素模式(1像素/时钟周期),单像素分量的最大位宽为14位,对应端口总宽度为48位([47:0])。该宽度计算方式为:14位×3通道×1像素=42位,经字节对齐后扩展至48位。
2)需明确定义各类像素分量在48位端口(s_axis_tdata/vid_pxl)中的位段分配。

c)
/

d)
/

e)
/

f)
/

g)
/

寄存器空间

a)地址映射划分为以下两个区域:MIPI CSI-2 TX Controller core、MIPI D-PHY core。每个IP核心分配有4KB的地址空间,子系统总地址空间为8KB。

b)MIPI CSI-2 TX Controller core寄存器
1)Core Configuration Register
① 该寄存器用于配置控制器的所有核心功能(包括启停控制、低功耗模式设置和复位操作),同时提供控制器的关键就绪状态反馈。这是软件与控制器进行交互的首要操作寄存器。
②需满足32位字对齐(仅支持完整32位数据读写,不支持字节/半字访问),不支持WSTRB写选通,写入时需传输完整32位数据。
③控制器启动的流程: 读取Controller Ready,确认其为1,控制器硬件就绪→写入Core Enable为1,启用控制器→若需低功耗,空闲状态下写入ULPS Mode为1,传输状态下写入ULPS Mode为0。
④修改关键配置的流程:若需调整依赖控制器状态的参数,需先将Core Enable置0,禁用控制器,修改完成后再置1重新启用。控制器启用时,部分配置参数不可修改。
⑤当检测到异常时的流程:读取中断状态寄存器确认异常原因→写入Soft Reset为1,清空中断状态→确认Interrupt信号低电平,完成复位。
⑥软复位仅清空中断状态寄存器的所有置位状态,使Interrupt信号恢复低电平,不涉及控制器的FIFO、数据封装逻辑、D-PHY联动逻辑,无破坏性、无业务中断,复位过程中,控制器可正常接收和处理数据,仅中断状态标记被清空,不会导致数据丢失或传输暂停。
⑦硬复位范围包括:控制器内部的Line Buffer、通用短包FIFO、所有配置寄存器(含核心配置寄存器、协议配置寄存器)、数据封装逻辑、中断系统(含全局中断使能寄存器),甚至会联动MIPI D-PHY的物理层逻辑复位。复位期间,控制器停止所有数据接收与传输。所有配置参数恢复默认值,需重新配置后才能恢复工作。

2)Protocol Configuration Register
①该寄存器用于配置MIPI CSI-2发送控制器的核心协议参数,主要包含三类关键功能:数据传输格式控制、通道数量配置和短包生成使能。需要注意的是,所有配置修改必须在控制器禁用状态下进行,启用后部分参数将被锁定不可更改。
②只读位段:像素模式、最大通道数是IP定制时根据硬件需求(如传输带宽、FPGA资源)确定的底层约束,软件仅能读取确认,避免因修改导致硬件不兼容。
③可读写位段:活动通道数允许软件根据实际带宽需求调整(如低带宽场景用1条通道,高带宽场景用4条),无需重新定制IP。行短包生成使能提供自动/手动短包管理两种模式(复杂传输场景可禁用自动生成采用手动控制,简单场景则启用自动生成功能)。

3)Global Interrupt Enable Register
①MIPI CSI-2 TX Controller core中断系统的开关,用于统一控制子系统是否允许向外输出中断请求。
②它与中断使能寄存器(0x28,选通特定事件)、中断状态寄存器(0x24,捕获事件状态)构成三级中断管理逻辑。只有当全局中断使能+ 对应事件使能+ 事件发生三者同时满足时,才会触发Interrupt信号,避免单一事件误触发中断。
③系统初始化/调试阶段:可屏蔽所有中断,避免调试过程中无关中断干扰核心配置。
④系统正常运行阶段:将Bit0置1,配合0x28寄存器选通关键事件(如数据欠载、通道错误),确保异常时能及时触发中断处理。
⑤故障排查阶段:若需临时关闭中断(如处理高优先级任务),无需逐一修改0x28的事件使能位,仅需将0x20 Bit0置0,操作更高效。

4)Interrupt Status Register
①清除状态时需向目标Bit写1(写0无效果)。

5)Interrupt Enable Register

6)Generic Short Packet Entry Register
①MIPI CSI-2协议中,行起始 / 结束、帧起始 / 结束等短包由控制器自动生成,但自定义控制指令(如设备唤醒、模式切换)、测试信号等非标准短包无法自动生成。该寄存器是软件手动发送这类短包的唯一入口,填补了自动短包生成的功能空白。
②该寄存器不直接发送短包,仅将配置信息写入通用短包FIFO。FIFO的存在允许软件一次性配置多个短包,控制器按FIFO顺序逐个发送,避免软件频繁写入寄存器。

7)Line Count Register for Virtual Channel - 0/1/2/3
①用于显式配置VC0/1/2/3传输一帧数据所需的总行数,控制器会根据该数值判断何时生成帧结束短包。
②必含行为图像有效数据行(如3840行像素数据)、嵌入非图像数据行(如元数据行)。可选行为空包行(无数据时填充)、水平消隐行(HBlank)。若VC0一帧含1080行有效图像数据+2行嵌入数据+1行空包行,总行数配置为1083。

8)Generic Short Packet Status Register

c)MIPI D-PHY寄存器

部署方法

a)Shared Logic
1)共享逻辑并非子系统的数据处理核心,而是为MIPI D-PHY物理层传输提供基础保障的辅助模块,核心包含:
①时钟管理模块:如MMCM、PLL,用于根据子系统配置的D-PHY 线速率,生成多组精准时钟信号(如txbyteclkhs、oserdes_clk),并确保时钟信号的低抖动(≤0.5ps峰峰值)与相位对齐(如txbyteclkhs与oserdes_clk呈90°相位差),避免串行传输误码;
②基础辅助模块:如BUFG、复位同步电路,BUFG用于优化时钟信号的扇出能力,防止多模块时钟延迟不均;复位同步电路则确保子系统全模块(控制器、FIFO、D-PHY)复位时序同步,避免局部复位导致的逻辑混乱。
2)Shared Logic in the Core:将上述时钟管理、基础辅助模块集成到MIPI CSI-2 TX子系统的核心内部。子系统自主完成时钟生成、复位状态管理,对外仅输出成品信号(如PPI接口的txbyteclkhs输出、mmcm_lock_out输出),用户无需在外部设计时钟或复位逻辑,仅需连接子系统输出的信号即可。
3)Shared Logic in Example Design:将时钟管理、基础辅助模块部署在子系统外部的示例设计中。子系统自身不具备时钟生成或复位管理能力,需从示例设计中输入关键信号(如PPI接口的txbyteclkhs_in输入、system_rst_in输入),用户需根据实际需求调整设计的MMCM/PLL 参数(如时钟频率、相位),自定义时钟与复位逻辑。
4)
/
5)
/

b)时钟/复位
1)txbyteclkhs(D-PHY高速字节时钟):为D-PHY高速数据传输提供基准时钟,频率计算公式为,txbyteclkhs频率=D-PHY线速率/8(如线速率为2.5Gbps时,txbyteclkhs频率为312.5MHz)。该时钟需通过共享逻辑中的MMCM/PLL生成,且抖动值需≤0.5ps(峰峰值),避免高速串行传输产生误码。
2)oserdes_clk(串行器时钟):仅用于7系列 FPGA(无原生MIPI IOB),为外部OSERDES提供驱动时钟,计算公式为,oserdes_clk频率=D-PHY线速率/2(如线速率2.5Gbps时,频率为1.25GHz)。需与txbyteclkhs保持固定相位差(通常为90°),确保串化数据时序对齐。
3)dphy_clk_200M(D-PHY控制时钟):为D-PHY物理层的控制逻辑(如ULPS模式切换、复位时序管理)提供固定200MHz时钟,由系统时钟源直接提供,无需动态调整。复位信号的最小保持时长40个周期需基于该时钟计算。
4)txclkesc(D-PHY逃逸时钟):用于D-PHY超低功耗(ULPS)模式下的低速通信,频率固定为20MHz,需与外部D-PHY芯片的逃逸时钟同步。该时钟可由共享逻辑中的时钟模块生成,或从外部直接输入。
5)AXI接口时钟(s_axi_aclk/s_axis_aclk):s_axi_aclk(AXI4-Lite控制接口时钟)与 s_axis_aclk(AXI4-Stream数据接口时钟)需同源同频,频率范围支持100MHz~200MHz;时钟稳定性直接影响控制指令传输与像素数据接收的正确性,不允许跨时钟域交互。

c)软件启动流程
1)配置寄存器并启用core
①无论何时启用core(例如复位后或禁用core后),均需先读取core配置寄存器,确保控制器就绪位已置1,表示硬件就绪;
②通过寄存器编程配置所需参数(如活动通道数、像素模式等);
③启用core,并在输入接口上发送视频流;
④在整个流程中,需通过两种方式监控状态:要么持续轮询寄存器,要么等待外部中断,并读取中断状态寄存器,以获取上报的错误或状态信息。
/
2)禁用与重新启用core
①通过core配置寄存器禁用;
②等待,直至core配置寄存器中的控制器就绪位置1;
③重新启用core,将core使能位置1。
/
3)超低功耗模式ULPS进入与退出:
①使PHY通道进入ULPS模式:向core配置寄存器ULPS模式位写入1;
②对应的PPI接口信号(txrequestesc、txulpsesc)会发送至PHY,触发PHY进入ULPS状态;
③当PHY通道已进入ULPS状态(ulpsactivenot置低)后,中断状态寄存器会更新对应的状态信息;
④退出ULPS模式:向core配置寄存器ULPS 模式位写入0;
⑤对应的PPI接口信号(txulpsexit)会发送至PHY,触发PHY退出ULPS状态;
⑥在ulpsactivenot信号置高后的1毫秒内,PPI接口会置低txrequestesc信号。ULPS退出的状态会通过中断状态寄存器上报;
⑦等待1微秒后,清除中断状态寄存器中与ULPS相关的状态位。若在1微秒内尝试清除该状态位,会导致IP始终显示处于ULPS状态。
/

模型仿真

a)

MIPI DPHY

参考Xilinx官方文档PG202

http://www.dtcms.com/a/482063.html

相关文章:

  • 【C++STL :stack queue (一) 】STL:stack与queue全解析|深入使用(附高频算法题详解)
  • DevOps工具链对比,云效 vs TikLab哪一款更好用?
  • Kanass,一款超级轻量且简洁的项目管理工具
  • 如何做企业的网站微信如何开通小程序
  • 【从0开始学习Java | 第20篇】网络编程
  • PetaLinux 工程迁移指南
  • Java面试实战:互联网医疗场景中的JVM调优与Spring Boot应用
  • http环境实现通知
  • 分布式雷达 vs 多基地雷达:同频共振的“合唱团”和“乐队”
  • 手机端-adb脚本自动化-真机版
  • Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
  • 简繁英3合1企业网站生成管理系统V1.6wordpress如何降级
  • 【学以致用|python自动化办公】OCR批量识别自动存为Excel(批量识别发票)
  • AJAX 实时搜索
  • 详细介绍C++中通过OLE操作excel时,一般会出现哪些异常,这些异常的原因是什么,如何来解决这些异常
  • ES6知识点详解和应用场景
  • 网站平台建设可行性c 网站开发项目教程
  • Webpack 核心知识点详解:proxy、热更新、Loader与Plugin全解析
  • 本地搭建 Jekyll 环境
  • 前端基础之《React(1)—webpack简介》
  • 攻击者利用Discord Webhook通过npm、PyPI和Ruby软件包构建隐蔽C2通道
  • [Spark] Metrics收集流程
  • pyspark并行性能提升经验
  • HTML盒子模型详解
  • 个人电脑做网站违法吗东莞市住建局官网
  • 下载selenium-ide及使用
  • [Spark] 事件总线机制
  • 长春建站公众号wordpress4.7中文主题
  • 6.string的模拟实现(三)
  • AQS 为什么采用抽象类(abstract class)而不是接口(interface)实现?