Skip to content

用Verilog实现Bicubic插值,将960×540图像上采样至3840×2160

Notifications You must be signed in to change notification settings

qiujiandong/bicubic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bicubic Interpolation in Verilog HDL

用Verilog实现Bicubic插值,将960×540图像上采样至3840×2160。

Reference

Restrictions

这个IP只能用于实现960×540图像至3840×2160图像的上采样。因为卷积核的系数是固定的,在IP内部是通过实例化多个常系数乘法器实现的矩阵乘法功能。乘法器的系数、个数都是固定的,滑窗的大小等等都是固定的,所以无法支持其它的上采样需求。

Requirements

  • Ubuntu 20.04
  • Vivado 2023.2

代码是在2022年8月写的,到现在快两年过去了,一直没有好好整理,现在回想起来很多细节忘了,只能大概理一下设计的思路。源码都存放在bicubic.srcs目录,我是用Vivado 2023.2重新构建的工程(当时写的时候用的是Vivado 2021.2),如果Vivado版本太低,则需要从源码重新构建工程。我没试过回退低版本,可能会遇到IP版本无法回退的问题T_T。

我也用Vivado 2023.2将IP打包,并放在了ip_repo目录下。

Interface

interface

图像数据通过AXI4-stream slave接口输入,有一个AXI4-Lite接口可以用来配置目的地址和启动上采样。输出主要以一个AXI4 master接口,直接将结果写入制定的地址空间。另有一个中断信号来指示中断完成。中断信号的电平持续时间可配置。

寄存器地址:

  • 0x00 START
  • 0x04 DSTADDR

寄存器位域说明:

Start寄存器:

字段 位域 复位值 读写权限 描述
start 0 0 R/W 置一启动上采样过程,处理完成后IP自动清零
reserved 31:1 0 R 保留

DSTADDR寄存器:

字段 位域 复位值 读写权限 描述
dstaddr 31:0 0 R/W 目标地址

Content

  • Logic目录存放的主要是Verilog逻辑代码
  • Mock目录存放的是用C语言模拟硬件执行过程,并将结果作为参照与硬件执行结果进行比对
  • Scripts目录存放了运行软件模拟测试的脚本,和一些其它实用脚本
  • Doc目录存放的是相关的说明文档

主要内容:

  1. 理论分析 - 分析三次立方插值的可行性
  2. 脉动阵列 - 介绍硬件实现bicubic插值的方式
  3. 软件模拟 - 用软件模拟硬件的计算过程
  4. 仿真与实现 - 具体逻辑设计,仿真结果与实现结果

About

用Verilog实现Bicubic插值,将960×540图像上采样至3840×2160

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published