Video IP:Video_In_to_AXI4-stream

参考文档:PG043《Video In to AXI4-Stream v4.0 》


目录

1. 介绍

2. 功能

3. 具体应用

4. 性能

   最大频率

    Latency

    Throughput

 5. 接口

6. IP的使用

 General Design Guidelines

7. IP配置


1. 介绍

  Video In to AXI4-Stream IP核用于将视频源(带有同步信号的时钟并行视频数据,即同步sync或消隐blank信号或者而后者皆有)转换成AXI4-Stream接口形式,实现了接口转换。该IP还可使用VTC核,VTC在视频输入和视频处理之间起桥梁作用。


2. 功能

  • 接收视频信号的输入;
  • AXI-Stream主接口 (输出);
  • 提供输出接口给VTC做视频时序检测;
  • 支持在视频与AXI4-Stream时钟域之间的同步时钟模式和异步时钟模式;
  • 可选的FIFO深度:32-8192
  • 输入数据位宽:8-256bit
  • 支持隔行扫描操作.
  • 8,10,12,16bit的组件位宽转换

Xilinx提供的许多视频处理核之间,都是利用AXI4-Stream视频流协议进行视频的传输的,也就是说其输入和输出都是AXI4-Stream接口(Slaver/Master)。

在系统之间,通常使用用于水平和垂直定时的显式消隐(Blank)和同步信号(sync)以及数据有效信号(valid)来传输视频。 数字视觉接口(DVI)是这种传输模式的一个示例。 Video In to AXI4-Stream核将具有显式同步和定时的传入视频转换为AXI4-Stream Video协议,以与使用该协议的Xilinx视频处理IP核互联。
Video In to AXI4-Stream核心接受视频输入。 对于本文档,视频被定义为具有像素时钟和以下一组定时信号之一的并行视频数据:

•    Vsync, Hsync, and Data Valid
•    Vblank, Hblank, and Data Valid
•    Vsync, Hsync, Vbank, Hblank, and Data Valid

同步信号和消隐信号二者需其一即可,二者皆有也没问题。三组信号任一组信号都能够实现将Video In转换为AXI4-Stream。特定的选择对于视频时序控制器(VTC)检测器很重要,因此在需要生成VTC内核时应指定一组时序信号。IP核输出端是主模式下的AXI4-Stream接口。

该接口由并行视频数据 tdata,握手信号tvalidtready以及两个标志tlasttuser组成,它们被用于标识视频流中的某些特定像素。

tlast:指定每行的最后一个有效像素,也称为行尾(EOL)。

tuser:指定帧的第一个有效像素,称为帧开始(SOF)。

这两个标志信号对于标识AXI4流总线上的像素位置是必需的,因为AXI4-Strem形式下已然不再有同步或消隐信号。总线上只会搬运有效像素。 

Video IP:Video_In_to_AXI4-stream_第1张图片 Video In to AXI4-Stream内部结构图

      该IP核旨在与VTC的检测器功能并行使用。 通过AXI4-Lite接口,视频时序检测器检测输入进来的视频的行标准,并确定检测到的时序值 (例如每一行的有效像素的个数,以及可用于Video In to AXI4-Stream IP核下游的视频处理IP核的有效行数)。

      建议将视频定时检测器的“锁定”状态输出连接到Video In to AXI4-Stream核心的axis_enable输入,以在视频输入丢失或不稳定时禁止AXI4-Stream总线。 视频定时控制器的检测器锁定指示符是INTC_if寄存器的第8位。

      Video In to AXI4-Stream核处理视频时钟域和AXI4-Stream时钟域之间的异步时钟边界。 数据宽度可以从8到256之间选择,具体取决于视频格式所需的组件数量,每个组件的位数和每个时钟的像素数量。 支持隔行操作。 有一个输入FIFO,深度在32到8192个位置之间可选。


3. 具体应用

      该IP 核可以完成对以下Video数据源进行到AXI4-Stream的接口转换:

Video IP:Video_In_to_AXI4-stream_第2张图片

      具体应用时,未必一定是视频数据,只要是能够按照视频标准时序给出数据源,那么该IP就能够完成格式转换,转换成AXI4-Stream。视频数据完成格式转换是由于Xilinx 提供的Video IP的接口都是基于视频数据的AXI4-Stream,即以数据流形式向下游高速传输。


4. 性能

   最大频率

本节包含目标设备的典型时钟频率。 可达到的最大时钟频率可能会有所不同。 使用其他版本的Xilinx工具以及其他因素,其他工具选项,FPGA器件中的附加逻辑会影响最大可达到的时钟频率和所有资源计数。

    Latency

      当AXI4-Stream总线上的下游处理模块可以以   像素速率      更快的速率获   取数据时,通过Video In to AXI4-Stream IP核的典型延迟为vid_io_in_clk的6个周期+ aclk的3个周期。

      如果下游块以较低的速率获取像素,则FIFO会被用于在行和帧的过程中平衡输入和输出速率的不匹配。 像素在FIFO中的这种存储会增加了等待时间,并根据进出IP核的数据流而变化。

    Throughput

      AXI4-Stream接口上有效像素的平均数据速率与视频总线上有效像素的平均数据速率匹配。 但是,输入和输出的时钟速率不需要匹配由于AXI4-Stream总线不携带消隐像素,因此时钟速率可以低于视频时钟速率,并且仍具有足够的带宽以满足平均速率要求。 需要额外的FIFO深度来消除瞬时速率的失配。 输入视频像素时钟(Fvclk)和AXI4-stream时钟(Faclk)受整体Fmax限制。

FIFO深度要求

(1)若Faclk =或>Fvclk:

    即AXI4-Stream时钟大于视频像素时钟,则仅需要最小缓冲区大小(32个位置)。这假设连接到Video In to AXI4-Stream IP核下 游的IP核可以在全视频速率接收数据。例如,下游IP核可以接受几乎连续的流中的数据,其中间隙仅在EOL之后出现,并且每行仅在SOF之前连续出现行间隙。在这种情况下,FIFO在每行的EOL之后清空。
(2)若Faclk

    Faclk小于Fvclk 时,需要额外的缓冲。 FIFO必须足够大,以处理视频时钟上像素进入速率的差异,以及使用aclk在AXI4-Stream总线上输出像素的速率较慢。对于高于线路平均值但低于vclk的aclk频率,输入FIFO深度必须为:
      FIFO深度最小值= 32 +有效像素* Fvclk / Faclk
如果下游处理核心以比aclk更低的速率接收数据,则需要额外的缓冲,其数量应足以防止FIFO在帧传输期间溢出。

 


 5. 接口

        Video In to AXI4-Stream IP核使用行业标准的  控制和数据接口  连接到其他系统组件。 以下各节描述了内核可用的各种接口。 图2-1说明了视频输入到AXI4-Stream核的I / O图。 该核并不需要所有的时序信号,但是它也会将这些信号传递给Xilinx视频时序控制器(VTC),该控制器根据其配置可能需要某些信号。 因此,所有定时信号都存在。 对于Video In to AXI4 Stream核,始终需要有效的数据。 另外,需要垂直同步或垂直消隐输入。

Video IP:Video_In_to_AXI4-stream_第3张图片 Video In to AXI4-Stream Core Top-Level Signaling Interface

 

Common Interface
信号 方向 宽度 描述
aclk Input 1 AXI4-Stream时钟
aclken Input 1 AXI4-Stream时钟使能信号,高有效
aresetn Input 1 AXI4-StreamARESETN。 低电平有效。 与ACLK同步。
axis_enable Input 1

此输入应连接到VTC检测器锁定状态,并与vid_io_in_clk同步。

1 =使能写入FIFO
0 =禁止写入FIFO

fid Output 1 AXI4-Stream总线的字段ID。 仅用于隔行视频:0 =偶数场,1 =奇数场。 该位的更改与AXI4-Stream总线上的SOF一致。 应该将其连接到下一个具有现场感知能力的下游设备的field-ID位,否则应保持未连接状态。 与aclk同步。
vid_io_in_clk Input 1 本地视频时钟。 仅在独立时钟模式下可用
vid_io_in_ce Input 1 本地视频时钟使能
vid_io_in_reset Input 1 本地视频时钟域的复位信号。 与vid_io_in_clk同步。 仅在独立时钟模式下可用。 高有效。
overflow Output 1 指示FIFO上溢出的标志。 与vid_io_in_clk同步。 如果发生溢出,则可能表明所连接的AXI4-Stream从模块正在产生过多的背压(back-pressure)。
underflow Output 1 指示FIFO下溢出的标志。 在正常操作下绝对不应发生这种情况。 与aclk同步。

ACLK

AXI4-Stream输出信号与时钟信号ACLK同步。 AXI4-Stream信号在ACLK的上升沿采样。 AXI4-Stream输出信号的变化在ACLK的上升沿之后发生。

ACLKEN

