用Verilog实现Bicubic插值,将960×540图像上采样至3840×2160。
这个IP只能用于实现960×540图像至3840×2160图像的上采样。因为卷积核的系数是固定的,在IP内部是通过实例化多个常系数乘法器实现的矩阵乘法功能。乘法器的系数、个数都是固定的,滑窗的大小等等都是固定的,所以无法支持其它的上采样需求。
- 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目录下。
图像数据通过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 | 目标地址 |
- Logic目录存放的主要是Verilog逻辑代码
- Mock目录存放的是用C语言模拟硬件执行过程,并将结果作为参照与硬件执行结果进行比对
- Scripts目录存放了运行软件模拟测试的脚本,和一些其它实用脚本
- Doc目录存放的是相关的说明文档
主要内容: