开源ISP处理器 (xkISP) 发布

开源ISP处理器 (xkISP) 发布

开源ISP处理器 (xkISP) 发布

开源ISP处理器 (xkISP) 发布

xkISP是基于Xilinx开发工具的开源图像信号处理器 (ISP),由复旦大学VIP实验室和阿里巴巴DAMO CTL实验室联合开发。到目前为止,xkISP支持处理任意分辨率的12位原始图像数据。欢迎访问xkISP项目官方在线论坛:http: //openasic.org/。

xkISP 简介

整个流水线包括17个功能模块,如上图所示。

文件结构如下图所示,其中:

  1. fpga包含用于顶层集成验证的代码文件;
  2. src包含xkISP项目中单个模块的源代码文件和用于单个模块测试的头文件h;
  3. tb包含用于模块级的Cmodel ( tv/isp ) 功能一致性验证的代码文件;
  4. tcl包含执行tb中代码文件的脚本("module".tcl),以及为src中代码文件添加pragma命令的脚本 ("module"_directives.tcl) 。tcl中的Makefile用于模块级验证;
  5. tv 包含用于生成测试向量的文件,通过readme_for_tv可以了解到更多详情。
  6. sh用于指定开发工具 (Vitis HLS 或 Vivado)。

克隆仓库

克隆github仓库:

git clone https://github.com/openasic-org/xkISP.git
cd xkISP

环境设置

修改setup_env.sh,添加当前系统下安装的vivado或vitis hls路径,然后完成环境设置。

source setup_env.sh

生成测试向量

在开始项目之前,需要使用xkISP Cmodel isp来生成测试向量。在tv中有一个测试图像input.raw和默认配置hls_param.txt .tv。

cd tv
./isp -i input.raw -c hls_param.txt

如果想自行准备测试图片,需要修改makefile\

./isp -i "your test image" -c "your configuration"

注意:每个模块级验证的配置是固定的。需要修改验证代码文件 (tb中的tb_"*module*".cpp) 以匹配 Cmodel 的配置。我们将在以后的更新中修改验证代码文件以读取配置文件。

模块级验证

对于模块级验证,可以使用tcl中的Makefile脚本,也可以根据需要修Makefile。

cd tcl
make

顶层集成验证

对于顶层集成验证,可以使用vitis GUI。示例如下所示:

1.使用vitis创建一个新项目。

在isp kernel下导入top.h在top.cpp,在主机平台 (x86) 下导入host.cpp、top.h、xcl2.cpp和xcl2.hpp。

2.设置顶层文件        

在kernel目录下,双击.prj进入其配置界面,点击并设置“ isp_top ”函数为顶层函数。

3.设置测试图片路径和配置参数

  • 图像路径

将“ TOP_SRC1 ”和“ TOP_DST1 ”修改为自己的图像路径。

  • 图像分辨率

“ IMAGE_HEIGHT ”和“ IMAGE_WIDTH ”决定了输入图像的高度和宽度。

“ upper_left_x ”、“ upper_left_y ”、“lower_right_x *”、“ lower_right_y ”确定裁剪后图像左上角和右下角的像素位置。

“ CROP_HEIGHT ” 和 “ CROP_WIDTH ” 确定输出图像的高度和宽度。它们需要与“ upper_left_x ”、“ upper_left_y ”、“lower_right_x *”和“lower_right_y”匹配。

  • 模块配置

可以在 host.cpp中进行

4.编译和运行

点击Assistant窗口中的设置,选择我们编译的目标 ("emulation-SW”, “emulation-HW”, “HW ”)

点击Assistant窗口中的建立  ,开始编译。点击运行  ,开始执行项目。

 

订阅快讯

通过快讯订阅,您将及时收到我们的信息更新通知。