一种基于fpga的高速、可变帧视频显存设计方法
【专利摘要】本发明公开了一种基于FPGA的高速、可变帧视频显存设计方法,包括如下步骤:视频源端开始发送视频源数据,DDR存储器初始化完成,前端异步FIFO接收数据,前端异步FIFO缓存的数据量到达阈值时前端异步FIFO数据写入DDR存储器,DDR存储器数据存满一帧时DDR存储器读出数据到后端异步FIFO,后端异步FIFO数据量到达阈值时启动点屏模块将数据送入屏幕;其中,DDR存储器内部的存储地址空间按单帧图像大小划分成三块区域分别记为A、B、C,通过DDR控制器控制DDR存储器的读写操作在A、B、C三块区域之间单次交替进行。优点:可对各种视频信号进行缓存、高效传输和变帧等灵活处理。
【专利说明】-种基于FPGA的高速、可变帧视频显存设计方法
【技术领域】
[0001] 本发明涉及一种基于FPGA的高速、可变帧视频显存设计方法。
【背景技术】
[0002] 现场可编程逻辑器件FPGA以其高速的处理速度,灵活的设计方式已被广泛的应 用于各种工程设计中,而DDR存储器作为FPGA平台下的功能模块,凭借其高速的处理能力 使其在视频显存解决方案上取得了长足的发展。随着电子技术的高速发展,显示设备的功 能越来越多样化,传输的信息量也越来越大,以往的视频显存设计方案都难以应对现如今 多样化的功能需求,而FPGA以其高速、灵活的设计方式,正迎合了这种发展需要。
【发明内容】
[0003] 本发明的目的在于克服现有技术的不足,提供了一种基于FPGA的高速、可变帧视 频显存设计方法,该设计方法通过DDR控制器来控制DDR存储器完成视频的缓存、传输和变 帧处理,可对DDR存储器有限带宽内的各种视频信号进行高效传输和变帧等灵活处理。
[0004] 本发明是通过以下技术方案实现的:
[0005] -种基于FPGA的高速、可变帧视频显存设计方法,包括如下步骤:
[0006] A、利用现场可编程逻辑器件FPGA将视频源及屏幕连接起来,其中PFGA内设置有 DDR存储器、控制DDR存储器的DDR控制器、以及分别连接DDR存储器输入端和输出端的前 端异步FIFO和后端异步FIFO ;
[0007] B、视频源端开始发送视频源数据,同时进行DDR存储器初始化操作;
[0008] C、DDR存储器初始化完成后,DDR存储器开始检测视频源数据的帧头,当发现某一 帧的帧头后开始接收视频源数据进入前端异步FIFO中;
[0009] D、当前端异步FIFO缓存的数据量到达阈值后开始发送握手信号通知DDR控制器 进行数据读取,其中前端异步FIFO的阈值为DDR存储器单次突发的读写数据量;
[0010] E、DDR存储器收到握手信号后开始从前端异步FIFO中读取并写入数据,DDR存储 器内部的存储地址空间按单帧图像大小划分成三块区域分别记为A、B、C,每块区域为一帧 图像大小;当判断出DDR存储器接收了一个帧的数据后开始读操作,将读出的数据送入后 端异步FIFO中缓存;通过DDR控制器控制DDR存储器的读写操作在A、B、C三块区域之间单 次交替进行,通过协调单位时间内DDR存储器读和写的次数来平衡前后端的数据传输量;
[0011] F、当后端异步FIFO缓存的数据量到达阈值后,启动点屏模块,从后端异步FIFO里 取出数据发送给屏幕,后端异步FIFO的阈值为DDR存储器单次突发的读写数据量;其中,读 取DDR存储器的A、B、C任一地址空间帧图像的速度是根据后端点屏模块送入屏幕的点屏数 据送出速度来决定的,根据需要通过DDR控制器控制点屏帧率高于或低于前端视频源的帧 率;
[0012] 上述方法需遵循:视频源每秒数据传输量+点屏模块送入屏幕每秒数据传输量 〈DDR存储器每秒实际处理带宽,且视频源每秒进入DDR存储器数据量和每秒读出DDR存储 器数据量分别不能超过DDR存储器每秒处理能力的一半。
[0013] 作为上述技术方案的优选实施方式,所述步骤E、F中,当选择提高点屏帧率时, DDR存储器数据读取速度会快于写入速度,当第一帧数据进入DDR存储器时,首先写入A地 址空间,当A地址空间写完一帧数据后,开始将到来的第二帧数据写入B地址空间,这时A 地址空间内的图像数据可以读出送入后端异步FIFO中等待点屏模块送入屏幕,当A地址空 间读取完一帧图像,而B地址空间还没有写满一帧数据时,从A地址空间再次调取这帧数据 送出,根据需要重复这个过程多次,直至B地址空间写入完第二帧进入图像;若B地址空间 已写入完第二帧进入图像,而A地址空间还没有读完一帧数据,这时A地址空间还在被占 用,而B地址空间刚写入完当前帧的数据,这时视频源的数据将开始写入C地址空间;而当 A地址空间读完这一帧数据后,检测到B地址空间已经写入完一帧数据,进而跳转到B地址 空间进行数据读取,这时就形成了 B读取、C写入的状态,这等同于A读取、B写入时的状态, 如此循环即可达到提高点屏帧率的效果。
[0014] 作为上述技术方案的优选实施方式,所述步骤E、F中,当选择降低点屏帧率时,需 要在DDR存储器写入时先把A和B地址空间分别写入完一帧数据,然后再写入C地址空间的 同时,开始从A地址空间进行第一帧的读取操作,优先等待A地址空间读完一帧跳转后,写 入才跳转到A地址空间进行;此时开始B地址空间第二帧的读取操作,优先等待B地址空间 读完一帧跳转后,写入才跳转到B地址空间进行;此时开始C地址空间第三帧的读取操作, 优先等待C地址空间读完一帧跳转后,写入才跳转到C地址空间进行,如此循环即可达到降 低点屏帧率的效果。
[0015] 作为上述技术方案的优选实施方式,所述步骤E中,DDR存储器会出现四种可能的 情况:(1)当前端异步FIFO数据存储未达到阈值,后端异步FIFO数据存储达到阈值,这时 DDR存储器不需要进行读写操作,为空闲时期;(2)当前端异步FIFO数据存储达到阈值,而 后端异步FIFO数据存储也达到阈值,这时DDR存储器只需要进行写入操作即可;(3)当前 端异步FIFO数据存储未达到阈值,后端异步FIFO存储也未达到阈值,这时DDR存储器只 需要进行读出操作即可;(4)当前端异步FIFO数据存储达到阈值,后端异步FIFO未达到阈 值,这时是DDR存储器最忙的时候,读和写都需要进行操作;此时DDR控制器控制DDR存储 器采取读写单次交替进行的方式进行协调,直到跳出这种忙状态。
[0016] 作为上述技术方案的优选实施方式,所述步骤E中,DDR存储器内的A、B、C三块区 域为三块独立地址空间或三块连续地址空间。
[0017] 作为上述技术方案的优选实施方式,所述DDR存储器读取带宽大于点屏模块的送 屏带宽,当出现后端异步FIFO快满的时候,DDR控制器控制DDR存储器停止读取操作等待 点屏模块将后端异步FIFO中的数据送出到屏幕,从而达到动态平衡。
[0018] 本发明相比现有技术具有以下优点:
[0019] (l)DDR控制器提供了简单的视频帧率转换功能,可以实现在DDR存储器有效带宽 内高帧率转为低帧率或低帧率转为高帧率的视频输出。
[0020] ⑵在DDR存储器前端和后端分别设置有前端异步FIFO和后端异步FIFO,使得 FIFO的输入时钟和输出时钟可以完全异步,由于视频源发送的视频源数据流与DDR存储器 写入数据流的快慢存在不一致的情况,通过前端异步FIFO来进行协调以保证前端数据不 会因为DDR存储器的操作流程而丢失;同样,后端异步FIFO是为了协调DDR存储器读取带 宽和点屏模块的送屏带宽之间的数据量关系;以使整个过程达到稳定的动态平衡,同时为 DDR存储器提供了灵活的数据接口。
[0021] (3)本方法中,视频源每秒数据传输量+点屏模块送入屏幕每秒数据传输量〈DDR 存储器每秒实际处理带宽,且视频源每秒进入DDR存储器数据量和每秒读出DDR存储器数 据量分别不能超过DDR存储器每秒处理能力的一半,且对前端异步FIFO和后端异步FIFO 均设置了下限的阈值,有效防止了前端异步FIFO出现满溢出以及防止了后端异步FIFO出 现空溢出。
[0022] (4)通过DDR控制器控制DDR存储器的读写操作在A、B、C三块区域之间单次交替 进行,通过协调单位时间内DDR存储器读和写的次数来平衡前后端的数据传输量,从而保 证了数据的稳定传输,且DDR存储器传输速率高。
【专利附图】
【附图说明】
[0023] 图1是本发明的视频显存设计方法流程图。
[0024] 图2是本发明的视频显存设计框图。
【具体实施方式】
[0025] 下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行 实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施 例。
[0026] 请参见图1、图2,本实施例提供的一种基于FPGA的高速、可变帧视频显存设计方 法,包括如下步骤:
[0027] A、利用现场可编程逻辑器件FPGA将视频源及屏幕连接起来,其中PFGA内设置有 DDR存储器、控制DDR存储器的DDR控制器、以及分别连接DDR存储器输入端和输出端的前 端异步FIFO和后端异步FIFO ;
[0028] B、视频源端开始发送视频源数据,同时进行DDR存储器初始化操作;
[0029] C、DDR存储器在上电时需要进行配置和校验等一系列操作,这将占用大概200us 以上的操作时间,等到DDR存储器初始化完成后,DDR存储器开始检测视频源数据的帧头, 当发现某一帧的帧头后开始接收视频源数据进入前端异步FIFO中;
[0030] D、当前端异步FIFO缓存的数据量到达阈值后开始发送握手信号通知DDR控制器 进行数据读取,由于DDR存储器读取数据速度相对于视频源进入数据的速度来说要快,因 此需给前端异步FIFO设置一个存储下限的阈值,保证前端异步FIFO不会空溢出,其中前端 异步FIFO的阈值为DDR存储器单次突发的读写数据量;
[0031] E、DDR存储器收到握手信号后开始从前端异步FIFO中读取并写入数据,DDR存储 器内部的存储地址空间按单帧图像大小划分成三块区域分别记为A、B、C,每块区域为一帧 图像大小;当判断出DDR存储器接收了一个帧的数据后开始读操作,将读出的数据送入后 端异步FIFO中缓存;通过DDR控制器控制DDR存储器的读写操作在A、B、C三块区域之间单 次交替进行,通过协调单位时间内DDR存储器读和写的次数来平衡前后端的数据传输量;
[0032] F、当后端异步FIFO缓存的数据量到达阈值后,启动点屏模块,从后端异步FIFO里 取出数据发送给屏幕,后端异步FIFO的阈值为DDR存储器单次突发的读写数据量;其中,读 取DDR存储器的A、B、C任一地址空间帧图像的速度是根据后端点屏模块送入屏幕的点屏数 据送出速度来决定的,根据需要通过DDR控制器控制点屏帧率高于或低于前端视频源的帧 率;
[0033] 上述方法中需遵循:视频源每秒数据传输量+点屏模块送入屏幕每秒数据传输量 〈DDR存储器每秒实际处理带宽,且视频源每秒进入DDR存储器数据量和每秒读出DDR存储 器数据量分别不能超过DDR存储器每秒处理能力的一半,这是为了防止前端异步FIFO出现 满溢出和防止后端异步FIFO出现空溢出。
[0034] 其中,步骤E、F中,当选择提高点屏帧率时,DDR存储器数据读取速度会快于写入 速度,当第一帧数据进入DDR存储器时,首先写入A地址空间,当A地址空间写完一帧数据 后,开始将到来的第二帧数据写入B地址空间,这时A地址空间内的图像数据可以读出送入 后端异步FIFO中等待点屏模块送入屏幕,当A地址空间读取完一帧图像,很可能B地址空 间还没有写满一帧数据时,这时可从A地址空间再次调取这帧数据送出,根据需要重复这 个过程多次,这跟提帧的比率有关,而由于提帧的比率可能不是整数比,例如从25帧提到 60帧,这就会导致B地址空间写入完第二帧进入图像时,A地址空间还没有读完一帧数据, 这时A地址空间还在被占用,而B地址空间刚写入完当前帧的数据,因此需要开辟C地址空 间来协调这个关系,这时视频源的数据将开始写入C地址空间;而当A地址空间读完这一帧 数据后,检测到B地址空间已经写入完一帧数据,进而跳转到B地址空间进行数据读取,这 时就形成了 B读取、C写入的状态,这等同于A读取、B写入时的状态,如此循环即可达到提 高点屏帧率的效果。
[0035] 其中,步骤E、F中,当选择降低点屏帧率时,DDR存储器数据读取速度会慢于写入 速度,需要在DDR存储器写入时先把A和B地址空间分别写入完一帧数据,然后再写入C地 址空间的同时,开始从A地址空间进行第一帧的读取操作,优先等待A地址空间读完一帧跳 转后,写入才跳转到A地址空间进行;此时开始B地址空间第二帧的读取操作,优先等待B 地址空间读完一帧跳转后,写入才跳转到B地址空间进行;此时开始C地址空间第三帧的读 取操作,优先等待C地址空间读完一帧跳转后,写入才跳转到C地址空间进行,如此循环即 可达到降低点屏帧率的效果。
[0036] 步骤E中,DDR存储器内的A、B、C三块区域可以是三块连续地址空间,也可以是三 块独立的地址空间。连续地址空间比较节省地址空间,提高存储空间的利用率,但是程序中 三块区域的起始地址需要进行计算得到,而且为固定位置,继承性不强;而独立地址空间虽 然便于修改但是比较占用地址空间,对于存储空间较小的DDR存储器不适用;因此可根据 DDR存储器的存储空间来自行选择。运行过程中,DDR存储器会出现四种可能的情况:(1)当 前端异步FIFO数据存储未达到阈值,后端异步FIFO数据存储达到阈值,这时DDR存储器不 需要进行读写操作,为空闲时期;(2)当前端异步FIFO数据存储达到阈值,而后端异步FIFO 数据存储也达到阈值,这时DDR存储器只需要进行写入操作即可;(3)当前端异步FIFO数 据存储未达到阈值,后端异步FIFO存储也未达到阈值,这时DDR存储器只需要进行读出操 作即可;(4)当前端异步FIFO数据存储达到阈值,后端异步FIFO未达到阈值,这时是DDR存 储器最忙的时候,读和写都需要进行操作;此时DDR控制器控制DDR存储器采取读写单次交 替进行的方式进行协调,直到跳出这种忙状态。
[0037] 步骤F中,后端异步FIFO也是为了协调DDR存储器读取带宽和点屏模块的送屏带 宽之间的数据量关系。DDR存储器读取带宽大于点屏模块的送屏带宽,为了防止出现点屏模 块送屏时后端异步FIFO内没有数据可送的情况,当出现后端异步FIFO快满的时候,DDR控 制器控制DDR存储器停止读取操作等待点屏模块将后端异步FIFO中的数据送出到屏幕,从 而达到动态平衡。
[0038] 以上仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和 原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【权利要求】
1. 一种基于FPGA的高速、可变帧视频显存设计方法,其特征在于,包括如下步骤: A、 利用现场可编程逻辑器件FPGA将视频源及屏幕连接起来,其中PFGA内设置有DDR 存储器、控制DDR存储器的DDR控制器、以及分别连接DDR存储器输入端和输出端的前端异 步FIFO和后端异步FIFO ; B、 视频源端开始发送视频源数据,同时进行DDR存储器初始化操作; C、 DDR存储器初始化完成后,DDR存储器开始检测视频源数据的帧头,当发现某一帧的 帧头后开始接收视频源数据进入前端异步FIFO中; D、 当前端异步FIFO缓存的数据量到达阈值后开始发送握手信号通知DDR控制器进行 数据读取,其中前端异步FIFO的阈值为DDR存储器单次突发的读写数据量; E、 DDR存储器收到握手信号后开始从前端异步FIFO中读取并写入数据,DDR存储器内 部的存储地址空间按单帧图像大小划分成三块区域分别记为A、B、C,每块区域为一帧图像 大小;当判断出DDR存储器接收了一个帧的数据后开始读操作,将读出的数据送入后端异 步FIFO中缓存;通过DDR控制器控制DDR存储器的读写操作在A、B、C三块区域之间单次 交替进行,通过协调单位时间内DDR存储器读和写的次数来平衡前后端的数据传输量; F、 当后端异步FIFO缓存的数据量到达阈值后,启动点屏模块,从后端异步FIFO里取出 数据发送给屏幕,后端异步FIFO的阈值为DDR存储器单次突发的读写数据量;其中,读取 DDR存储器的A、B、C任一地址空间帧图像的速度是根据后端点屏模块送入屏幕的点屏数 据送出速度来决定的,根据需要通过DDR控制器控制点屏帧率高于或低于前端视频源的帧 率; 上述方法需遵循:视频源每秒数据传输量+点屏模块送入屏幕每秒数据传输量〈DDR存 储器每秒实际处理带宽,且视频源每秒进入DDR存储器数据量和每秒读出DDR存储器数据 量分别不能超过DDR存储器每秒处理能力的一半。
2. 如权利要求1所述的一种基于FPGA的高速、可变帧视频显存设计方法,其特征在于, 所述步骤E、F中,当选择提高点屏帧率时,DDR存储器数据读取速度会快于写入速度,当第 一帧数据进入DDR存储器时,首先写入A地址空间,当A地址空间写完一帧数据后,开始将 到来的第二帧数据写入B地址空间,这时A地址空间内的图像数据可以读出送入后端异步 FIFO中等待点屏模块送入屏幕,当A地址空间读取完一帧图像,而B地址空间还没有写满一 帧数据时,从A地址空间再次调取这帧数据送出,根据需要重复这个过程多次,直至B地址 空间写入完第二帧进入图像;若B地址空间已写入完第二帧进入图像,而A地址空间还没有 读完一帧数据,这时A地址空间还在被占用,而B地址空间刚写入完当前帧的数据,这时视 频源的数据将开始写入C地址空间;而当A地址空间读完这一帧数据后,检测到B地址空间 已经写入完一帧数据,进而跳转到B地址空间进行数据读取,这时就形成了 B读取、C写入 的状态,这等同于A读取、B写入时的状态,如此循环即可达到提高点屏帧率的效果。
3. 如权利要求1所述的一种基于FPGA的高速、可变帧视频显存设计方法,其特征在于, 所述步骤E、F中,当选择降低点屏帧率时,需要在DDR存储器写入时先把A和B地址空间分 别写入完一帧数据,然后再写入C地址空间的同时,开始从A地址空间进行第一帧的读取操 作,优先等待A地址空间读完一帧跳转后,写入才跳转到A地址空间进行;此时开始B地址 空间第二帧的读取操作,优先等待B地址空间读完一帧跳转后,写入才跳转到B地址空间进 行;此时开始C地址空间第三帧的读取操作,优先等待C地址空间读完一帧跳转后,写入才 跳转到C地址空间进行,如此循环即可达到降低点屏帧率的效果。
4. 如权利要求1至3任一所述的一种基于FPGA的高速、可变帧视频显存设计方法,其 特征在于,所述步骤E中,DDR存储器会出现四种可能的情况:(1)当前端异步FIFO数据存 储未达到阈值,后端异步FIFO数据存储达到阈值,这时DDR存储器不需要进行读写操作, 为空闲时期;(2)当前端异步FIFO数据存储达到阈值,而后端异步FIFO数据存储也达到阈 值,这时DDR存储器只需要进行写入操作即可;(3)当前端异步FIFO数据存储未达到阈值, 后端异步FIFO存储也未达到阈值,这时DDR存储器只需要进行读出操作即可;(4)当前端 异步FIFO数据存储达到阈值,后端异步FIFO未达到阈值,这时是DDR存储器最忙的时候, 读和写都需要进行操作;此时DDR控制器控制DDR存储器采取读写单次交替进行的方式进 行协调,直到跳出这种忙状态。
5. 如权利要求4所述的一种基于FPGA的高速、可变帧视频显存设计方法,其特征在于, 所述步骤E中,DDR存储器内的A、B、C三块区域为三块独立地址空间或三块连续地址空间。
6. 如权利要求5所述的一种基于FPGA的高速、可变帧视频显存设计方法,其特征在于, 所述DDR存储器读取带宽大于点屏模块的送屏带宽,当出现后端异步FIFO快满的时候,DDR 控制器控制DDR存储器停止读取操作等待点屏模块将后端异步FIFO中的数据送出到屏幕, 从而达到动态平衡。
【文档编号】H04N7/01GK104125424SQ201410384239
【公开日】2014年10月29日 申请日期:2014年8月6日 优先权日:2014年8月6日
【发明者】王杰, 徐涵 申请人:中航华东光电(上海)有限公司