学网站开发的培训学校,社交网站推广怎么做,响应式网站和自适应网站,设计制作图片目录 1、前言免责声明 2、相关方案推荐FPGA图像缩放方案推荐FPGA视频拼接叠加融合方案推荐紫光同创FPGA图像采集方案推荐紫光同创FPGA图像缩放方案推荐紫光同创FPGA视频拼接方案推荐 3、设计思路框架为什么选择OV7725摄像头#xff1f;视频源选择OV7725摄像头配置及采集动态彩… 目录 1、前言免责声明 2、相关方案推荐FPGA图像缩放方案推荐FPGA视频拼接叠加融合方案推荐紫光同创FPGA图像采集方案推荐紫光同创FPGA图像缩放方案推荐紫光同创FPGA视频拼接方案推荐 3、设计思路框架为什么选择OV7725摄像头视频源选择OV7725摄像头配置及采集动态彩条缓冲FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择 HDMA图像缓存输入输出视频HDMA缓冲FIFOHDMA控制模块 HDMI输出 4、PDS工程详解5、上板调试验证并演示准备工作静态演示动态演示 6、福利工程源码获取 紫光同创FPGA 多路视频处理图像缩放视频拼接显示OV7725采集提供PDS工程源码和技术支持 1、前言
“苟利国家生死以岂因祸福避趋之”大洋彼岸的我优秀地下档员敏锐地洞察到祖国的短板在于高精尖半导体的制造领域于是本着为中华民族伟大复兴的中国梦贡献绵薄之力的初心懂先生站在高略高度和长远角度谋划宁愿背当代一世之骂名也要为祖国千秋万世谋2018年7月懂先生正式打响毛衣战随后又使出恰勃纸战术旨在为祖国先进制程半导体领域做出自主可控的战略推动在此请收下我一声谢谢啊
2019年初我刚出道时还是Xilinx遥遥领先的时代(现在貌似也是)那时的国产FPGA还处于辣鸡段位国产FPGA仰望Xilinx情不自禁道你以为躲在这里就找不到你吗没用的你那样拉轰的男人无论在哪里都像黑夜里的萤火虫那样的鲜明、那样的出众你那忧郁的眼神稀嘘的胡渣子神乎其技的刀法还有那杯Dry martine都深深的迷住了我。。。然而才短短4年如今的国产FPGA属于百家争鸣、百花齐放、八仙过海、神仙打架、方兴未艾、得陇望蜀、友商都是XX的喜极而泣之局面面对此情此景不得不吟唱老人家的诗句魏武挥鞭东临碣石有遗篇萧瑟秋风今又是换了人间。。。 言归正传目前对于国产FPGA的共识有以下几点 1性价比高与同级别国外大厂芯片相比价格相差几倍甚至十几倍 2自主可控国产FPGA拥有完整自主知识产权的产业链从芯片到相关EDA工具 3响应迅速FAE技术支持比较到位及时解决开发过程中遇到的问题毕竟中文数据手册。。 4采购方便产业链自主可控采购便捷
没玩过图像缩放和视频拼接都不好意思说自己玩儿过FPGA这是CSDN某大佬说过的一句话鄙人深信不疑。。。本文使用紫光同创的PGL22G-6MBG324 FPGA实现图像缩放多路视频拼接方案视频源有两种分别对应开发者手里有没有摄像头的情况一种是使用廉价的OV7725摄像头模组如果你得手里没有摄像头或者你得开发板没有摄像头接口则可使用代码内部生成的动态彩条模拟摄像头视频视频源的选择通过代码顶层的define宏定义进行上电默认使用OV7725作为视频源输入分辨率配置为640x48060HzFPGA采集到输入视频后使用纯verilog代码实现的图像缩放模块将输入视频从640x480缩放为640x720的分辨率之所以缩放为这个尺寸是因为输出分辨率为1280x720这样两路640x720视频做拼接刚好可以而分屏占满整个屏幕输出效果更为美观。。。将图像数据复制一份这样就有了两路一模一样的视频用来模拟两路视频输入如果你的手里有两个摄像头则直接输入两路即可原谅我太穷买不起两个OV7725摄像头只能这样模拟了。。。使用本人开发的HDMA视频缓存架构方案实现图像的乒乓缓存不同的视频缓存与DDR3中不同的地址区域读出视频时却一次性读完从而达到视频拼接的输出效果读出视频后用纯verilog显示的HDMI输出模块送显示器显示即可本设计提供1套Pango Design Suite 2021.4版本的工程源码
本博客详细描述了紫光同创FPGA 图像缩放多路视频拼接的设计方案工程代码可综合编译上板调试可直接项目移植适用于在校学生、研究生项目开发也适用于在职工程师做学习提升可应用于医疗、军工等行业的高速接口或图像处理领域 提供完整的、跑通的工程源码和技术支持 工程源码和技术支持的获取方式放在了文章末尾请耐心看到最后
免责声明
本工程及其源码即有自己写的一部分也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网等等)若大佬们觉得有所冒犯请私信批评教育基于此本工程及其源码仅限于读者或粉丝个人学习和研究禁止用于商业用途若由于读者或粉丝自身原因用于商业用途所导致的法律问题与本博客及博主无关请谨慎使用。。。
2、相关方案推荐
本工程是图像缩放和视频拼接的整合版在此之前我分别推出过FPGA图像缩放方案和FPGA视频拼接方案所以推荐如下
FPGA图像缩放方案推荐
该方案使用纯verilog代码实现任意尺寸图像缩放详细请参考我之前的博客博客链接如下 直接点击前往
FPGA视频拼接叠加融合方案推荐
我的主页目前有FPGA视频拼接叠加融合专栏改专栏收录了我目前手里已有的FPGA视频拼接叠加融合方案从实现方式分类有基于HSL实现的视频拼接、基于纯verilog代码实现的视频拼接从应用上分为单路、2路、3路、4路、8路、16路视频拼接视频缩放拼接视频融合叠加从输入视频分类可分为OV5640摄像头视频拼接、SDI视频拼接、CameraLink视频拼接等等以下是专栏地址 点击直接前往
紫光同创FPGA图像采集方案推荐
FPGA图像采集是做图像处理的基础FPGA图像采集显示的核心在于图像的DDR缓存紫光同创FPGA自带DDR控制器IP该IP带AXI4-FULL从机接口所以对于图像的DDR缓存就相对简单了我之前专门出过一篇紫光同创FPGA采集OV7725摄像头HDMI显示的博客感兴趣的可以前往查看以下是博客地址 点击直接前往
紫光同创FPGA图像缩放方案推荐
本设计使用紫光同创FPGA做图像的任意尺寸缩放我之前专门出过一篇紫光同创FPGA图像缩放方案的博客建议先仔细读读该博客以下是博客地址 点击直接前往
紫光同创FPGA视频拼接方案推荐
本设计使用紫光同创FPGA做视频拼接我之前专门出过一篇紫光同创FPGA图像缩放方案的博客建议先仔细读读该博客以下是博客地址 点击直接前往
3、设计思路框架
视频源有两种分别对应开发者手里有没有摄像头的情况一种是使用廉价的OV7725摄像头模组如果你得手里没有摄像头或者你得开发板没有摄像头接口则可使用代码内部生成的动态彩条模拟摄像头视频视频源的选择通过代码顶层的define宏定义进行上电默认使用OV7725作为视频源输入分辨率配置为640x48060HzFPGA采集到输入视频后使用纯verilog代码实现的图像缩放模块将输入视频从640x480缩放为640x720的分辨率之所以缩放为这个尺寸是因为输出分辨率为1280x720这样两路640x720视频做拼接刚好可以而分屏占满整个屏幕输出效果更为美观。。。将图像数据复制一份这样就有了两路一模一样的视频用来模拟两路视频输入如果你的手里有两个摄像头则直接输入两路即可原谅我太穷买不起两个OV7725摄像头只能这样模拟了。。。使用本人开发的HDMA视频缓存架构方案实现图像的乒乓缓存不同的视频缓存与DDR3中不同的地址区域读出视频时却一次性读完从而达到视频拼接的输出效果读出视频后用纯verilog显示的HDMI输出模块送显示器显示即可本设计提供1套Pango Design Suite 2021.4版本的工程源码
工程设计框图如下
为什么选择OV7725摄像头
紫光同创FPGA做图像缩放理论上可以选择使用任何摄像头作为视频输入源比如廉价的OV7725、OV5640等但紫光同创的PGL22G-6MBG324 FPGA PLL无法输出742.5M的时钟所以在开发板没有HDMI编码芯片的情况下紫光同创的PGL22G-6MBG324 FPGA最大只能输出1280X72060Hz的视频如果使用OV5640则不好做图像放大的试验因为OV5640的输出分辨率就已经达到了1280X720反观OV7725摄像头则很合适因为OV7725摄像头输出分辨率为640X48060Hz可以做图像缩放的放大试验放大到1280X72060Hz刚好达到紫光同创的PGL22G-6MBG324 FPGA的输出分辨率上线也可以做做图像缩放的缩小试验此外OV7725摄像头也更便宜。。。
视频源选择
视频源有两种分别对应开发者手里有没有摄像头的情况一种是使用廉价的OV7725摄像头模组如果你得手里没有摄像头或者你得开发板没有摄像头接口则可使用代码内部生成的动态彩条模拟摄像头视频视频源的选择通过代码顶层的define宏定义进行上电默认使用OV7725作为视频源视频源选择如下 视频源选择逻辑代码部分如下 选择逻辑如下 当(注释) define COLOR_IN时输入源视频是动态彩条 当(不注释) define COLOR_IN时输入源视频是OV7725
OV7725摄像头配置及采集
OV7725摄像头需要i2c配置才能使用需要将DVP接口的视频数据采集为RGB565或者RGB888格式的视频数据这两部分均用verilog代码模块实现代码位置如下 其中摄像头配置为分辨率640x480 摄像头采集模块支持RGB565和RGB888格式的视频输出可由参数配置如下 RGB_TYPE0输出本RGB565格式 RGB_TYPE1输出本RGB888格式 设计选择RGB888格式
动态彩条
动态彩条可配置为不同分辨率的视频视频的边框宽度动态移动方块的大小移动速度等都可以参数化配置以工程1为例配置为辨率640x480动态彩条模块代码位置和顶层接口和例化如下
缓冲FIFO
缓冲FIFO的作用是为了解决跨时钟域的问题当视频不进行缩放时不存在视频跨时钟域问题但当视频缩小或放大时就存在此问题用FIFO缓冲可以使图像缩放模块每次读到的都是有效的输入数据注意原视频的输入时序在这里就已经被打乱了
图像缩放模块详解
设计框图
本设计将常用的双线性插值和邻域插值算法融合为一个代码中通过输入参数选择某一种算法代码使用纯verilog实现没有任何ip可在Xilinx、Intel、国产FPGA间任意移植代码以ram和fifo为核心进行数据缓存和插值实现设计架构如下 视频输入时序要求如下 输入像素数据在dInValid和nextDin同时为高时方可改变 视频输出时序要求如下 输出像素数据在dOutValid 和nextdOut同时为高时才能输出
代码框图
代码使用纯verilog实现没有任何ip可在Xilinx、Intel、国产FPGA间任意移植 图像缩放的实现方式很多最简单的莫过于Xilinx的HLS方式实现用opencv的库以c语言几行代码即可完成关于HLS实现图像缩放请参考我之前写的文章HLS实现图像缩放 网上也有其他图像缩放例程代码但大多使用了IP导致在其他FPGA器件上移植变得困难通用性不好相比之下本设计代码就具有通用性代码架构如图 其中顶层接口部分如下
2种插值算法的整合与选择
本设计将常用的双线性插值和邻域插值算法融合为一个代码中通过输入参数选择某一种算法 具体选择参数如下
input wire i_scaler_type //0--bilinear;1--neighbor通过输入i_scaler_type 的值即可选择 输入0选择双线性插值算法 输入1选择邻域插值算法 关于这两种算法的数学差异请参考我之前写的文章HLS实现图像缩放
HDMA图像缓存
HDMA图像缓存的本质就是一个封装了用户接口的AXI4-FULL-MASTER总线HDMA对外与DDR3交互紫光同创FPGA自带的DDR3控制器的用户接口为AXI4-FULL总线HDMA对内例化两个FIFO与FPGA内部逻辑交互所以开发者在使用HDMA时已无需再关心复杂的为AXI4-FULL协议只需要像使用FIFO那样简单即可HDMA架构如下 代码架构如下
输入输出视频
输入视频的数据格式为RGB即典型的pclk、vs、de、rgb形式的VGA视频时序但需要注意的是因为输入视频直接与FIFO交互FIFO的AXI侧的数据位宽为128位为了数据的不错位输入视频的rgb信号接口不能为传统的24位这里可以设置为16或者32位代码中通过参数配置我配置为32位相比于之前的HDMA这里增加了一路视频输入接口如下
HDMA缓冲FIFO
例化两个FIFO作为FPGA逻辑数据与AXI4数据的缓冲所谓缓冲即数据位宽的转换、时钟域的转换、读写时机的控制等部分FPGA逻辑侧的数据位宽为32位AXI4侧的数据位宽为128位以写FIFO为例配置如下
HDMA控制模块
HDMA控制模块的主要功能是实现AXI4-FULL主机和图像缓存读写地址切换两大功能AXI4-FULL主机比较简单照着AXI4-FULL时序图写就完事儿了图像缓存读写地址切换就难了本设计通过顶层的参数来配置图像缓存的帧数如下 HDMA_PINGPANG_EN1则图像做两帧乒乓缓存 HDMA_PINGPANG_EN0则图像做单帧缓存 本设计配置为HDMA_PINGPANG_EN1 为了实现2路视频的多帧缓存在DDR3中开辟了4片内存区域如下 内存1和内存2用于第一路输入视频的乒乓缓存 内存3和内存4用于第二路输入视频的乒乓缓存 我们需要做的是控制两路视频分别写入对应的内存区域即可这样就实现了不同的视频缓存于不同的内存区域但读视频时却一次性读完然后一次性输出到显示器这样就达到了两路视频拼接二分频现实的效果这里代码层面更为清晰具体请参考代码
HDMI输出
HDMI输出包括VGA时序和HDMI编码模块VGA时序在紫光PGL22G-6MBG324 FPGA上只能做到720P因为此FPGA可能太低端了无法输出742.5M的串行时钟当然你用HDMI编码芯片是可以实现1080P的所以这里只能做到720P的输出分辨率HDMI编码模块待用原语实现和Xilinx家的一样代码结构如下
4、PDS工程详解
开发板FPGA型号紫光同创–PGL22G-6MBG324 开发环境Pango Design Suite 2021.4 输入OV7725摄像头或动态彩条分辨率640x480 输出HDMI分辨率1280x720下二分屏显示两路640x720缩放拼接视频 工程作用紫光同创FPGA 多路视频处理图像缩放视频拼接显示 工程代码架构如下 工程的资源消耗如下 工程已经综合编译完成如下
5、上板调试验证并演示
准备工作
你需要有以下装备才能移植并测试该工程代码 1FPGA开发板 2OV7725摄像头如果没有也可以就选择动态彩条 3HDMI传输线 4HDMI显示要求分辨率支持1280x720
静态演示
OV7725输入640x480分辨率两路视频缩放拼接HDMI输出静态演示如下 动态彩条输入640x480分辨率两路视频缩放拼接HDMI输出静态演示如下
动态演示
动态视频演示如下 紫光同创FPGA-OV7725-图像缩放拼接 6、福利工程源码获取
福利工程代码的获取 代码太大无法邮箱发送以某度网盘链接方式发送 资料获取方式私或者文章末尾的V名片。