CN114302089A - 一种基于fpga的多路视频信号缓存控制方法及*** - Google Patents
一种基于fpga的多路视频信号缓存控制方法及*** Download PDFInfo
- Publication number
- CN114302089A CN114302089A CN202111479431.7A CN202111479431A CN114302089A CN 114302089 A CN114302089 A CN 114302089A CN 202111479431 A CN202111479431 A CN 202111479431A CN 114302089 A CN114302089 A CN 114302089A
- Authority
- CN
- China
- Prior art keywords
- video
- data packet
- fifo
- burst
- ddr
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明提供了一种基于FPGA的多路视频信号缓存控制方法及***,属于视频信号处理领域,方法包括:将多组视频源进行数据重组生成多组输入数据包并记数;对输入数据包进行优先级划分且对输入数据包编码;若输入数据包的数据缓存量达到迸发量,启动DDR写请求信号;转换成AXI4 Stream总线格式进行DDR写操作;设置FIFO_OUT输出优先级;若FIFO_OUT数据缓存量小于等于两倍迸发带宽的输出数据包,启动读请求信号,结合读完成信号,读取输出数据包解码后写入对应FIFO_OUT,输出视频数据;本发明有效实现多路视频信号的缓存控制,同时简化了视频信号转换成AXI4 Stream的时序控制。
Description
技术领域
本发明属于视频信号处理领域,更具体地,涉及一种基于FPGA的多路视频信号缓存控制方法及***。
背景技术
基于SoC嵌入式***进行开发设计是视频处理领域的一大趋势。2010年Xilinx公司推出首个Znyq系列嵌入式***原型,将ARM处理器与传统FPGA结合,芯片内部通过AXI4标准总线互联,从而实现高灵活性、高可配置性和高计算性能的开发设计。经过近10年的发展,Znyq SoC平台有效提升了视频处理领域视频信号计算性能和显示处理可配置性能等诸多瓶颈问题,已经发展成为视频信号处理领域较为成熟的解决方案。
在军用及工业视频处理领域,为满足不同场景下视频处理功能定制化和高计算性能的需求,视频设备支持多组视频信号处理,广泛采用FPGA方案。一方面,MPsoc、Znyq等SoC嵌入式视频处理方案基于AXI4标准总线互联,配置灵活,能够有效解决基于传统FPGA芯片平台视频设备功能单一、配置性能较差等问题。因此结合传统FPGA视频设备进行基于MPsoc、Znyq等嵌入式平台的移植能够较大程度提升视频处理装备产品功能性能;另一方面,大量视频数据的计算对FPGA计算资源提出了较高的要求,基于Xilinx官方IP的视频数据与AXI总线数据转换需要消耗大量的FPGA资源,基于行缓存视频方法对缓存颗粒利用率低,基于帧缓存方法缓存效率较低,因此基于FPGA的多路视频处理亟需开发数据处理效率高、资源消耗小的架构满足日益增长的功能性能需求。
发明内容
针对现有技术的缺陷,本发明的目的在于提供一种基于FPGA的多路视频信号缓存控制方法及***,旨在解决现有的多路视频信号的缓存需要额外配置IP核Video TimingController、Video to AXIs,AXIS to Video IP核,基于行缓存视频方法对缓存颗粒利用率低,且基于帧缓存方法缓存效率较低的问题。
为实现上述目的,一方面,本发明提供了一种基于FPGA的多路视频信号缓存控制方法,包括以下步骤:
(1)根据输入视频源分辨率,将多组视频源的视频位宽转化为2k位进行多组数据重组生成多组输入数据包,并对每一数据包中的数据进行记数;
(2)对多组输入数据包进行优先级划分后,将多组输入数据包通过多组FIFO_IN单独缓存;
(3)当FIFO_IN中输入数据包的数据缓存量达到AXI4 Stream迸发量时启动DDR的写请求信号;同时对本次迸发的输入数据包与对应视频源进行编码;
(4)将编码后的输入数据包、写请求信号和有效写地址转换成AXI4 Stream总线格式进行DDR写操作,完成对多组视频源的缓存;
(5)通过多组FIFO_OUT对多组视频源缓存输出,设置FIFO_OUT输出优先级,并对多组FIFO缓存数据量单独计数;
(6)当任意一组FIFO_OUT数据缓存量小于等于两倍迸发带宽的输出数据包时,启动DDR的读请求信号,结合Rd_last指令,依次从DDR读取输出数据包数据并解码后写入对应FIFO_OUT,输出视频位宽2k位的视频数据;
(7)从视频位宽2k位的视频数据中读出有效视频信息并显示,实现多路视频信号缓存控制;其中,k为正整数;所述输入数据包的位宽为2的指数次方倍。
进一步优选地,步骤(4)中AXI4 Stream总线格式的转换方法为:
设置DDR为Packet mode模式,当DDR写请求开启后启动DDR写入使能,写地址有效被声明,DMA锁定信号Dma_lock拉高,占用DMA操作;
将编码后的输入数据包、视频行信号、视频场信号、写请求信号和有效写地址转换成AXI4 Stream总线格式进行传输。
进一步优选地,本次迸发的输入数据包的获取及更新方式为:
启动DDR的写请求信号后,根据视频信号所在FIFO_IN中视频通道的优先级,将FIFO_IN中的当前输出数据包作为本次AXI4 Stream迸发的输入数据包;
当对FIFO_IN中的当前输出数据包完成写操作时,接收写完成信号Wr_last,再读取FIFO_IN中其他视频通道的输出数据包更新本次AXI4 Stream迸发的输入数据包;
对同时输入的视频信号,将高优先级通道的输出数据包作为本次AXI4Stream迸发的输入数据包。
进一步优选地,步骤(6)具体包括以下步骤:
(6.1)当任意一组FIFO_OUT缓存数据量小于等于两倍迸发带宽的输出数据包时,设置DDR为Packet mode,启动DDR读入使能,读地址有效被声明,DMA锁定信号Dma_lock拉高;
(6.2)结合读完成信号Rd_last,从DDR读取最高优先级输出数据包并解码后写入FIFO_OUT,输出视频位宽2k位的视频数据。
进一步优选地,步骤(6.2)具体包括以下步骤:
当最高优先级输出数据包读操作完成时,发出读完成信号Rd_last,读取其他输出数据包中最高优先级的输入数据包。
进一步优选地,当设置DDR为Packet mode时,在每次写请求有效时,判断当前输入数据包的视频源通道编号wr_pointer,对首次写入的输入数据包生成初始地址;通过偏移地址进行多组输入数据包的连续写入。
写地址有效在写入使能期间被声明,直至写完成信号Wr_last有效时解除。
进一步优选地,在对输入数据包写的阶段,对输入数据包与每路视频的编码方法为:
将输入数据包的写地址设置为wr_addr={wr_pointer,burst_number};其中,wr_addr为数据包的写地址;wr_pointer表示视频源通道ID;burst_number为数据包迸发数,第一次迸发时数值为0;加入偏移地址后,迸发地址为burst_addr=burst_number*burstLegeth;burstLegeth为AXI迸发长度;burst_number为迸发次数。
另一方面,本发明提供了一种基于FPGA的多路视频信号缓存控制***,包括:
多组视频源接收模块,其输出端与多组输入FIFO IN模块的输入端连接,用于提供多路视频源;
多组输入FIFO IN模块,其与TV Controller FSM模块的双向相连,用于根据AXI4Stream最小传输数据包数据位宽和数据包长度对多组输入视频信号进行数据重组,生成多组输入数据包;并对输入数据包的数据进行记数;其中,多组输入视频信号为根据输入视频源分辨率,将多组视频源的视频位宽转化为2k位的视频信号;
TV Controller FSM模块,其与多组输出FIFO OUT模块双向连接,且与DMA进行数据流的传输,与AXI transfer模块进行控制流的传输;用于对FIFO_OUT和FIFO_IN划分优先级,且监控多组FIFO_OUT和FIFO_IN的数据缓存量,当任意FIFO_OUT存储量小于等于两倍迸发带宽的输出数据时生成DDR读使能信号,启动DDR的读请求信号;当FIFO_IN的数据缓存量达到AXI4 Stream迸发量时启动DDR的写请求信号;并用于发送写完成信号和读完成信号;
DMA,其输出端与AXI transfer模块连接,对接收到的输入数据包和输出数据包分别与每路视频进行编码;
AXI transfer模块,其输出端与AXI mig相连,用于将读入使能、写入使能、有效写地址、有效读地址、输入数据包和输出数据包转换成AXI4 Stream总线格式;
AXI mig模块,用于提供AXI4接口的mig存储管理接口;
DDR存储模块,其为DDR存储颗粒格式;
多组输入FIFO OUT模块与TV Controller FSM模块的双向相连,用于将输出数据包还原成视频显示行场需要的视频位宽为2k位的视频数据;并对输出数据包的存储量进行记数;
多组视频源发送模块,用于将视频位宽为2k位的视频数据还原成多组视频源;其中,k为正整数。
进一步优选地,AXI transfer模块包括写操作阶段的AXI transfer器件和读操作阶段的AXI transfer器件;
所述写操作阶段的AXI transfer器件用于当设置DDR为Packet mode时,DDR写请求开启后启动DDR写入使能,写地址有效被声明,DMA锁定信号Dma_lock拉高;
所述读操作阶段的AXI transfer器件用于当设置DDR为Packet mode时,DDR读请求开启后启动DDR读入使能,读地址有效被声明,DMA锁定信号Dma_lock拉高。
进一步优选地,DMA在对输入数据包写的阶段,对输入数据包与每路视频的编码方法为:
将输入数据包的写地址设置为wr_addr={wr_pointer,burst_number};其中,wr_addr为数据包的写地址;wr_pointer表示视频源通道ID;burst_number为数据包迸发数,第一次迸发时数值为0;加入偏移地址后,迸发地址为burst_addr=burst_number*burstLegeth;burstLegeth为AXI迸发长度;burst_number为迸发次数。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
本发明提供的多组输入FIFO IN模块根据AXI4 Stream最小传输数据包数据位宽和数据包长度对多组输入视频信号进行数据重组;同时多组输入FIFO OUT模块能够将重组的迸发数据包还原成视频显示行场需要的输出数据包;不同于现有技术AXI Transfer对视频信号的数据进行重组或还原,减少了AXI Transfer运行的复杂度;本发明多组输入FIFOIN模块和多组输入FIFO OUT模块结合TV Controller FSM,将数据包分为数据流和控制流分成两路,分别进行数据包的编码和写或读的操作指令生成或转换;然后将数据和指令转换成AXI4 Stream总线格式;利用DDR实现对多路视频信号的缓存;即通过FIFO和DDR等存储资源实现了视频hs、vs和视频数据与AXI_AWADDR、AXI_WDATA等AXI4 stream信号的时序转换;能够独立于FPGA PS端单独运行,FPGA资源消耗小,有效实现视频信号到AXI4 Stream的时序控制,能够实现常规视频信号(如DVI、HDMI信号等)到Soc ZYNQ AXI4总线架构下视频控制信号的移植。
本发明提供了一种多路视频数据在单组DDR颗粒上的存储方法,结合AXI4 stream数据包Buad=2m(迸发位宽)×2n(迸发包长度)大小,通过视频流数据重组打包成数据块存储,有效实现多路视频源通过单组DDR资源进行行缓存方法,视频数据按照AXI4 Stream数据包带宽传输控制,由于存储大小比视频行缓存资源消耗要小得多,并且AXI4 Stream协议下数据传输规范稳定,该方法对DDR缓存资源进行精细控制,能够提高DDR存储资源利用率和数据传输质量。
附图说明
图1是本发明实施例提供的多路视频源进行AXI stream缓存原理框图;
图2是本发明实施例提供的视频源重组生成缓存数据包的方法;
图3是本发明实施例提供的多路视频缓存控制状态机;
图4是本发明实施例提供的数据包写入缓存时序;
图5是本发明实施例提供的数据包读出缓存时序;
图6是本发明实施例提供的AXI4 Stream数据转换时序。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明中用到的英文缩写的解释如下:
FPGA:现场可编程逻辑门阵列;
PS:FPGA软件端;
TVI:TV INPUT输入视频;
TVO:TV OUTPUT输出视频;
FIFO:先进先出堆栈器;
FSM:有限状态机;
RGB:红绿蓝像素;
DDR:动态随机存储器;
AXI:ARM公司总线协议。
实施例
如图1所示,本发明公开了一种基于FPGA的多路视频信号缓存控制***,包括:多组视频源TVI1~n接收模块1、多组视频源TVO1~n发送模块2、输入FIFO IN1~n模块3、多组输出FIFO OUT1~n模块4、缓存控制状态机TV Controller FSM模块5、存储控制器DMA模块6、AXI协议转换器AXI transfer模块7、AXI mig模块8和DDR3存储器件模块9;
多组视频源TVI1~n接收模块1和多组视频源TVO1~n发送模块2能够处理不同分辨率视频源信号;多组视频源TVI1~n接收模块1中视频信号输入格式为24位RGB视频信号,由于AXI4迸发带宽为2的指数次方倍,为了其他模块更好处理,多组视频源TVI1~n接收模块1输出进行补0操作,位宽为32位;同理,多组视频源TVO1~n发送模块2接收视频位宽为32位,输出视频格式为24位RGB视频信号;
多组输入FIFO IN1~n模块3和多组输出FIFO OUT1~n模块4同样也为相反的过程;根据计算的AXI4 Stream最小传输数据包数据位宽和数据包长度(如最小迸发带宽Buad=2m×2n,其中,2m为AXI4 Stream迸发位宽,2n为AXI4Stream迸发长度),输入FIFO IN1~n模块3将多组输入视频进行数据重组,输入FIFO IN1~n模块3输入位宽为32位,输出位宽为2m;并且计算输入FIFO IN1~n模块3中数据包缓存量大小,典型的可使用FIFO自带的wr_data_count信号作为监测,也可以利用FIFO_IN读写使能进行记数;相反的,多组输出FIFOOUT1~n模块4输入位宽为2m,输出位宽为32位,旨在将重组的迸发数据包还原成视频显示行场需要的视频数据,并且计算多组输出FIFO OUT1~n模块4中数据包缓存量大小,典型的可使用FIFO自带的rd_data_count信号作为监测,也可以利用FIFO_OUT读写使能进行记数;
缓存控制状态机TV Controller FSM模块5能够同时接收处理多组视频源数据包;
如图3所示,以一组视频写入为例,计算FIFO_IN1中TVI1的数据流存储量大小,当FIFO_IN1数据存储量大小达到AXI4 Stream迸发位宽2m要求时,启动DDR3的写请求信号Wr_req1,该信号为脉冲信号;设置多组FIFO_IN1、FIFO_IN2,…,FIFO_INm优先级,当最高优先级FIFO正在读取数据时,其他FIFO正在等待读取,只有当最高优先级Wr_last(由DMA模块6输出)来临时才开启下一组FIFO读取信号;
以一组视频读取为例,与写过程不同的是,计算FIFO_OUT1中数据存储量,当存储量小于等于两倍迸发带宽时开启First_req1~n信号,该信号为脉冲信号,进行FIFO OUT数据写入;当FIFO_OUT1中数据存储量大于两倍迸发带宽时停止写入;按照输入FIFO IN1~n模块3中FIFO IN1~n数据处理优先级设置多组输出FIFO OUT1~n模块4中FIFO OUT1~n的优先级;当最高优先级FIFO OUT正在写入时其他FIFO等待写入,只有DMA模块6输出最高优先级FIFO写入完成发出Rd_last时才开启下一组FIFO的写入;因此读取数据包过程中,每帧视频源处理开始,FIFO OUT1~n已经累计存储了两次AXI4 Stream迸发大小的数据量,防止FIFO OUT1~n读空;
DMA缓存控制模块6,从缓存控制状态机TV Controller FSM模块5接收数据,并将接收到的数据与每路视频进行编码,如图2所示,以写过程为例,写地址wr_addr={wr_pointer,burst_number},每组数据包的写地址由wr_pointer和burst_number组成;wr_pointer表示视频源通道ID,即该数据包由第几路视频源重组而来;burst_number为数据包迸发数,等于数据包数据此次AXI4Stream的第几次迸发;由于一帧视频数据总量为迸发带宽的整数倍,因此能够经过整数次迸发传输完成一帧数据;同理读过程只需要按照写过程的重组规则从DDR3取出数据即可;
AXI协议转换器AXI transfer模块7用于将DMA模块6和TV Controller FSM模块5生成的读写使能、地址和数据等信号转成AXI4 Stream总线格式;
当DDR3写请求Wr_req开启时,启动DDR写入使能Wr_en,即DMA锁定信号Dma_lock拉高,同时对写入数据包进行记数,当记数大小等于迸发长度burst size,即Wr_count=burst size=2n时,开启写完成信号Wr_last,表示一次AXI4 Stream迸发结束;由AXItransfer模块7输出的写地址有效Axi_awvald应当在Wr_en期间就被声明,直到AXI mig模块8输出Axi_wready被声明才解除AXI的地址占用,即Axi_awvald在(Wr_req&(~Dma_lock)&~Axi_wready)时有效,为脉冲信号;否则无效;当AXI mig设置DDR3为Packet mode时,因此只需要在每次Wr_req有效时,写入一次数据包写入的初始地址即可,在下一次Wr_req有效时打入偏移地址Axi_awaddr+burstLength,其中,burstLength大小为数据包一次迸发带宽,不小于2m;写地址有`效Axi_awvald应当在Wr_en期间就被声明,直到Wr_last有效才解除,为电平信号;
AXI mig模块8为xilinx提供的AXI4接口的mig存储管理接口;DDR3存储器件模块9为DDR3存储颗粒。
基于AXI4 Stream总线的多路视频信号在单组DDR3存储器中缓存控制步骤:
步骤1:根据视频源分辨率和视频路数要求计算AXI4 Stream最小迸发带宽Buad=2m×2n,其中,2m为AXI4 Stream迸发位宽;2n为AXI4 Stream迸发长度;
步骤2:根据多路视频源分辨率P1,P2,P3进行视频源缩放,使缩放后每路视频信号的单帧数据包为最小迸发带宽Buad的整数倍(正常分辨率如3840*2160、1920*1080,1080*720等无需缩放);
步骤3:将视频源信号按照AXI4 Stream迸发位宽进行重组,生成最小数据存储块;其中,数据包写入地址为wr_addr={wr_pointer,burst_addr};wr_pointer为该数据包所在的视频通道编号;迸发地址为burst_addr=burst_number*burstLegeth;burstLegeth为AXI迸发长度;burst_number为迸发次数;
步骤4:按照每路视频信号分别分配一组前端输入FIFO_IN1~n模块3和后端输出FIFO_OUT1~n模块4;
具体方法为:TVI1进入FIFO_IN1以AXI4 Stream迸发位宽2m输出数据,经过视频控制状态机TV Controller FSM模块5输出后以AXI4 Stream迸发位宽2m进入FIFO_OUT1还原视频数据TVO1;其他各路视频信号以此类推;
步骤5:将重组数据包写入DDR3存储模块9;
具体步骤为:计算FIFO_IN1中TVI1的数据流存储量大小,当FIFO_IN1数据存储量大小达到AXI4 Stream迸发位宽2m要求时,启动DDR3的写请求信号Wr_req1,该信号为脉冲信号;
步骤6:设置多组FIFO_IN1、FIFO_IN2…FIFO_INn优先级,当最高优先级FIFO IN正在读取数据时,其他FIFO IN正在等待读取,只有当最高优先级Wr_last(由DMA模块6输出)来临时才开启下一组FIFO IN读取信号;
步骤7:从DDR3存储模块9读取重组数据包;与写过程不同的是,计算FIFO_OUT1中数据存储量,当存储量小于等于两倍迸发带宽时开启First_req1~n信号,该信号为脉冲信号,进行FIFO OUT数据写入;大于两倍迸发带宽时停止写入;
步骤8:按照模块3中FIFO_IN1~n数据处理优先级设置模块4中FIFO_OUT1~n优先级;当最高优先级FIFO正在写入时其他FIFO等待写入,只有最高优先级FIFO写入完成发出Rd_last(由DMA模块7发出)时才开启下一组FIFO的写入;因此读取数据包过程中,每帧视频源处理开始,FIFO_OUT1~n已经累计存储了两次AXI4 Stream迸发大小的数据量,防止FIFO_OUT1~n读空;
步骤9:转换视频行信号hs、场信号vs和视频数据与AXI_AWADDR(总线写地址和总线写数据)、AXI_WDATA等AXI4 Stream信号时序;当DDR3写请求Wr_req开启时,启动DDR写入使能Wr_en,即DMA锁定信号Dma_lock拉高,同时对写入数据包进行记数,当记数大小等于迸发长度burst size时,即Wr_count=burst size=2n时,开启写完成信号Wr_last,表示一次AXI4 Stream迸发结束;
步骤10:写地址有效Axi_awvald应当在Wr_en期间被声明,直到Axi_wready声明被解除AXI的地址占用,即Axi_awvald在(Wr_req&(~Dma_lock)&~Axi_wready)时有效,为脉冲信号,否则写地址无效;当DDR3设置为Packet mode时,只需要在每次Wr_req有效时,打入一次数据包写入的初始地址即可;针对该数据包在下一次Wr_req有效时打入偏移地址Axi_awaddr+burstLength;burstLength大小为数据包一次迸发带宽,不小于2m;写地址有效Axi_wvalid应当在Wr_en器件就被声明,直到Wr_last有效才解除,为电平信号,其中Wr_req=Wr_req1||Wr_req2…||Wr_reqn。Wr_req1,Wr_req2,…,Wr_reqn,输出时统一转换为DDR3的写请求。
步骤11:同理AXI_AWADDR、AXI_WDATA写过程,同理完成AXI_ARADDR和AXI_RDATA等信号转换。
综上所述,本发明与现有技术相比,存在以下优势:
本发明提供的多组输入FIFO IN模块根据AXI4 Stream最小传输数据包数据位宽和数据包长度对多组输入视频信号进行数据重组;同时多组输入FIFO OUT模块能够将重组的迸发数据包还原成视频显示行场需要的输出数据包;不同于现有技术AXI Transfer对视频信号的数据进行重组或还原,减少了AXI Transfer运行的复杂度;本发明多组输入FIFOIN模块和多组输入FIFO OUT模块结合TV Controller FSM,将数据包分为数据流和控制流分成两路,分别进行数据包的编码和写或读的操作指令生成或转换;然后将数据和指令转换成AXI4 Stream总线格式;利用DDR实现对多路视频信号的缓存;即通过FIFO和DDR等存储资源实现了视频hs、vs和视频数据与AXI_AWADDR、AXI_WDATA等AXI4 stream信号的时序转换;能够独立于FPGA PS端单独运行,FPGA资源消耗小,有效实现视频信号到AXI4 Stream的时序控制,能够实现常规视频信号(如DVI、HDMI信号等)到Soc ZYNQ AXI4总线架构下视频控制信号的移植。
本发明提供了一种多路视频数据在单组DDR颗粒上的存储方法,结合AXI4 stream数据包Buad=2m(迸发位宽)×2n(迸发包长度)大小,通过视频流数据重组打包成数据块存储,有效实现多路视频源通过单组DDR资源进行行缓存方法,视频数据按照AXI4 Stream数据包带宽传输控制,由于存储大小比视频行缓存资源消耗要小得多,并且AXI4 Stream协议下数据传输规范稳定,该方法对DDR缓存资源进行精细控制,能够提高DDR存储资源利用率和数据传输质量。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于FPGA的多路视频信号缓存控制方法,其特征在于,包括以下步骤:
(1)根据输入视频源分辨率,将多组视频源的视频位宽转化为2k位进行多组数据重组生成多组输入数据包,并对每一数据包中的数据进行记数;
(2)对多组输入数据包进行优先级划分后,将多组输入数据包通过多组FIFO_IN单独缓存;
(3)当FIFO_IN中输入数据包的数据缓存量达到AXI4 Stream迸发量时启动DDR的写请求信号;同时对本次迸发的输入数据包与对应视频源进行编码;
(4)将编码后的输入数据包、写请求信号和有效写地址转换成AXI4Stream总线格式进行DDR写操作,完成对多组视频源的缓存;
(5)通过多组FIFO_OUT对多组视频源缓存输出,设置FIFO_OUT输出优先级,并对多组FIFO缓存数据量单独计数;
(6)当任意一组FIFO_OUT数据缓存量小于等于两倍迸发带宽的输出数据包时,启动DDR的读请求信号,结合Rd_last指令,依次从DDR读取输出数据包数据并解码后写入对应FIFO_OUT,输出视频位宽2k位的视频数据;
(7)从视频位宽2k位的视频数据中读出有效视频信息并显示,实现多路视频信号缓存控制;其中,k为正整数;所述输入数据包的位宽为2的指数次方倍。
2.根据权利要求1所述的多路视频信号缓存控制方法,其特征在于,所述步骤(4)中AXI4 Stream总线格式的转换方法为:
设置DDR为Packet mode模式,当DDR写请求开启后启动DDR写入使能,写地址有效被声明,DMA锁定信号Dma_lock拉高,占用DMA操作;
将编码后的输入数据包、视频行信号、视频场信号、写请求信号和有效写地址进行逻辑时序控制,最终转换成AXI4 Stream总线格式进行传输。
3.根据权利要求1或2所述的多路视频信号缓存控制方法,其特征在于,所述本次迸发的输入数据包的获取及更新方式为:
启动DDR的写请求信号后,根据视频信号所在FIFO_IN中视频通道的优先级,将FIFO_IN中的当前输出数据包作为本次AXI4 Stream迸发的输入数据包;
当对FIFO_IN中的当前输出数据包完成写操作时,接收写完成信号Wr_last,再读取FIFO_IN中其他视频通道的输出数据包更新本次AXI4 Stream迸发的输入数据包;
对同时输入的视频信号,将高优先级通道的输出数据包作为本次AXI4Stream迸发的输入数据包。
4.根据权利要求3所述的多路视频信号缓存控制方法,其特征在于,所述步骤(6)具体包括以下步骤:
(6.1)当任意一组FIFO_OUT缓存数据量小于等于两倍迸发带宽的输出数据包时,设置DDR为Packet mode,启动DDR读入使能,读地址有效被声明,DMA锁定信号Dma_lock拉高;
(6.2)结合读完成信号Rd_last,从DDR读取最高优先级输出数据包并解码后写入FIFO_OUT,输出视频位宽2k位的视频数据。
5.根据权利要求4所述的多路视频信号缓存控制方法,其特征在于,所述步骤(6.2)具体包括以下步骤:
当最高优先级输出数据包读操作完成时,发出读完成信号Rd_last,读取其他输出数据包中最高优先级的输入数据包。
6.根据权利要求2所述的多路视频信号缓存控制方法,其特征在于,
当设置DDR为Packet mode时,在每次写请求有效时,判断当前输入数据包的视频源通道编号wr_pointer,对首次写入的输入数据包生成初始地址;通过偏移地址进行多组输入数据包的连续写入;
写地址有效在写入使能期间被声明,直至写完成信号Wr_last有效时解除。
7.根据权利要求1所述的多路视频信号缓存控制方法,其特征在于,在对输入数据包写的阶段,对输入数据包与每路视频的编码方法为:
将输入数据包的写地址设置为wr_addr={wr_pointer,burst_number};其中,wr_addr为数据包的写地址;wr_pointer表示视频源通道ID;burst_number为数据包迸发数,第一次迸发时数值为0;加入偏移地址后,迸发地址为burst_addr=burst_number*burstLegeth;burstLegeth为AXI迸发长度;burst_number为迸发次数。
8.一种基于FPGA的多路视频信号缓存控制***,其特征在于,包括:
多组视频源接收模块,其输出端与多组输入FIFO IN模块的输入端连接,用于提供多路视频源;
所述多组输入FIFO IN模块,其与TV Controller FSM模块的双向相连,用于根据AXI4Stream最小传输数据包数据位宽和数据包长度对多组输入视频信号进行数据重组,生成多组输入数据包;并对输入数据包的数据进行记数;其中,多组输入视频信号为根据输入视频源分辨率,将多组视频源的视频位宽转化为2k位的视频信号;
所述TV Controller FSM模块,其与多组输入FIFO IN模块、多组输出FIFO OUT模块双向连接,且与DMA进行数据流的传输,与AXI transfer模块进行控制流的传输;用于对FIFO_OUT和FIFO_IN中不同通道的视频信号划分处理优先级,且监控多组FIFO_OUT和FIFO_IN的数据缓存量,当任意FIFO_OUT存储量小于等于两倍迸发带宽的输出数据时生成DDR读使能信号,启动DDR的读请求信号;当FIFO_IN的数据缓存量达到AXI4 Stream迸发量时启动DDR的写请求信号;并用于发送写完成信号和读完成信号;
DMA,其输出端与AXI transfer模块连接,对接收到的输入数据包和输出数据包分别与每路视频源进行重组编码;
AXI transfer模块,其输出端与AXI mig相连,用于将视频行、视频场与DDR读入使能、写入使能、有效写地址、有效读地址、输入数据包和输出数据包转换成AXI4 Stream总线格式;
AXI mig模块,用于提供AXI4接口的mig存储管理接口;
DDR存储模块,其为DDR存储颗粒格式;
所述多组输入FIFO OUT模块与TV Controller FSM模块的双向相连,用于将输出数据包还原成视频位宽为2k位的视频数据;并对输出数据包的存储量进行记数;
多组视频源发送模块,用于将视频位宽为2k位的视频数据还原出有效视频信息并显示;其中,k为正整数。
9.根据权利要求8所述的多路视频信号缓存控制***,其特征在于,所述AXI transfer模块包括写操作阶段的AXI transfer器件和读操作阶段的AXI transfer器件;
所述写操作阶段的AXI transfer器件用于当设置DDR为Packet mode时,DDR写请求开启后启动DDR写入使能,写地址有效被声明,DMA锁定信号Dma_lock拉高;
所述读操作阶段的AXI transfer器件用于当设置DDR为Packet mode时,DDR读请求开启后启动DDR读入使能,读地址有效被声明,DMA锁定信号Dma_lock拉高。
10.根据权利要求8或9所述的多路视频信号缓存控制***,其特征在于,所述DMA在对输入数据包写的阶段,对输入数据包与每路视频的编码方法为:将输入数据包的写地址设置为wr_addr={wr_pointer,burst_number};其中,wr_addr为数据包的写地址;wr_pointer表示视频源通道ID;burst_number为数据包迸发数,第一次迸发时数值为0;加入偏移地址后,迸发地址为burst_addr=burst_number*burstLegeth;burstLegeth为AXI迸发长度;burst_number为迸发次数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111479431.7A CN114302089A (zh) | 2021-12-06 | 2021-12-06 | 一种基于fpga的多路视频信号缓存控制方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111479431.7A CN114302089A (zh) | 2021-12-06 | 2021-12-06 | 一种基于fpga的多路视频信号缓存控制方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114302089A true CN114302089A (zh) | 2022-04-08 |
Family
ID=80964854
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111479431.7A Pending CN114302089A (zh) | 2021-12-06 | 2021-12-06 | 一种基于fpga的多路视频信号缓存控制方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114302089A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115086248A (zh) * | 2022-06-15 | 2022-09-20 | Oppo广东移动通信有限公司 | 数据包处理方法、通信芯片及计算机设备 |
-
2021
- 2021-12-06 CN CN202111479431.7A patent/CN114302089A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115086248A (zh) * | 2022-06-15 | 2022-09-20 | Oppo广东移动通信有限公司 | 数据包处理方法、通信芯片及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0870303B1 (en) | High performance universal multi-port internally cached dynamic random access memory system, architecture and method | |
CN112084136B (zh) | 队列缓存管理方法、***、存储介质、计算机设备及应用 | |
US20150074442A1 (en) | Reducing latency associated with timestamps | |
JP5335775B2 (ja) | 超広帯域無線システムにおいて要求されるスループットを低減するためのシステム、方法、およびコンピューター可読媒体 | |
WO1997024725A9 (en) | High performance universal multi-port internally cached dynamic random access memory system, architecture and method | |
US8576879B2 (en) | Communication system and method | |
US6920510B2 (en) | Time sharing a single port memory among a plurality of ports | |
CN102566958B (zh) | 一种基于sgdma的图像分割处理装置 | |
US7506081B2 (en) | System and method of maintaining high bandwidth requirement of a data pipe from low bandwidth memories | |
CN103841359A (zh) | 一种视频多画面合成方法、装置和*** | |
CN104038719A (zh) | 一种基于视频帧的超高清视频显示***及方法 | |
CN111601078A (zh) | 一种视频数据对地直传的星载视频压缩***及方法 | |
CN114302089A (zh) | 一种基于fpga的多路视频信号缓存控制方法及*** | |
CN116801051A (zh) | 一种图像数据接口转换方法及装置 | |
US7802031B2 (en) | Method and system for high speed network application | |
US20070288691A1 (en) | Data processing with data transfer between memories | |
JP2005084907A (ja) | メモリ帯域制御装置 | |
CN100361103C (zh) | 液晶电视***的可模块化配置的内存*** | |
US7911476B2 (en) | Mulitmedia data processing apparatus with reduced buffer size | |
US10637780B2 (en) | Multiple datastreams processing by fragment-based timeslicing | |
US20110153923A1 (en) | High speed memory system | |
CN113254387B (zh) | 数据缓存器、芯片、机器人、数据缓存方法 | |
CN1310498C (zh) | 数字视音频解码器 | |
CN113873251A (zh) | 一种地址分区管理的多通道全色多光谱图像压缩调度方法 | |
JP2010118058A (ja) | トリプル・バッファリングを使用するデータを処理する方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |