用户名
Email
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
帖子
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
数据库
›
SQL-Server
›
FPGA实现MIPI转FPD-Link视频传输+图像缩放,基于IMX327+ ...
FPGA实现MIPI转FPD-Link视频传输+图像缩放,基于IMX327+FPD953架构,提供工 ...
兜兜零元
论坛元老
|
2024-12-28 00:05:40
|
显示全部楼层
|
阅读模式
楼主
主题
1763
|
帖子
1763
|
积分
5289
FPGA实现MIPI转FPD-Link视频传输+图像缩放,基于IMX327+FPD953架构,提供工程源码和技术支持
1、前言
现在新能源汽车、自动驾驶已成为我国在工业革命海潮中弯道超车的赛道,而车载视频传输对长距离、低延时、稳定性、可靠性要求极高,FPFA在车载自动驾驶图传解决方案中理应占有一席之地;本设计基于FPGA为平台,搭建IMX327+FPD953+FPD954的MIPI转FPD-Link车载同轴视频传输架构,该方案已在某大型项目中得到可靠应用,具有极高的参考代价;
工程概述
本设计基于Xilinx的Kintex7-325T中端FPGA为平台,搭建IMX327+FPD953+FPD954的MIPI转FPD-Link车载同轴视频传输架构,视频输入源为IMX327 MIPI摄像头,IMX327 摄像头配置为 MIPI-4 Lane-RAW12模式,输出有效分辨率为1920x1080@60Hz;IMX327输出的LVDS视频接入TI公司的FPD953芯片实现串化,即将4对差分数据线和1对随路时钟的视频信号转换为时钟内嵌的高速串行单端信号,并通过同轴线输出,至此,MIPI转FPD-Link车载同轴视频发送架构搭建完毕,可实现长距离、低延时、稳定性、可靠性的视频传输;然后同轴视频接入TI公司的FPD954芯片实现解串,即将时钟内嵌的高速串行单端信号规复为4对差分数据线和1对随路时钟的LVDS视频信号;至此,FPD-Link车载同轴视频吸收完成;然后使用本博主自定义的MIPI CSI RX解码IP实现MIPI的D_PHY+CSI_RX解码功能,并输出AXI4-Stream格式的RAW12格式视频;至此,MIPI视频解码工作完成;但此时的视频还是原始的RAW12格式,远远达不到输出显示要求,以是还需举行图像处置惩罚操作,即图像ISP处置惩罚;本博主提供完整的图像ISP,具体流程包括Bayer转RGB888、自动白平衡、色彩校正、伽马校正、RGB888转YCrCb444、图像增强、YCrCb444转RGB888、AE自动曝光等一系列操作;经过ISP处置惩罚后的图像颜色饱满、画质清楚,输出RGB888格式视频;然后用本博自研、基于HLS实现的、任意比例任意尺寸缩放的、AXIS接口的、傻瓜式使用的图像缩放IP,实现对MIPI视频的缩放处置惩罚,代码中默认的缩放方案为1920x1080缩放为1280x720,你也可以修改为其他缩放方案;然后再使用Xilinx官方的VDMA图像缓存架构将视频缓存到板载的DDR3中;然后在Native时序的控制下将缓存视频从DDR3中读出,再使用本博常用的HDMI输出模块将图像输出到显示器显示即可;提供1套vivado2019.1版本的工程源码;
本博客具体描述了Xilinx系列FPGA实现MIPI转FPD-Link同轴传输+图像缩放的设计方案,工程代码可综合编译上板调试,可直接项目移植,实用于在校学生、研究生项目
开发
,也实用于在职工程师做学习提升,可应用于医疗、军工等行业的高速接口或图像处置惩罚范畴;
提供完整的、跑通的工程源码和技术支持;
工程源码和技术支持的获取方式放在了文章末端,请耐心看到末了;
免责声明
本工程及其源码即有自己写的一部门,也有网络公开渠道获取的一部门(包括CSDN、Xilinx官网、Altera官网以及其他开源免费获取渠道等等),若大佬们觉得有所冒犯,请私信批评辅导;部门模块源码转载自上述网络,版权归原作者全部,如有侵权请联系我们删除;基于此,本工程及其源码仅限于读者或粉丝个人学习和研究,禁止用于商业用途,若由于读者或粉丝自身原因用于商业用途所导致的法律问题,与本博客及博主无关,请审慎使用。。。
2、干系方案保举
本博主全部FPGA工程项目–>汇总目次
其实不停有朋侪反馈,说我的博客文章太多了,乱花渐欲迷人,自己看得一头雾水,不方便快速定位找到自己想要的项目,以是写了一篇汇总目次的博文并置顶,列出我目前已有的全部项目,并给出总目次,每个项目标文章链接,当然,本博文实时更新。。。博客链接如下:
点击直接前往
我这里已有的 MIPI 编解码方案
我这里目前已有丰富的基于FPGA的MIPI编解码方案,主要是MIPI解码的,既有纯vhdl实现的MIPI解码,也有调用Xilinx官方IP实现的MIPI解码,既有2line的MIPI解码,也有4line的MIPI解码,既有4K分辨率的MIPI解码,也有小到720P分辨率的MIPI解码,既有基于Xilinx平台FPGA的MIPI解码也有基于Altera平台FPGA的MIPI解码,还有基于Lattice平台FPGA的MIPI解码,后续还将继续推出更过国产FPGA的MIPI解码方案,毕竟目前国产化方案才是未来主流,后续也将推出更多MIPI编码的DSI方案,积极将FPGA的MIPI编解码方案做成白菜价。。。
基于此,我专门建了一个MIPI编解码的专栏,并将MIPI编解码的博客都放到了专栏里整理,对FPGA编解码MIPI有项目需求或学习兴趣的兄弟可以去我的专栏看看,专栏地址如下:
点击直接前往专栏
我这里已有的FPGA图像缩放方案
我的主页目前有FPGA图像缩放专栏,改专栏收录了我目前手里已有的FPGA图像缩放方案,从实现方式分类有基于HSL实现的图像缩放、基于纯verilog代码实现的图像缩放;从应用上分为单路视频图像缩放、多路视频图像缩放、多路视频图像缩放拼接;从输入视频分类可分为OV5640摄像头视频缩放、SDI视频缩放、MIPI视频缩放等等;以下是专栏地址:
点击直接前往
3、本 MIPI CSI-RX IP 介绍
本设计采取本博自研的MIPI CSI RX解码IP实现MIPI的D_PHY+CSI_RX功能,输出AXI4-Stream格式的RAW12颜色视频,该IP由本博免费提供;该IP目前只实用于Xilinx A7及其以上系列器件,支持的 4 lane RAW12图像,输入分辨率最高支持4K @30帧;IP UI配置界面如下:
该自定义IP只提供网表不提供源码,但用户依然可以自由使用,和使用Xilixn官方的 MIPI CSI-2 RX Subsystem一样,没有本质区别,由于MIPI CSI-2 RX Subsystem也是看不到源码的;MIPI CSI-RX IP资源消耗如下:
4、具体设计方案
设计原理框图
工程设计原理框图如下:
IMX327 及其配置
本设计使用本博提供的专用SONY公司的 IMX327 MIPI相机,该相机输出分辨率达到了1920x1080,采取焦距可调的镜头,清楚度极高,实用于高端项目
开发
,相机截图如下:
IMX327 MIPI相机必要 i2c配置才能正确使用,本设计调用本博自定义的i2c主机IP实现对IMX327的配置,该IP挂载与AXI-Lite总线上,通过MicroBlaze软核运行的C语言代码实现配置,此外,本博还设计了自动曝光程序,实时读取IMX327 RAW12像素,通过写IMX327对应寄存器的方式实实际时的自动曝光算法,使得IMX327在暗黑的情况下也能输出明亮的图像;
FPD-Link视频串化-解串方案
本设计采取IT公司的FPD953+FPD954架构实现FPD-Link视频串化-解串方案,这部门主题由硬件电路实现,FPGA只需对FPD953和FPD954做i2c初始化配置即可,FPD953+FPD954一般级联使用,是TI主推的FPD-Link方案,TI官方提供了参考原理图和参考i2c初始化配置代码,使得设计和使用难度大大降低,为了方便读者推进自己的项目,本博主提供参考原理图,为PDF版本;如下:
MIPI CSI RX
本设计采取自定义的MIPI CSI RX解码IP实现MIPI的D_PHY+CSI_RX功能,输出AXI4-Stream格式的RAW12颜色视频,该IP由本博免费提供;该IP目前只实用于Xilinx A7及其以上系列器件,支持的 4 lane RAW12图像,输入分辨率最高支持4K @30帧;IP UI配置界面如下:
该自定义IP只提供网表不提供源码,但用户依然可以自由使用,和使用Xilixn官方的 MIPI CSI-2 RX Subsystem一样,没有本质区别,由于MIPI CSI-2 RX Subsystem也是看不到源码的;
图像 ISP 处置惩罚
本博提供及其完整的图像ISP,具体流程包括Bayer转RGB888、自动白平衡、色彩校正、伽马校正、RGB888转YCrCb444、图像增强、YCrCb444转RGB888、AE自动曝光等一系列操作;经过ISP处置惩罚后的图像颜色饱满、画质清楚,输出YCrCb422格式的视频;图像 ISP 处置惩罚在工程 Block Design中如图:
这些IP均为Xilinx的免费IP,有的必要配置才能使用,在MicroBlaze软核运行的C语言代码已经提供了配置程序;此中AE自动曝光采取SDK C语言AE算法实现,FPGA实时读取IMX327的亮度值,然后与AE模型举行比较,亮度不足则补光,亮度太高则降光,通过控制IMX327内部寄存器实现,C代码必要在MicroBlaze软核运行;
自研HLS图像缩放详解
工程图像缩放采取HLS方案C++代码实现,并综合成RTL后封装为IP,可在vivado中调用该IP,自研HLS图像缩放长处如下:
1:采取HLS实现,C++代码量很小,核心代码仅3行,并以综合成RTL代码后封装为自定义IP,方便在vivado中调用;
2:采取双线性插值算法,可实现任意比例、任意尺寸缩放,机动性可谓天花板级别;
3:驱动简单、使用方便,提供SDK驱动程序,在主函数中调用API直接实现缩放操作;
自研HLS图像缩放缺点如下:
1:只实用于Xilinx Zynq系列FPGA,必要其他Xilinx 系列FPGA使用则必要找博主定制,必要修改HLS工程中的FPGA型号,然后重新综合编译封装成IP才能在新的FPGA中使用;
2:只实用于vivado2019.1及其以下版本,从vivado2019.2版本开始,已不能使用其以下版本的HLS IP核,这是Xilinx官方的问题;
以工程源码1为例,图像缩放IP在工程Block Design中如下:
该IP在vivado中的综合资源占用情况如下:
HLS图像缩放必要在SDK中运行驱动和用户程序才能正常工作,我在工程中给出了C语言程序,具体参考工程源码;通过调用驱动API,可自由改变缩放后的输出分辨率;
图像缓存
本设计使用Xilinx官方的VDMA图像缓存方案,VDMA架构使用Xilinx官方力推的图像缓存架构,实现图像3帧缓存,VDMA图像缓存架构由Video In to AXI4-Stream、VDMA、Video Timing Controller、AXI4-Stream To Video Out构成;其在Block Design中如下:
VDMA必要驱动才能正常工作,本工程提供C语言驱动;
HDMI输出
HDMI输出架构由Native时序和HDMI输出模块构成,Native时序负责产生输出的1920x1080@60Hz的时序,并控制FDMA数据读出,HDMI输出模块负责将VGA的RGB视频转换为差分的TMDS视频,代码架构如下:
工程源码架构
工程Block Design截图如下;
工程综合后的源码截图如下:
工程源码必要运行MicroBlaze软核,用于配置ISP、VDMA等;SDK工程架构如下:
5、工程源码1详解
开发
板FPGA型号:Xilinx–Kintex7–xc7k410tffg676-2;
开发
情况:Vivado2019.1;
输入:IMX327 MIPI相机,4 Lane,分辨率1920x1080@60Hz;
输出:HDMI,分辨率1920x1080@60Hz下叠加缩放后的图像输出;
FPD-Link串化方案:TI的FPD953芯片;
FPD-Link解串方案:TI的FPD954芯片;
图像缩放方案:自研HLS图像缩放方案;
图像缩放实例:由1920x1080缩放到1280x720;
图像缓存方案:Xilinx官方VDMA方案;
图像缓存路径:DDR3;
工程作用:此工程目标是让读者掌握FPGA实现MIPI转FPD-Link同轴传输+图像缩放的设计本领,以便可以或许移植和设计自己的项目;
工程Block Design和工程代码架构请参考第4章节“工程源码架构“末节内容;
工程的资源消耗和功耗如下:
6、工程移植阐明
vivado版本不同等处置惩罚
1:如果你的vivado版本与本工程vivado版本同等,则直接打开工程;
2:如果你的vivado版本低于本工程vivado版本,则必要打开工程后,点击文件–>另存为;但此方法并不保险,最保险的方法是将你的vivado版本升级到本工程vivado的版本或者更高版本;
3:如果你的vivado版本高于本工程vivado版本,解决如下:
打开工程后会发现IP都被锁住了,如下:
此时必要升级IP,操作如下:
FPGA型号不同等处置惩罚
如果你的FPGA型号与我的不同等,则必要更改FPGA型号,操作如下:
更改FPGA型号后还必要升级IP,升级IP的方法前面已经报告了;
其他注意事项
1:由于每个板子的DDR不肯定完全一样,以是MIG IP必要根据你自己的原理图举行配置,乃至可以直接删掉我这里原工程的MIG并重新添加IP,重新配置;
2:根据你自己的原理图修改引脚束缚,在xdc文件中修改即可;
3:纯FPGA移植到Zynq必要在工程中添加zynq软核;
7、上板调试验证
准备工作
必要准备的器材如下:
FPGA
开发
板+转接板;
FPD-Link同轴线;
IMX327 MIPI相机;
HDMI显示器;
我的
开发
板了连接如下:
视频输出演示
输出演示如下:
FPD-Link缩放
8、工程代码的获取
代码太大,无法邮箱发送,以某度网盘链接方式发送,
资料获取方式:私,或者文章末端的V手刺。
网盘资料如下:
此外,有很多朋侪给本博主提了很多意见和发起,盼望能丰富服务内容和选项,由于不同朋侪的需求不一样,以是本博主还提供以下服务:
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
兜兜零元
论坛元老
这个人很懒什么都没写!
楼主热帖
数据库的建立、增、删、改、查 ...
深入解析kubernetes中的选举机制 ...
【黄啊码】MySQL入门—4、掌握这些数据 ...
clang-format的使用
MySQL安装配置
Oracle调度器Scheduler
V Rising 服务器搭建
02-MySQL高级
2万多条健康网站文章大全ACCESS\EXCEL ...
GitLab CI-CD 学习笔记
标签云
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
备份
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表