关于video in to axi4-stream

本文深入探讨了VideoIntoAXI4-Stream核在视频数据转换过程中的关键信号和操作,包括READY/VALID握手协议、m_axis_video_tready驱动、SOF和EOL信号的作用,以及像素打包的细节。

PG043 Video In to AXI4-Stream对于video转成AXIS的处理。

关键信号

READY/VALID Handshake

A valid transfer occurs whenever READY, VALID, ACLKEN, and ARESETn are high at the rising edge of ACLK. During valid transfers, DATA only carries active video data. Blank periods and ancillary data packets are not transferred via the AXI4-Stream Video protocol.

Driving m_axis_video_tready
The m_axis_video_tready signal can be asserted before, during, or after the cycle in which the Video in to AXI4-Stream core asserted m_axis_video_tvalid. The assertion of m_axis_video_tready may be dependent on the value of m_axis_video_tvalid. A slave that can immediately accept data qualified by m_axis_video_tvalid should preassert its m_axis_video_tready signal until data is received. Alternatively, m_axis_video_tready can be registered and driven the cycle following VALID assertion. It is recommended that the AXI4-Stream slave should drive READY independently, or pre-assert READY to minimize latency.

SOF ‐ m_axis_video_tuser
The SOF signal, physically transmitted over the AXI4-Stream tuser signal, marks the first pixel of a video frame. The SOF pulse is 1 valid transaction wide, and must coincide with the first pixel of the frame. SOF serves as a frame synchronization signal, which allows downstream cores to re-initialize, and detect the first pixel of a frame. The SOF signal may be asserted an arbitrary number of aclk cycles before the first pixel value is presented on tdata, as long as a tvalid is not asserted.

EOL Signal ‐ m_axis_video_tlast

The EOL signal, physically transmitted over the AXI4-Stream tlast signal, marks the last pixel of a line. The EOL pulse is 1 valid transaction wide, and must coincide with the last pixel of a scanline, as seen in Figure 2-6.

关键看黑体部分:

tuser在xilinx的设计中,变成了帧开始(SOF)信号。这点很关键,会在VDMA中用到。

tlast在xilinx的设计中,变成了行结束(EOL)信号。VDMA需要设置帧的分辨率,EOL用于写入像素的统计。

关于像素打包

在IP设置中,是允许对像素进行打包的。

入下图:

输入是RGB,每个分量是8bit,选择输出每个分量也是8bit,每个时钟1个像素。可以看到m_axis_video_tdata的位宽为24。

如果每个时钟选择2个像素,那m_axis_video_tdata的位宽就变成48了。

如果输入RGB每个分量是8bit,除了8bit,输出还可以设置成10,12,16。比如输出位宽为10,IP会自动将8bit映射到高8位,低2位填0。。。

如果输入RGB每个分量是10bit,除了10bit,输出还可以设置成8,12,16。比如输出位宽为8,IP会自动将高8位映射到输入,抛弃低2位。输出位宽位12,IP会自动将10bit映射到高10位,低2位填0。。。
--------------------- 
作者:skyplain1984 
来源:优快云 
原文:https://blog.youkuaiyun.com/skyplain1984/article/details/80008806 
版权声明:本文为博主原创文章,转载请附上博文链接!

