一种视频数据到AXI_Stream总线数据流的快速转换方法与流程

文档序号:13667435阅读:5132来源:国知局
一种视频数据到AXI_Stream总线数据流的快速转换方法与流程

本发明属于视频图像处理应用技术领域,涉及一种视频数据到axi_stream总线数据流的快速转换方法。



背景技术:

xilinxzynq系列芯片是将双核armcortex-a9与fpga在单芯片内紧密结合的产品,将处理器的软件可编程能力与fpga的硬件可编程能力实现完美结合,以低功耗和低成本等系统优势实现良好的系统性能、灵活性和可扩展性。zynq芯片内部,arm部分集成有ddr控制器,因此arm访问ddr十分简单,只要操作ddr映射的虚拟地址即可,而fpga要访问ddr就比较复杂,需要通过arm和fpga之间的高速互联端口axi_hp端口。axi_hp端口采用的是axi-stream类型的数据流协议,该协议主要是面向高速流数据的传输,不需要给出地址,不需要cpu的参与,特别适合于视频图像数据的处理应用。为了能够将fpga处理完的视频图像数据通过axi_hp端口写入ddr存储器中,需要将视频图像数据转换成符合axi-stream协议的数据流,实现视频图像数据转换成符合axi-stream协议的数据流转换方法。



技术实现要素:

要解决的技术问题

为了避免现有技术的不足之处,本发明提出一种视频数据到axi_stream总线数据流的快速转换方法。

技术方案

一种视频数据到axi_stream总线数据流的快速转换方法,其特征在于步骤如下:

步骤1:在fpga中建立一个深度为128×32bit的fifo;

步骤2:按照视频数据时序,生成fifo的fifo_we写入端控制信号,将视频数据写入fifo中;

步骤3:以一个状态机来控制fifo读出端的信号,状态机的四个状态“idle”、“wait”、“send”和“pause”分别代表空闲、等待、数据输出、数据输出停止;

当传输的数据个数cnt等于一帧图像数据大小时,表示一帧图像已传输完毕,将axis_write_end信号置1,状态机进入停止状态,随后自动进入空闲状态,等待启动新的一帧图像的传输工作;

当fifo中有可供读出的数据时,fifo输出的信号rd_data_count>0,此时状态机从“idle”状态进入“wait”状态,下一个axis_clk时钟再次确认rd_data_count>0时,状态机从“wait”状态进入“send”状态;

状态机进入“send”状态后,开始启动数据的传输工作,在数据输出过程中对传输的数据个数用cnt计数,当cnt=rd_data_count时此次传输结束,转入“wait”状态,当再次出现rd_data_count>0时再次启动“send”状态,进行数据传输

同时:当传输数据的个数cnt等于所传输图像一行的数据个数时,要给axis_tlast信号一个宽度为1个axis_clk时钟周期的高电平信号,代表一行数据传输结束;

当传输数据的个数cnt等于所传输图像一帧的数据个数时,表示一帧图像传输完成,将axis_write_end置1,状态机转入“pause”状态,随后自动转入“idle”状态等待新的一帧图像传输的开始;

“send”状态期间置axis_tvalid信号为1,“wait”状态期间置axis_tvalid信号为0,这将产生了满足axi-stream协议的数据有效信号。

有益效果

本发明提出的一种视频数据到axi_stream总线数据流的快速转换方法,在fpga中建立一个fifo,视频数据从fifo的写入端写入fifo,在fifo读出端形成满足axi-stream总线时序关系的数据流。设计一个状态机来控制fifo读出端的信号,fifo_rd_data_count是fifo输出的一个表示fifo中有多少个数据可供读出的变量,是控制状态机进行状态转换的关键信号。

附图说明

图1:视频时序图

图2:axi_stream总线时序图

图3:状态机

具体实施方式

现结合实施例、附图对本发明作进一步描述:

本发明的一种视频数据到axi_stream总线数据流的快速转换方法,以1920×1080高清视频图像处理系统设计具体实施例说明如下:

(1)在fpga中建立一个深度为128×32bit的fifo,在行同步、场同步和数据有效信号控制下将视频数据写入fifo中;

(2)根据图2所示的axi_stream总线时序图,视频图像数据的video_vsync信号作为axis_fsync信号,来启动一帧图像的传输工作,当接收端收到axis_fsync的高脉冲信号并准备好接收数据后将axis_tready信号置1,这时发送端就可以启动发送数据了;

(3)状态机有“idle”、“wait”、“send”和“pause”四个状态,分别代表空闲、等待、数据输出、数据输出停止四个工作状态,根据fifo输出的rd_data_count数值大小,启动数据输出工作,在数据输出过程中根据传输数据的个数cnt与rd_data_count的比较关系产生axis_write_ok控制信号,当传输的数据个数cnt等于一帧图像数据大小时,表示一帧图像已传输完毕,将axis_write_end信号置1,状态机进入停止状态,随后自动进入空闲状态,等待启动新的一帧图像的传输工作,状态机切换过程如图3所示。当fifo中有可供读出的数据时,fifo输出的信号rd_data_count>0,此时状态机从“idle”状态进入“wait”状态,下一个axis_clk时钟再次确认rd_data_count>0时,状态机从“wait”状态进入“send”状态,这样设计可以避免偶发rd_data_count>0情况出现时,误启动状态机。状态机进入“send”状态后,开始启动数据的传输工作,在数据输出过程中对传输的数据个数用cnt计数,当cnt=rd_data_count时此次传输结束,转入“wait”状态,当再次出现rd_data_count>0时再次启动“send”状态,进行数据传输。在这个过程中还要做的工作有:

a)当传输数据的个数cnt等于所传输图像一行的数据个数时,要给axis_tlast信号一个宽度为1个axis_clk时钟周期的高电平信号,代表一行数据传输结束;

b)当传输数据的个数cnt等于所传输图像一帧的数据个数时,表示一帧图像传输完成,将axis_write_end置1,状态机转入“pause”状态,随后自动转入“idle”状态等待新的一帧图像传输的开始;

c)“send”状态期间置axis_tvalid信号为1,“wait”状态期间置axis_tvalid信号为0,这将产生了满足axi-stream协议的数据有效信号。

通过状态机的时序切换过程完成了将视频图像数据转换成符合axi-stream协议的数据流。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1