ACLKEN引脚是与AXI4-Stream接口有关的高电平有效,同步时钟使能输入。 尽管ACLK引脚上有上升沿,但将ACLKEN设置为低电平(无效)会停止AXI4-Stream总线的运行。 保持内部状态,并保持输出信号电平,直到再次确认ACLKEN。 当ACLKEN被置为无效时,除ARESETn取代ACLKEN之外,不对核心AXI4-Stream输入进行采样。

Video Clock

    视频输入接口和视频定时接口必须与vid_io_in_clk同步

Video Clock Enable

输入信号vid_io_in_ce控制视频时钟域中所有寄存器的时钟使能。 当视频时钟域的时钟频率高于视频时序标准时,通常会使用此信号。

Video Reset

仅当内核配置为独立时钟模式时,视频复位信号vid_io_in_reset信号才可用。 此高电平有效信号与vid_io_in_clk同步,用于重置桥的输入端。 断言此复位即vid_io_in_reset或aresetn将导致内部FIFO复位。

Video Timing Interface
信号 方向 宽度 描述
vtd_vsync Out 1 垂直同步视频定时信号(场同步)。
vtd_hsync Out 1 水平同步视频定时信号(行同步)。
vtd_vblank Out 1 场消隐
vtd_hblank Out 1 行消隐
vtd_active_video Out 1 Active video flag.
1 = active video, 0 = blanked video
vtd_field_id Out 1 VTC字段ID。 0 =偶数场,1 =奇数场。
       

 

AXI4-Stream Interface
       
m_axis_video_tvalid Output 1 AXI4-Stream TVALID。 有效视频数据启用
m_axis_video_tdata Output 1 AXI4-Stream TDATA. 视频数据
m_axis_video_tuser Output 1 AXI4-Stream TUSER. 帧开始
m_axis_video_tlast Output 1 AXI4-Stream TLAST. 行结束
m_axis_video_tready Input 1 AXI4-Stream TREADY. 从模块准备好

Video Data

AXI4-Stream接口规范将TDATA宽度限制为8位的整数倍。 因此,如果视频数据宽度不是8的整数倍,则在连接到m_axis_video_tdata之前,必须在MSB上用零填充数据以形成N * 8位宽的向量。 填充不会影响IP核的大小。

类似地,Video In to AXI4-Streamd的输出信号m_axis_video_tdata的数据将  打包并根据需要填充为8位的倍数   。 图2-2给出了一个示例,该示例针对每个时钟一个像素的12位RGB数据。

Video IP:Video_In_to_AXI4-stream_第4张图片

对于每个时钟多个像素,根据需要将像素打包成8位的倍数。 图<新图>显示了每个时钟三个像素,每个分量RGB数据12位的示例。 尽管这是预期的打包,但内核本身不会解析数据。 换句话说,AXI4-Stream输出将是视频输入,填充为8位的倍数。

Video IP:Video_In_to_AXI4-stream_第5张图片

该 桥接器还可以针对宽度的任何组合(包括8位,10位,12位和16位)执行从输入到输出的组件宽度转换。 图2-4所示的示例说明了将分量宽度从AXI4-Stream输入上的12位微调为Video输出上的8位。 修剪每个组件的四个LSB,并将其余数据打包到输出视频总线上。

Video IP:Video_In_to_AXI4-stream_第6张图片

图2-5中的示例说明了将组件宽度从AXI4-Stream上的8位填充到Video输出上的12位的情况。 每个组件的输出上的四个LSB填充为零,高MSB从AXI4-Stream输入映射到总线。

Video IP:Video_In_to_AXI4-stream_第7张图片

READY/VALID Handshake

只要READY,VALID,ACLKEN和ARESETn 在ACLK的上升沿为高电平,就会发生有效的传输。 在有效传输期间,DATA仅传输有效视频数据。 消隐时段和辅助数据包不会通过AXI4-Stream Video协议进行传输。

Driving m_axis_video_tready

m_axis_video_tready信号可以在Video in to AXI4-StreamIP断言m_axis_video_tvalid的周期之前,期间或之后断言(即Ready相对于tvalid信号没有限制)。 m_axis_video_tready的断言可能取决于m_axis_video_tvalid的值。 能够立即接受通过m_axis_video_tvalid限定的数据的从站应预先声明其m_axis_video_tready信号,直到接收到数据为止。 或者,可以注册m_axis_video_tready并在VALID声明后驱动周期。 建议AXI4-Stream从站独立驱动READY,或预先声明READY以最大程度地减少延迟。

SOF - m_axis_video_tuser