<think>嗯,用户这次的问题是关于FPGA中视频输入到AXI4-Stream IP核的集成,结合之前的对话历史,用户似乎正在构建一个视频处理流水线。用户引用了两个不太相关的文献(TV80 SoC和MIPI配置),但核心需求很明确:如何将物理视频信号转换为AXIS流并集成到FPGA系统中。 从用户之前的VDMA讨论深度来看,ta应该是有一定FPGA开发经验的工程师,可能正在调试摄像头输入模块。需要特别注意几个技术要点:一是视频输入接口的协议转换(比如MIPI/HDMI转AXIS),二是时序同步问题,这两点在实际工程中最容易出问题。 用户没有指定具体视频接口类型,所以需要覆盖通用方案。首先想到Xilinx的Video In to AXIS IP核,它支持多种视频格式输入。但用户引用的MIPI配置[^2]提示可能需要处理CSI-2接口,这点要重点说明。另外,之前讨论VDMA时提到过帧撕裂问题,在输入转换阶段就要预防,所以需要解释FIFO和同步机制的设计。 考虑到用户可能是实际调试中遇到问题,除了标准流程外,必须加入调试技巧:比如ILA探针的部署位置、典型错误码解析。用户上次对VDMA的寄存器配置很关注,这次也应该提供类似的寄存器操作示例,但要注意区分——视频输入IP的配置通常更简单,因为不涉及DDR交互。 最后生成的问题要延续视频处理链路的逻辑,从输入→处理→输出完整覆盖。特别加入AXI4-Lite配置的问题,因为用户上次用MicroBlaze控制VDMA,这次同样需要配置视频输入IP。</think>以下为FPGA中视频输入转AXI4-Stream协议的核心技术方案及集成步骤,结合Xilinx平台实践: --- ### 一、视频输入转AXIS协议技术架构 #### 1. **核心IP功能** - **协议转换**:将视频时序信号(VSYNC/HSYNC/DE/DATA)转换为AXI4-Stream协议[^1] - **关键信号映射**: ```verilog input wire [23:0] video_data, // 像素数据 input wire video_vsync, // 帧同步 input wire video_hsync, // 行同步 input wire video_de, // 数据使能 output wire [31:0] M_AXIS_TDATA,// AXIS数据 output wire M_AXIS_TLAST,// 行结束标志 output wire M_AXIS_TVALID, input wire M_AXIS_TREADY ``` - **缓存机制**:内置FIFO解决读写速率不匹配(深度通常≥2048) #### 2. **典型视频输入接口支持** | **接口类型** | **对应Xilinx IP** | **数据位宽** | 同步机制 | |--------------|-------------------------|--------------|------------------| | MIPI CSI-2 | MIPI CSI-2 Rx Subsystem | 8/16/32bit | Lane同步[^2] | | HDMI | HDMI 1.4/2.0 Rx | 24/36/48bit | TMDS时钟恢复 | | CameraLink | Custom Logic + VDMA | 8-24bit | 帧/行同步信号 | --- ### 三、集成步骤(以MIPI CSI-2为例) #### 1. **IP核配置(Vivado环境)** ```tcl # 创建MIPI CSI-2接收子系统 create_bd_cell -type ip -vlnv xilinx.com:ip:mipi_csi2_rx_subsystem mipi_rx set_property CONFIG.CMN_NUM_LANES {4} [get_bd_cells mipi_rx] set_property CONFIG.CMN_PXL_FORMAT {RAW10} [get_bd_cells mipi_rx] set_property CONFIG.CMN_VC {All} [get_bd_cells mipi_rx] # 添加Video In to AXI4-Stream转换器 create_bd_cell -type ip -vlnv xilinx.com:ip:v_vid_in_axi4s vid_in_axi set_property CONFIG.C_M_AXIS_VIDEO_FORMAT {0} [get_bd_cells vid_in_axi] # 0=8bit, 1=10bit ``` #### 2. **信号连接关键点** ```mermaid graph LR A[MIPI Sensor] -->|CSI-2| B(MIPI CSI-2 Rx) B -->|Video Parallel| C(Video In to AXIS) C -->|AXI4-Stream| D[VDMA/处理IP] ``` - **时序同步**:将`video_vsync`连接至IP的`vid_io_in_vsync`,确保帧对齐 - **数据通路**: - 并行数据总线直连`vid_io_in_data` - `vid_io_in_active_video`连接DE信号 #### 3. **时钟域处理** - 输入视频时钟需通过MMCM生成AXIS时钟: ```tcl create_clock -name vid_clk -period 10 [get_ports video_clk] create_generated_clock -name axis_clk -source [get_pins mmcm/CLKIN1] \ -multiply_by 1 -divide_by 1 [get_pins mmcm/CLKOUT1] ``` --- ### 三、调试与优化 #### 1. **常见故障排查** | **现象** | **原因** | **解决方案** | |------------------------|---------------------------|----------------------------------| | AXIS TLAST缺失 | DE信号宽度不足 | 用ILA检查HSYNC/DE时序对齐 | | 图像错位 | 时钟相位偏移 | 调整MMCM相移±45° | | FIFO溢出 | 下游阻塞 | 提高AXIS时钟频率或减小分辨率 | #### 2. **性能优化技巧** - **位宽匹配**:若输入为10bit RAW,配置AXIS为32bit避免资源浪费 $$ \text{AXIS位宽} = \lceil \frac{\text{像素位宽} \times \text{每周期像素数}}{8} \rceil \times 8 $$ - **突发传输**:启用`ENABLE_DEBUG`寄存器监测FIFO状态[^1] - **功耗控制**:动态关闭未使用Lane(适用于MIPI多Lane配置) --- ### 四、Zynq MPSoC集成示例 ```c // 通过AXI-Lite配置视频输入IP Xil_Out32(VID_IN_BASE + 0x00, 0x01); // 启动IP核 Xil_Out32(VID_IN_BASE + 0x0C, 0x3FF); // 设置最大帧尺寸 // 中断服务程序处理帧同步 void ISR_VideoIn() { if (Xil_In32(VID_IN_BASE + 0x1C) & 0x1) { // 检查VSYNC中断 Xil_Out32(VDMA_BASE + 0x30, DDR_BUFFER); // 更新VDMA地址 } } ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值