基于Vivado HLS的Down Scaler视频系统设计

摘要:介绍一种基于fpga的 down scaler视频系统设计。系统的核心部件采用xilinx kintex-7的板载xc7k325t 芯片,系统设计使用vivado工具,包括使用vivado hls进行down scaler模块设计。首先按照vivado hls的代码规范进行down scaler模块的c/c++代码编写,然后利用编译工具生成rtl级代码和综合结果down scaler ip核,最后将down scaler ip核与tpg、vdma等xilinx视频ip核互连,构建实时视频系统。在满足实时性要求和fpga资源消耗要求的条件下,该设计实现了对down scaler视频算法从pc端软件处理方式向fpga平台硬件处理方式的移植。
引言
在电子设计自动化领域,高层次综合工具变得越来越受欢迎,其能够将c/c++、systemc 、matlab等高级语言的函数转译成rtl级的代码,这一功能将数字电路设计的抽象层进一步提升。随着嵌入式系统复杂程度的增加,高层次综合工具开始深入电子系统尤其是嵌入式系统的设计流程。本文介绍一种基于xilinx公司的高层次综合工具vivado hls的down scaler视频系统设计。
1高层次综合概述
在过去20年,占主导地位的电子设计流程中,硬件设计人员需要手工完成从系统功能指标到rtl级代码的所有工作。如今,这样的设计流程开始变得困难,因为越来越多的功能可以被集成在一个芯片上,按照传统的设计流程,开发人员独自一人完成所有的功能变得越发困难,但因为设计功能的增多而增加设计团队的人员数量,从经济角度上看是不可行的,这意味着设计生产率必须有所提高。高层次综合能够通过从算法层到rtl层的自动化来提高设计生产率,从图1(b)中可以看到,应用高层次综合,系统设计从功能指标到自动化设计流程开端的距离缩短了。
在设计流程中,应用高层次综合工具能够给设计工作带来以下便利:首先,需要设计人员编写的代码量显著减少,在缩短开发周期的同时降低了错误率。其次,在如今的产品开发过程中,验证所需的时间往往超过设计的时间,使用高层次综合工具能够缩短验证时间,在高层次综合工具生成设计代码的同时,还能够同时生成测试平台代码,可以直接通过测试数据来验证设计代码是否正确。
2down scaler模块设计
传统的down scaler运算是在pc架构下进行的,以汤姆逊视频网络公司的产品 thvn vs7000为例,其中的 down scaler模块是pc服务器中的一个c++应用程序,在进行运算处理前,视频流的获取通过一块 black magic板卡来实现,其接收到的每一帧图像的像素信息通过pcie传输到pc服务器。服务器首先将像素信息存储在3个不用的内存空间y、u、v,之后应用程序down scaler对这3个空间的像素信息进行运算处理。本文描述的设计目标是使用fpga中的一个down scaler ip核实现对视频流的“硬件处理”,代替传统pc端的down scaler c++程序对图像进行“软件处理”的方案,从而取消完整帧像素信息y、u、v成分的预储存步骤。
2.1 模块参数要求
视频的缩小比例为2/3,像素的相位数为2,根据相位数、亮度色度、水平竖直的不同情况,共计有8个滤波窗,每个滤波窗包含11个参数,由 lanczos算法提前计算确定,“镜像”处理针对图像边缘的5个像素点进行。
2.2 模块设计关键点
2.2.1 计算单元
根据参数要求,down scaler模块包括两种bram计算单元,分别是window和linebuffer。 window是一个一维存储空间,用来存储11个像素点,linebuffer是一个二维存储空间,用来存储11行像素点。linebuffer在每一个工作频率上接收新的输入像素,之前的像素在每一个工作频率上向存储空间的下方移动一个位置,即最新接收的像素点总是存储在linebuffer中的初始位置。当linebuffer填满后,downscaling运算开始,即通过window 存储11个采样像素,并对像素信息进行滤波运算。相比存储一帧完整图像后再进行运算的“软件处理”方式,通过使用linebuffer和window作为“硬件处理”方式的存储单元大幅降低了模块对存储空间的需求。“软件处理”和“硬件处理”down scaler模块的计算单元大小对比如表1所列。
2.2.2 像素信息计算和镜像运算整合
与传统down scaler算法对像素分量y、u、v进行区分后再做镜像、滤波运算不同,本文中的down scaler对输入的像素点信息直接进行镜像和滤波运算,这样做是为了简化ip结构,更好地适应 axi4-stream协议[2]。另外,传统down scaler算法包含4个串行过程,分别是水平镜像、水平缩小、竖直镜像和竖直缩小,使用vivado hls工具的 dataflow模式将串行过程并行执行后,在不改变模块工作频率的条件下,只能够满足对 1920x1080p/25fps的视频进行实时运算。为了进一步提高运算性能,需要进一步降低运算过程之间的数据依赖性。新的算法只包含两个缩小过程,即水平缩小和竖直缩小,镜像运算被整合在缩小运算中,并且只在需要的时刻进行。对镜像运算的整合虽然增加了算法编写的复杂程度,但是缩短了过程间的数据传输链路,使设计最终能够达到性能参数要求,满足对1920x1080p/60fps的视频进行实时运算。
3 视频系统设计
3.1 系统参数要求
输入视频流为全高清视频、1920x1080p/60fps、yuv4:4:4 格式,输出视频流为高清视频、1080x720p/60fps、yuv4:4:4格式,要求down scaler模块的工作频率等于输入视频像素频率,即 148.5mhz。
3.2 down scaler视频系统搭建
实时视频系统架构可以分为两大类,一类是不含帧缓存模块的系统,另一类是包含帧缓存模块的系统,本文中的down scaler视频系统属于第二类架构。
根据图2所示的系统架构,使用 ip integrator 搭建的down scaler视频系统,该系统用到以下ip核:
①test pattern generator [3]——xilinx ip核,用来产生不同格式的输入视频流;
② down scaler——vivado hls生成的ip核
③ axi video direct memory access [4]、axi interconnect [5]、mig 7series [6]——xilinx ip核用来在ddr内存中构建帧缓存器;
④ clocking wizard [7] xilinx ip核,用来生成系统时钟信号;
⑤ proc sys reset——xilinx ip核,用来生成系统重置信号;
⑥ video in to axi4-s [8]、axi4-s to video out [9]———xilinx ip核,用来进行 axi4-stream和视频协议转换;
⑦ vtc (video timing coneroller [10]——xilinx ip核,用来检测输入视频时钟周期和产生输出视频时钟周期。
至此,一个基于vivado hls的down scaler视频系统设计完成。
结 语
本设计选取xilinx kintex-7评估板作为开发平台,使用高层次综合工具vivado hls进行down scaler模块的设计、仿真和验证,使用vivado进行实时视频系统构建,在满足实时性要求和fpga资源消耗要求下,实现了对down scaler视频算法从pc端软件处理向fpga平台硬件处理的移植。经测试,由tpg生成的1080p视频流经过本文设计的down scaler系统,成功输出了720p视频流,down scaler的性能满足了设计要求。
随着系统设计和算法日益复杂,新的设计方法———高层次综合开始出现并将逐渐取代传统的硬件系统设计方法,成为系统设计的主流方式。未来的设计者可以从算法的角度直接下降到硬件平台来完成硬件开发,对于复杂的算法,这一方法将大幅缩短开发周期,显著降低代码量,同时也为算法工程师和软件工程师打开了硬件设计的大门。

tda3654代换
华灿光电股权变动频繁,Mini LED成长在即
意法半导体STM32CubeIDE支持高效 RTOS 开发
关于led广告电子屏,它未来发展的趋势怎么样
台积五纳米最快今年动工 2020年量产
基于Vivado HLS的Down Scaler视频系统设计
简单实用的电梯停电报警电路
传感器产业凸显“空心化”, 国产传感器机遇与挑战并存
fireflyROC-RK3328主板PC Adb简介
2013年中国汽车里程碑:产量或首超欧洲
安捷伦N8975A噪声分析仪
激光电视的关注度与日俱增 大势所趋已成定局
IR新型Gen2.1 SupIRBuck集成稳压器为数据中心
新型OSLON® Compact PL LED问世,助力汽车前照灯制造商降低系统成本
AIoT不断发展将不只是一个科技流行语
5G时代的车联网运营,5G车联网特征
一场针对5G网络安全的会议,并达成了一个“华为将永远无法满足”的决策
污水处理的SCADA控制系统介绍
魅族黑科技,全球首款屏幕下指纹识别手机,超越苹果
研发支出近华为两倍,亚马逊砸钱凶猛