Xilinx Zynq7000系列FPGA纯verilog图像缩放,串口上位机动态调整缩放分辨率,提供4套工程源码和技术支持

📅 2026/8/24 15:23:10
Xilinx Zynq7000系列FPGA纯verilog图像缩放,串口上位机动态调整缩放分辨率,提供4套工程源码和技术支持
目录1、方案概述创作背景工程概述免责声明2、相关方案推荐本博主所有FPGA工程项目--汇总目录我这里已有的FPGA图像缩放方案本方案在Xilinx Artix7 系列FPGA上的应用本方案在Xilinx Kintex7 系列FPGA上的应用本方案在Xilinx UltraScale 系列FPGA上的应用本方案在国产FPGA紫光同创系列上的应用本方案在国产FPGA高云系列上的应用本方案在国产FPGA安路系列上的应用3、设计思路框架设计框图输入视频之--OV5640摄像头动态彩条输入视频之--RTL解码HDMI动态彩条图像缩放模块详解图像缩放模块仿真上位机控制图像缩放串口控制模块图像缓存架构HDMI视频输出架构工程源码架构配套的FPGA开发板4、工程代码1详解Zynq7020OV5640输入版本5、工程代码2详解Zynq7020动态彩条输入版本6、工程代码3详解Zynq7100OV5640输入版本7、工程代码4详解Zynq7100HDMI输入版本8、工程移植说明vivado版本不一致处理FPGA型号不一致处理其他注意事项9、上板调试验证并演示准备工作上位机控制图像缩放输出演示10、福利工程源码获取Xilinx Zynq7000系列FPGA纯verilog图像缩放串口上位机动态调整缩放分辨率提供4套工程源码和技术支持FPGA图像缩放纯verilog实现上位机控制机1、方案概述创作背景图像处理方向是目前FPGA所有就业方向中需求量最大的一个没有之一而图像缩放又是FPGA图像就业方向的必备基础技能也没有之一足见FPGA图像处理的含金量。目前市面上主流的FPGA图像缩放方案如下基于Xilinx的HLS方案该方案实现极其简单直接使用c语言几行代码即可实现这也是软件开发人员最喜欢的方式依赖于Xilinx的HLS工具可将c软件代码综合为RTL硬件描述语言设计人员无需关心复杂的时序和逻辑也不需要懂FPGA工具自动帮你生成verilog代码但HLS综合生成的verilog模块时序较差、资源消耗较多且一般要生成自定义IP核需要配合vitis进行配置使用的灵活性较差且HLS方案仅限于Xilinx自家的FPGA平台使用无法跨平台移植使用单位较为有限。关于HLS实现图像缩放详情参考我之前写的文章HLS实现图像缩放点击查看点击直接前往非纯Verilog方案该方案大部分大量采用FIFO、RAM、乘法器、除法器等IP核功能上没有问题时序和资源也没问题但移植性较差很多IP核在不同厂家的开发工具中略有偏差某个接口不适配则很难顺利移植。比如在Altera的FPGA中有专门的移位寄存器IP核在Xilinx中就没有在Xilinx很多专用型IP核在国产FPGA中也没有。纯Verilog方案也就是本博客的方案该方案采用纯verilog代码实现设计人员可根据需要随时修改代码进行调整模块可在市面上所有FPGA厂家的的器件中自由移植运行。该方案目前已被博主应用在Xilinx、Altera、紫光同创、安陆、高云等厂家的器件中运行十分稳定可靠。本方案的特点不仅在于纯Verilog代码实现还在于提供了基于串口上位机的动态调整缩放分辨率方案可以通过上位机直接输入想要的缩放分辨率然后点一下鼠标即可实现图像缩放实现了简单的人机交互功能为单调的图像缩放提供了便捷性和趣味性。工程概述本文使用Xilinx的Zynq7000系列FPGA纯verilog代码实现图像缩放输入视频源有两种分别对应开发者手里有没有摄像头的情况一种是使用廉价的OV5640摄像头模组或者板载HDMI输入如果你的手里没有摄像头或者你的开发板没有摄像头接口则可使用FPGA内部逻辑生成的动态彩条模拟摄像头视频视频源的选择通过代码顶层的parameter参数配置默认使用ov5640作为视频源FPGA首先对输入摄像头做i2c配置然后采集输入视频然后采集视频送入纯verilog代码实现的图像缩放模块对输入视频做图像缩放操作图像缩放模块可实现任意比例缩放支持临域插值和双线性插值2种算法通过模块顶层参数选择默认使用双线性插值本设计提供基于串口的上位机动态调整缩放分辨率缩放后的图像送入纯verilog代码实现的图像缓存模块做图像缓存本设计用Zynq的PS端DDR3做缓存介质实现3帧缓存缩放后的视频最好进行缓存操作因为缩放后原本的视频时序已经被打乱不缓存的话直接读出基本是错误且不对齐的数据导致输出的图像是乱码然后Native视频时序控制图像缓存架构从DDR3中读取视频并做Native视频时序同步输出RGB888视频RGB视频再送入纯verilog实现的RGB转HDMI模块输出HDMI差分视频最后送显示器显示即可本纯verilog图像缩放方案一共移植了16套工程源码涵盖了目前市面上主流的FPGA平台本博文介绍其中基于Xilinx Artix7 系列FPGA的4套工程详情如下这里说明一下提供的4套工程源码的作用和价值如下工程源码1开发板FPGA型号为Xilinx–Zynq7020–xc7z020clg400-2输入视频源为OV5640摄像头模组或者FPGA内部逻辑生成的动态彩条视频源的选择通过代码顶层的parameter参数配置默认使用ov5640作为视频源FPGA首先对OV5640摄像头做i2c配置本设计将OV5640摄像头分辨率配置为1280x72030Hz然后采集输入视频将2个时钟1个像素的RGB565转换为1个时钟1个像素的RGB888图像然后对输入视频做图像缩放操作将原视频从1280x720缩放到1920x1080您可通过我们提供的上位机动态调整缩放分辨率后文有上位机使用说明缩放后的图像送入纯verilog代码实现的图像缓存模块做图像缓存本设计用Zynq的PS端DDR3做缓存介质实现3帧缓存缩放后的视频最好进行缓存操作因为缩放后原本的视频时序已经被打乱不缓存的话直接读出基本是错误且不对齐的数据导致输出的图像是乱码然后Native视频时序控制图像缓存架构从DDR3中读取视频并做Native视频时序同步输出RGB888视频RGB视频再送入纯verilog实现的RGB转HDMI模块输出HDMI差分视频最后送显示器显示即可输出有效分辨率为1920x108060Hz为了兼容缩放后的其他分辨率本设计将背景分辨率设计为1920x1080缩放后的图像叠加在其上显示即可这也是本博主的创新点该工程适用于Xilinx Zynq7000系列FPGA做图像缩放相关应用工程源码2开发板FPGA型号为Xilinx–Zynq7020–xc7z020clg400-2FPGA内部逻辑生成的动态彩条分辨率配置为1920x108060Hz因为博主使用的Zynq7020开发板没有板载的HDMI输入接口所以用FPGA内部逻辑生成的动态彩条模拟然后对输入视频做图像缩放操作将原视频从1920x1080缩放到1280x720您可通过我们提供的上位机动态调整缩放分辨率后文有上位机使用说明缩放后的图像送入纯verilog代码实现的图像缓存模块做图像缓存本设计用DDR3做缓存介质实现3帧缓存缩放后的视频最好进行缓存操作因为缩放后原本的视频时序已经被打乱不缓存的话直接读出基本是错误且不对齐的数据导致输出的图像是乱码然后Native视频时序控制图像缓存架构从DDR3中读取视频并做Native视频时序同步输出RGB888视频RGB视频再送入纯verilog实现的RGB转HDMI模块输出HDMI差分视频最后送显示器显示即可输出有效分辨率为1920x108060Hz为了兼容缩放后的其他分辨率本设计将背景分辨率设计为1920x1080缩放后的图像叠加在其上显示即可这也是本博主的创新点该工程适用于Xilinx Zynq7000系列FPGA做图像缩放相关应用工程源码3开发板FPGA型号为Xilinx–Zynq7100–xc7z100ffg900-2输入视频源为OV5640摄像头模组或者FPGA内部逻辑生成的动态彩条视频源的选择通过代码顶层的parameter参数配置默认使用ov5640作为视频源FPGA首先对OV5640摄像头做i2c配置本设计将OV5640摄像头分辨率配置为1280x72030Hz然后采集输入视频将2个时钟1个像素的RGB565转换为1个时钟1个像素的RGB888图像然后对输入视频做图像缩放操作将原视频从1280x720缩放到1920x1080您可通过我们提供的上位机动态调整缩放分辨率后文有上位机使用说明缩放后的图像送入纯verilog代码实现的图像缓存模块做图像缓存本设计用Zynq的PS端DDR3做缓存介质实现3帧缓存缩放后的视频最好进行缓存操作因为缩放后原本的视频时序已经被打乱不缓存的话直接读出基本是错误且不对齐的数据导致输出的图像是乱码然后Native视频时序控制图像缓存架构从DDR3中读取视频并做Native视频时序同步输出RGB888视频RGB视频再送入纯verilog实现的RGB转HDMI模块输出HDMI差分视频最后送显示器显示即可输出有效分辨率为1920x108060Hz为了兼容缩放后的其他分辨率本设计将背景分辨率设计为1920x1080缩放后的图像叠加在其上显示即可这也是本博主的创新点该工程适用于Xilinx Zynq7000系列FPGA做图像缩放相关应用工程源码4开发板FPGA型号为Xilinx–Zynq7100–xc7z100ffg900-2输入视频为板载的HDMI输入接口使用笔记本电脑模拟HDMI输入设备连接到开发板HDMI输入接口HDMI解码方式为纯VHDL代码方案首先FPGA纯verilog实现的i2c配置模块完成HDMI RX的DDC接口配置EDID配置为1920x108060Hz使用纯VDHL代码实现的HDMI转RGB模块实现输入HDMI视频解码操作并输出Native的RGB888视频流为了支持1920x108060Hz在硬件设计上需要加上驱动芯片本设计采用TMDS141RHAR也可采用其他型号然后对输入视频做图像缩放操作将原视频从1920x1080缩放到1280x720您可通过我们提供的上位机动态调整缩放分辨率后文有上位机使用说明缩放后的图像送入纯verilog代码实现的图像缓存模块做图像缓存本设计用DDR3做缓存介质实现3帧缓存缩放后的视频最好进行缓存操作因为缩放后原本的视频时序已经被打乱不缓存的话直接读出基本是错误且不对齐的数据导致输出的图像是乱码然后Native视频时序控制图像缓存架构从DDR3中读取视频并做Native视频时序同步输出RGB888视频RGB视频再送入纯verilog实现的RGB转HDMI模块输出HDMI差分视频最后送显示器显示即可输出有效分辨率为1920x108060Hz为了兼容缩放后的其他分辨率本设计将背景分辨率设计为1920x1080缩放后的图像叠加在其上显示即可这也是本博主的创新点该工程适用于Xilinx Zynq7000系列FPGA做图像缩放相关应用本博客详细描述了Xilinx Zynq7000系列FPGA的纯verilog图像缩放工程解决方案的设计方案工程代码可综合编译上板调试可直接项目移植适用于在校学生、研究生项目开发也适用于在职工程师做学习提升可应用于医疗、军工等行业的高速接口或图像处理领域提供完整的、跑通的工程源码和技术支持工程源码和技术支持的获取方式放在了文章末尾请耐心看到最后免责声明本工程及其源码即有自己写的一部分也有网络公开渠道获取的一部分(包括CSDN、Xilinx官网、Altera官网以及其他开源免费获取渠道等等)若大佬们觉得有所冒犯请私信批评教育部分模块源码转载自上述网络版权归原作者所有如有侵权请联系我们删除基于此本工程及其源码仅限于读者或粉丝个人学习和研究禁止用于商业用途若由于读者或粉丝自身原因用于商业用途所导致的法律问题与本博客及博主无关请谨慎使用。。。2、相关方案推荐本博主所有FPGA工程项目–汇总目录其实一直有朋友反馈说我的博客文章太多了乱花渐欲迷人自己看得一头雾水不方便快速定位找到自己想要的项目所以写了一篇汇总目录的博文并置顶列出我目前已有的所有项目并给出总目录每个项目的文章链接当然本博文实时更新。。。博客链接如下点击直接前往我这里已有的FPGA图像缩放方案我的主页目前有FPGA图像缩放专栏改专栏收录了我目前手里已有的FPGA图像缩放方案从实现方式分类有基于HSL实现的图像缩放、基于纯verilog代码实现的图像缩放从应用上分为单路视频图像缩放、多路视频图像缩放、多路视频图像缩放拼接从输入视频分类可分为OV5640摄像头视频缩放、SDI视频缩放、MIPI视频缩放等等以下是专栏地址点击直接前往本方案在Xilinx Artix7 系列FPGA上的应用本方案适应于所有FPGA平台针对目前市面上主流的FPGA本博将本方案分别移植到了Xilinx 的Artix7、Kintex7、Zynq7000、UltraScale、UltraScale、紫光同创、高云、安路等平台本文讲述的是在Xilinx系列FPGA上的应用想要直接应用于Xilinx其他系列FPGA的读者可以参考我之前写的博客以下是博客地址点击直接前往本方案在Xilinx Kintex7 系列FPGA上的应用本方案适应于所有FPGA平台针对目前市面上主流的FPGA本博将本方案分别移植到了Xilinx 的Artix7、Kintex7、Zynq7000、UltraScale、UltraScale、紫光同创、高云、安路等平台本文讲述的是在Xilinx系列FPGA上的应用想要直接应用于Xilinx其他系列FPGA的读者可以参考我之前写的博客以下是博客地址点击直接前往本方案在Xilinx UltraScale 系列FPGA上的应用本方案适应于所有FPGA平台针对目前市面上主流的FPGA本博将本方案分别移植到了Xilinx 的Artix7、Kintex7、Zynq7000、UltraScale、UltraScale、紫光同创、高云、安路等平台本文讲述的是在Xilinx系列FPGA上的应用想要直接应用于Xilinx其他系列FPGA的读者可以参考我之前写的博客以下是博客地址点击直接前往本方案在国产FPGA紫光同创系列上的应用本方案适应于所有FPGA平台针对目前市面上主流的FPGA本博将本方案分别移植到了Xilinx 的Artix7、Kintex7、Zynq7000、UltraScale、UltraScale、紫光同创、高云、安路等平台本文讲述的是在Xilinx系列FPGA上的应用想要直接应用于国产系列FPGA的读者可以参考我之前写的博客以下是博客地址点击直接前往本方案在国产FPGA高云系列上的应用本方案适应于所有FPGA平台针对目前市面上主流的FPGA本博将本方案分别移植到了Xilinx 的Artix7、Kintex7、Zynq7000、UltraScale、UltraScale、紫光同创、高云、安路等平台本文讲述的是在Xilinx系列FPGA上的应用想要直接应用于国产系列FPGA的读者可以参考我之前写的博客以下是博客地址点击直接前往本方案在国产FPGA安路系列上的应用本方案适应于所有FPGA平台针对目前市面上主流的FPGA本博将本方案分别移植到了Xilinx 的Artix7、Kintex7、Zynq7000、UltraScale、UltraScale、紫光同创、高云、安路等平台本文讲述的是在Xilinx系列FPGA上的应用想要直接应用于国产系列FPGA的读者可以参考我之前写的博客以下是博客地址点击直接前往3、设计思路框架设计框图FPGA工程设计框图如下输入视频之–OV5640摄像头动态彩条输入视频源有两种分别对应开发者手里有没有摄像头的情况一种是使用廉价的OV5640摄像头模组如果你的手里没有摄像头或者你的开发板没有摄像头接口则可使用FPGA内部逻辑生成的动态彩条模拟摄像头视频视频源的选择通过代码顶层的parameter参数配置默认使用ov5640作为视频源模块顶层接口如下parameter SENSOR_TYPE 0输出ov5640的视频parameter SENSOR_TYPE 1输出动态彩条的视频OV5640摄像头需要i2c初始化配置本设计配置为1280x72030Hz分辨率本设计提供纯verilog代码实现的i2c模块实现配置功能此外OV5640摄像头还需要将2个时钟1个像素的RGB565转换为1个时钟1个像素的RGB888图像动态彩条则由FPGA内部逻辑实现由纯verilog代码编写模块代码架构如下输入视频之–RTL解码HDMI动态彩条输入视频源有两种分别对应开发者手里有没有摄像头的情况一种是使用板载的HDMI输入视频接口如果你的开发板没有HDMI输入接口则可使用FPGA内部逻辑生成的动态彩条模拟摄像头视频视频源的选择通过代码顶层的parameter参数配置默认使用板载的HDMI输入视频接口使用笔记本电脑接入HDMI输入接口以模拟输入SensorHDMI解码方案为纯VHDL解码HDMI输入接口逻辑设计必须要考虑DDC通信即通过i2c总线与输入设备协商分辨率即EDID配置本设计提供纯VHDL代码实现的i2c模块实现EDID配置此外TMDS差分视频进入FPGA IO后需要将其解码为RGB视频使用纯VDHL代码实现的HDMI转RGB模块实现输入HDMI视频解码操作并输出1920x108060Hz分辨率的RGB888视频流本博主已将该代码封装为了自定义IP可在vivado中直接调用如下HDMI转RGB模块代码架构如下为了支持1080P60Hz的输入视频在硬件设计上需要加上驱动芯片本设计采用TMDS141RHAR也可采用其他型号参考原理图如下模块顶层接口如下parameter SENSOR_TYPE 0则输出HDMI接口采集的视频parameter SENSOR_TYPE 1则输出动态彩条的视频整个模块代码架构如下图像缩放模块详解图像缩放模块功能框图如下由跨时钟FIFO、插值RAM阵列构成跨时钟FIFO的目的是解决跨时钟域的问题比如从低分辨率视频放大到高分辨率视频时像素时钟必然需要变大这是就需要异步FIFO了插值算法和RAM阵列具体负责图像缩放算法层面的实现插值算法和RAM阵列以ram和fifo为核心进行数据缓存和插值实现设计架构如下依据上图图像缩放模块内部核心是例化了4个双口RAM作用是缓存4行图像以得到4个临近的像素以此为基础做线性插值如果是做图像放大操作就以这4个临近的像素为基准以线性插值为算法在原图像中插入更多的像素点来扩大分辨率如果是做图像缩小操作就以这4个临近的像素为基准以线性插值为算法在原图像中删除更多的像素点来缩小分辨率此外前面描述的工作是实时的、整幅图像全部扫描式的进行所以需要对RAM的读写操作进行精准控制图像缩放模块代码架构如下模块的例化请参考工程源码的顶层代码图像缩放模块FIFO的选择可以调用工程对应的vivado工具自带的FIFO IP核也可以使用纯verilog实现的FIFO可通过接口参数选择图像缩放模块顶层接口如下FIFO_TYPE选择原则如下1总体原则选择xilinx好处大于选择verilog2当你的FPGA逻辑资源不足时请选xilinx3当你图像缩放的视频分辨率较大时请选xilinx4当你的FPGA没有FIFO IP或者FIFO IP快用完了请选verilog5当你向自学一下异步FIFO时请选verilog6不同FPGA型号对应的工程FIFO_TYPE参数不一样但选择原则一样具体参考代码2种插值算法的整合与选择本设计将常用的双线性插值和邻域插值算法融合为一个代码中通过输入参数选择某一种算法具体选择参数如下input wire i_scaler_type//0--bilinear;1--neighbor通过输入i_scaler_type 的值即可选择输入0选择双线性插值算法输入1选择邻域插值算法代码里的配置如下图像缩放模块仿真图像缩放模块需要vivado和matlab联合仿真需要注意的是仿真的目的是为了验证这一步我已经替你们做完了所以读者不再需要单独仿真如果读者是在需要自己仿真玩玩儿需要自己写仿真代码vivado和matlab联合仿真详细步骤如下第一步网上下载一张1280X720的图片并用matlab将图片转换为RGB格式的txt文档第二步在vivado下设计tstbench将RGB格式的txt文档作为视频输入源给到图像缩放模块并将缩放后的图像数据写入输出txt文档第二步用matlab将输出txt文档转换为图片并于原图一并输出显示以做比较根据以上方法得到以下仿真结果双线性插值算法原图1280X720缩小到800x600如下邻域插值算法原图1280X720缩小到800x600如下双线性插值算法原图1280X720放大到1920x1080如下邻域插值算法原图1280X720放大到1920x1080如下上位机控制图像缩放本方案的特点不仅在于纯Verilog代码实现还在于提供了基于串口上位机的动态调整缩放分辨率方案可以通过上位机直接输入想要的缩放分辨率然后点一下鼠标即可实现图像缩放实现了简单的人机交互功能为单调的图像缩放提供了便捷性和趣味性。本设计使用基于串口协议帧的上位机开发工具为python。提供上位机源码此外我们也编译好了上位机生成了.exe可执行文件可直接点击运行位置如下上位机运行界面如下串口控制模块串口控制模块主要有两个作用。作用1接收PC端上位机下发的串口指令帧然后解析串口指令帧提取有效信息再根据有效信息中的控制信息提取复位信号和图像缩放参数再控制图像缩放模块和图像缓存模块实现PC端上位机控制FPGA的桥梁。作用2实时发送FPGA内部当前的图像缩放后的视频宽度和高度信息给PC端上位机。串口控制模块的串口协议帧格式如下串口控制模块代码架构如下图像缓存架构图像缓存方案采用纯verilog实现缓存介质为DDR3/4图像缓存架构实现的功能是将输入视频缓存到板载DDR中再读出送后续模块目的是实现视频同步输出实现输入视频到输出视频的跨时钟域问题更好的呈现显示效果由于调用了Xilinx官方的MIG作为DDR控制器所以FDMA图像缓存架构就是实现用户数据到MIG的桥接作用架构如下图像缓存架构代码如下图像缓存架构由FDMA控制器FDMA组成FDMA实际上就是一个AXI4-FULL总线主设备与MIG对接MIG配置为AXI4-FULL接口FDMA控制器实际上就是一个视频读写逻辑以写视频为例假设一帧图像的大小为M×N其中M代表图像宽度N代表图像高度FDMA控制器每次写入一行视频数据即每次向DDR中写入M个像素写N次即可完成1帧图像的缓存读视频与之一样同时调用两个FIFO实现输入输出视频的跨时钟域处理使得用户可以AXI4内部代码以简单地像使用FIFO那样操作AXI总线从而达到读写DDR的目的进而实现视频缓存本设计图像缓存方式为3帧缓存图像缓存使用Xilinx vivado的Block Design设计如下图关于FDMA更详细的介绍请参考我之前的博客博文链接如下点击直接前往HDMI视频输出架构缓存图像从DDR3读出后经过Native时序生成模块输出标准的VGA时序视频然后经过纯verilog显示的RGB转HDMI模块输出HDMI差分视频最后送显示器显示即可代码例化如下工程源码架构提供4套工程源码以工程源码1为例工程Block Design设计如下提供4套工程源码以工程源码1为例综合后的工程源码架构如下FDMA图像缓存架构虽然不需要SDK配置但PL端时钟由Zynq软核提供所以需要运行运行SDK以启动Zynq由于不需要SDK配置所以SDK软件代码就变得极度简单只需运行一个“Hello World”即可如下工程编译后资源消耗低、功耗低、时序收敛符合工程项目应用要求如下上图只是举例资源消耗并非本工程的实际消耗实际消耗请看下文的《工程代码详解》配套的FPGA开发板工程源码配套的2款FPGA开发板为选配可用于工程验证和后续开发这里仅提供Zynq7100版本 开发板本博主使用的Zynq7020版本开发板性价比不高故不再推荐用户可自行购买开发板移植具体如下该开发板为精简、小巧、适用、经济、功能齐全的本博主专属VIP开发板VIP开发板由核心板底板构成具体配置和接口如下Zynq7100 版本的FPGA开发板由核心板底板构成配置如下核心板配置如下板载FPGA型号Zynq7100–xc7z100ffg900-2Xilinx经济型FPGA板载时钟晶振板载1颗200M差分晶振给PL端用板载一颗33.333MHZ单端晶振给PS端用板载DDR3型号MT41K256M16-107板载4片该型号DDR3内存512M其中2片连接PS端另2片连接PL端板载FLASH型号25Q128JVEQ板载2片该型号FLASH128M容量用于程序固化板载EMMCKLM8G1GETF-B041板载2片该型号FLASH8G容量用于程序固化板载2颗用户LED灯用于用户开发取消了板载按键鸡肋设计直接用VIO调控即可板载拨码开关用于启动模式切换底板配置如下板载时钟晶振板载1颗148.5M和150M差分晶振给PL端高速接口用其中150M差分晶振可更换为其他频率板载1路LVDS接口为30 PIN用户2.0间距的IO引脚可接本博主的LVDS显示屏可配套本博主开发的LVDS项目板载2路SFP光口用于高速接口开发速率高达10Gb/s可配套本博主开发的GTP高速接口项目板载PCIE2.0 X4接口用于PCIE开发可配套本博主开发的PCIE项目板载1路RJ45网口用于以太网开发PHY芯片为RTL8211E可配套本博主开发的以太网项目板载1路OV5640摄像头接口用于图像开发可配套本博主开发的图像处理项目板载1路HDMI输入接口最大支持1920x108060Hz分辨率IT6802解码芯片可配套本博主开发的图像处理项目板载1路HDMI输出接口最大支持1920x108060Hz分辨率直连FPGA的HP BANK可配套本博主开发的图像处理项目板载2路SDI输入接口最高支持3G-SDI可配套本博主开发的SDI编解码项目板载2路SDI输出接口最高支持3G-SDI可配套本博主开发的SDI编解码项目板载1路USB2.0接口PHY芯片为Cypress的CY7C68013A可配套本博主开发的USB收发项目板载1路SATA接口可接固态硬盘板载1路耳机输出接口PHY芯片为TI的TLV320AIC3104可配套本博主开发的音频项目板载1路串口用于用户调试板载2路canfd/can接口板载1路SD卡接口板载1颗E2prom型号为AT24C02板载4颗用户LED灯用于用户开发板载2颗用户按键用于用户开发板载JTAG接口用于程序调试板载12V直流电源接口用于开发板供电板载40 PIN用户2.0间距的IO引脚可接其他外设配套的FPGA开发板发货清单如下物品数量Zynq7100–FPGA开发板1块开发板电源1个开发板下载器1个OV5640摄像头1个USB串口线1根4、工程代码1详解Zynq7020OV5640输入版本开发板FPGA型号Xilinx–Zynq7020–xc7z020clg400-2开发环境Vivado2019.1输入OV5640摄像头或者FPGA内部动态彩条分辨率1280x72030Hz输出HDMIRTL纯逻辑编码方案输出分辨率1920x108060Hz图像缩放方案纯Verilog图像缩放图像缩放实例1280x720缩放到1920x1080其他分辨率缩放可自行修改图像缩放控制PC端上位机实时动态控制图像缓存方案纯verilog图像缓存PS端DDR3颗粒图像3帧缓存实现功能FPGA实现纯verilog图像缩放工程作用掌握FPGA实现纯verilog图像缩放的设计能力以便能够移植和设计自己的项目工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容工程的资源消耗和功耗如下5、工程代码2详解Zynq7020动态彩条输入版本开发板FPGA型号Xilinx–Zynq7020–xc7z020clg400-2开发环境Vivado2019.1输入FPGA内部动态彩条分辨率1920x108060Hz输出HDMIRTL纯逻辑编码方案输出分辨率1280x72060Hz图像缩放方案纯Verilog图像缩放图像缩放实例1280x720缩放到1920x1080其他分辨率缩放可自行修改图像缩放控制PC端上位机实时动态控制图像缓存方案纯verilog图像缓存PS端DDR3颗粒图像3帧缓存实现功能FPGA实现纯verilog图像缩放工程作用掌握FPGA实现纯verilog图像缩放的设计能力以便能够移植和设计自己的项目工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容工程的资源消耗和功耗如下6、工程代码3详解Zynq7100OV5640输入版本开发板FPGA型号Virtex7-Zynq7100–xc7z100ffg900-2开发环境Vivado2019.1输入OV5640摄像头或者FPGA内部动态彩条分辨率1280x72030Hz输出HDMIRTL纯逻辑编码方案输出分辨率1920x108060Hz图像缩放方案纯Verilog图像缩放图像缩放实例1280x720缩放到1920x1080其他分辨率缩放可自行修改图像缩放控制PC端上位机实时动态控制图像缓存方案纯verilog图像缓存PS端DDR3颗粒图像3帧缓存实现功能FPGA实现纯verilog图像缩放工程作用掌握FPGA实现纯verilog图像缩放的设计能力以便能够移植和设计自己的项目工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容工程的资源消耗和功耗如下7、工程代码4详解Zynq7100HDMI输入版本开发板FPGA型号Virtex7-Zynq7100–xc7z100ffg900-2开发环境Vivado2019.1输入HDMI或者FPGA内部动态彩条纯VHDL解码方案分辨率1920x108060Hz笔记本电脑模拟输入源输出HDMIRTL纯逻辑编码方案输出分辨率1280x72060Hz图像缩放方案纯Verilog图像缩放图像缩放实例1920x1080缩放到1280x720其他分辨率缩放可自行修改图像缩放控制PC端上位机实时动态控制图像缓存方案纯verilog图像缓存PS端DDR3颗粒图像3帧缓存实现功能FPGA实现纯verilog图像缩放工程作用掌握FPGA实现纯verilog图像缩放的设计能力以便能够移植和设计自己的项目工程Block Design和工程代码架构请参考第3章节的《工程源码架构》小节内容工程的资源消耗和功耗如下8、工程移植说明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软核9、上板调试验证并演示准备工作需要如下器材设备1、FPGA开发板推荐适用本博主配套的开发板2、OV5640摄像头或HDMI输入设备比如笔记本电脑两者都没有则使用动态彩条3、串口线4、HDMI连接线和显示器上位机控制图像缩放输出演示上位机控制图像缩放输出演示如下FPGA图像缩放纯verilog实现上位机控制机10、福利工程源码获取福利工程代码的获取代码太大无法邮箱发送以某度网盘链接方式发送资料获取方式私或者文章末尾的V名片。网盘资料如下此外有很多朋友给本博主提了很多意见和建议希望能丰富服务内容和选项因为不同朋友的需求不一样所以本博主还提供以下服务