通过AXI4-Stream 接口中的tuser信号物理传输的SOF信号,标记了视频帧的第一个像素。 SOF脉冲为1个有效事务宽度,并且必须与帧的第一个像素重合。 SOF用作帧同步信号,允许下游IP核重新初始化并检测帧的第一个像素。 只要tvalid没有置位,就可以在第一个像素值出现在tdata之前,断言SOF信号的任意数量的aclk周期。

 

 

EOL Signal - m_axis_video_tlast

通过AXI4-Stream接口中的 tlast信号 物理传输的EOL信号,来标记一行的最后一个像素。 EOL脉冲为1个有效事务宽度,并且必须与扫描线的最后一个像素重合,如图2-6所示。

Video IP:Video_In_to_AXI4-stream_第8张图片

6. IP的使用

 General Design Guidelines

      Video In to AXI4 Stream IP核的video输入端口应连接到输入视频源,比如DVI接口芯片可产生并行视频数据和定时信号。该IP核并并不需要所有的时序信号,但是,Video In to AXI4 Stream IP核将这些信号传递给Xilinx视频时序控制器VTC,根据其配置,Xilinx视频时序控制器可能需要某些时序信号。使用VTC检测器所需的一组定时信号。对于Video In to AXI4 StreamIP核,始终需要数据有效信号。另外,需要垂直同步或垂直消隐输入。
      Video In to AXI4 Stream IP核的主要输出是主AXI4-Stream总线,该总线连接到下游视频处理模块,如图3-1所示。主接口和从接口共享一个公共时钟,复位和时钟使能。
如图3-1所示,Video In to AXI4-Stream IP核通常与Video Timing Controller结合使用,后者可检测下游处理模块使用的视频时序参数。

Video IP:Video_In_to_AXI4-stream_第9张图片

时钟

      Video In to AXI4 Stream IP核使用两种时钟模式,即通用(同步)或独立(异步)。当网桥的本地和AXI4-Stream端从公共同步时钟运行时,将使用公共时钟模式。通用时钟模式禁用了内部FIFO中的时钟域交叉逻辑,因此节省了资源。当桥接器要求桥接器的本机端和AXI4-Stream端具有异步和独立时钟时,将使用独立时钟模式。
视频输入时钟与输入上使用的视频线标准相对应。它是视频线路标准的一部分,由Video In至AXI4-Stream内核以及用于检测视频时序的相应Video Timing Controller内核使用。
      AXI4-Stream时钟(aclk)是AXI4-Stream总线的一部分。为了最大程度地减少缓冲要求,该时钟的频率应等于或高于视频输入时钟的频率。该时钟可能比视频输入时钟慢,在这种情况下,需要额外的缓冲来存储像素,以便可以以视频时钟的突发速率输入行。在“缓冲区要求”部分中对此进行了讨论。至少,声压频率必须高于平均像素速率。

 

 

7. IP配置

 

 

Video IP:Video_In_to_AXI4-stream_第10张图片

 

 

Video IP:Video_In_to_AXI4-stream_第11张图片

Component Name:组件名称用作为模块生成的输出文件的基本名称。 名称必须以字母开头,并且必须由字符组成:a到z,0到9和“ _”。
Pixels Per Clock       :指定要并行输出的像素数。 此参数影响输入和输出的数据总线宽度。 每个时钟的像素选项为1、2或4。
•Input Component Width: 指定输入视频数据总线上的视频位宽度。
•Output Component Width:指定输出AXI4-Stream TDATA总线上的视频分量位宽度。
Clock Mode    时钟模式用于指定AXI4-Stream输出和视频输入信号是使用公共时钟还是独立时钟进行时钟控制。

Video Format   :  指定使用的视频格式。 选择不同的格式将确定使用的组件数量。,比如RGB数据格式一个像素将需要3个。

组件数量(1-4)*Pixels per clock*组件宽度=视频数据总线的宽度v_data。

依次将该宽度四舍五入为最接近的8倍,以确定AXI4-Stream数据总线的宽度m_axis_video_tdata。 例如,如果组件宽度为14(像素宽度),每个时钟像素为2,视频格式为RGB(3个组件),则vid_data为84位宽,m_axis_video_tdata为88位。 使用IP Integrator时,此参数是根据连接到从属AXI-Stream视频接口的视频IP内核的视频格式自动计算的。
•FIFO深度:指定输入FIFO中的位置数。 FIFO深度的选项为32、1024、2048、4096和8192。

 

 

你可能感兴趣的:(Vivado)