FPGA纯verilog代码实现图像缩放

时间:2025-11-01  作者:Diven  阅读:0

1、设计思路和架构

本设计将常用的双线性插值和邻域插值算法融合为一个代码中,通过输入参数选择某算法;代码使用纯verilog实现,没有任何ip,可在Xilinx、Intel、国产FPGA间任意移植;代码以ram和fifo为核心进行数据缓存和插值实现,设计架构如下:视频输入时序要求如下:输入像素数据在dInValid和nextDin同时为高时方可改变;

FPGA纯verilog代码实现图像缩放

视频输出时序要求如下:输出像素数据在dOutValid 和nextdOut同时为高时才能输出;

2、纯verilog代码搭建,不带任何ip

代码使用纯verilog实现,没有任何ip,可在Xilinx、Intel、国产FPGA间任意移植;

图像缩放的实现方式很多,最简单的莫过于Xilinx的HLS方式实现,用opencv的库,以c++语言几行代码即可完成,网上也有其图像缩放例程代码,但大多使用了IP,导致在其FPGA器件上移植变得困难,通用性不好;相比之下,本设计代码就具有通用性;

代码架构如图;其中顶层接口部分如下:

3、双线性插值和邻域插值算法

本设计将常用的双线性插值和邻域插值算法融合为一个代码中,通过输入参数选择某算法;

具体选择参数如下:

input wire i_scaler_type //0-- >bilinear;1-- >neighbor

通过输入i_scaler_type 的值即可选择;

输入0选择双线性插值算法;

输入1选择邻域插值算法;

4、vivado和matlab联合仿真及结果

第一步:网上下载一张1280X720的图片,并用matlab将图片转换为RGB格式的txt文档;

第二步:在vivado下设计tstbench,将RGB格式的txt文档作为视频输入源给到图像缩放模块,并将缩放后的图像数据写入输出txt文档;

第二步:用matlab将输出txt文档转换为图片,并于原图一并输出显示以做比较;

根据以上方法得到以下仿真结果:

双线性插值算法原图1280X720缩小到800x600如下:邻域插值算法原图1280X720缩小到800x600如下:双线性插值算法原图1280X720放大到1920x1080如下:邻域插值算法原图1280X720放大到1920x1080如下:

5、工程代码1:720P原始摄像头采集显示

三套工程的设计架构都一样,如下:开发板:Xilinx Kintex7开发板

开发环境:Vivado2019.1;

输入:OV5640摄像头,分辨率1280x720p;

输出:HDMI,1080P分辨率下的720P有效区域显示;

工程作用:采集原始的720P图像,以便和后面的缩小效果作比较;

工程BD如下:其中FDMA控制器配置如下:工程代码架构如下:工程的资源消耗和功耗如下:

6、工程代码2:720P缩小到800x600P显示

开发板:Xilinx Kintex7开发板;

开发环境:Vivado2019.1;

输入:OV5640摄像头,分辨率1280x720p;

输出:HDMI,1080P分辨率下的800x600有效区域显示;

工程作用:1280x720原图缩小到800x600,并和原图作比较;

工程设计框架、BD、工程代码架构和工程1一样,FDMA配置如下:

7、工程代码3:720P缩放大1920x1080P显示

开发板:Xilinx Kintex7开发板;

开发环境:Vivado2019.1;

输入:OV5640摄像头,分辨率1280x720p;

输出:HDMI,1080P分辨率下的1920x1080有效区域显示;

工程作用:1280x720原图放大到1920x1080,并和原图作比较;

工程设计框架、BD、工程代码架构和工程1一样,FDMA配置如下:

8、上板调试验证并演示

板子连接如下:工程1:原图1280x720输出效果如下:工程2:原图1280x720缩小到800x600输出效果如下:工程3:原图1280x720放大到1920x1080输出效果如下:

猜您喜欢

计数器和分频器是数字电路中常见的基本组件。计数器是能够按照预定的时钟信号进行计数的电路,通常用于记录事件的发生次数。可以是向上计数、向下计数或双向计数,应用于时...
2018-06-04 00:00:00

信号缓冲器、信号中继器和信号分配器是现代通信系统中不可少的组成部分,在信号传输和处理过程中是重要配件。根据功能和应用的不同,这些设备可以分为多种类型。信号缓冲器...
2020-02-14 00:00:00

仪表放大器是用于信号放大的重要电子元件,应用于传感器信号处理和数据采集系统中。不同类型的仪表放大器在结构和性能上存在一些显著的区别。仪表放大器主要分为三种类型:...
2011-05-30 00:00:00

二极管是重要的半导体器件,应用于电子电路中。主要作用是允许电流在一个方向上流动,而在另一个方向上阻止电流。二极管的导通电压和压降是理解其工作特性的重要参数。本文...
2025-03-31 13:30:03

贴片排阻作为电子元器件中的重要组成部分,应用于各种电子设备中。SEI(世达柏科技)作为知名的电子元器件供应商,提供多种类型的贴片排阻产品,满足不同客户的需求。本...
2016-12-01 05:56:30

电解电容器是电子设备中重要的元件。在电路中是多种配件。本文将介绍电解电容器的主要作用。储能功能电解电容器可以储存电能。在电路中能起到临时存储电能的作用。比如,电...
2025-03-28 01:31:39

当今电子产品日新月异的时代,DC-DC转换器作为电源管理系统的核心组件,其重要性不言而喻。选择一家合适的DC-DC转换器厂家,不仅能保障产品的稳定运行,更能提升...
2024-07-09 00:00:00


贴片电阻2004,这个数字可不是什么密码,它实际上代表了这种电子元件的尺寸。2004指的是长宽分别为2.0mm和0.4mm,单位是毫米。 记住这个规律,前两位数...
2025-04-14 15:02:36