Skip to content

Inory-Megumi/xkISP

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

xkISP is an open source image signal processor (ISP) based on Xilinx development tools. xkISP is jointly developed by VIP Lab of Fudan university and DAMO CTL lab of Alibaba. Up to now, xkISP supports to process 12-bit raw image data of any resolution. The entire pipeline includes 17 function modules shown in the following: The official on-line forum of xkISP project is: http://openasic.org/

输入图片说明

File Structure

xkISP
├─fpga
│      host.cpp
│      top.cpp
│      top.h
│      xcl2.cpp
│      xcl2.h
│     
├─src
│    isp_top.h
│    file_define.h
│    "*module*".cpp
│    "*module*".h
│    ...
│   
├─tb
│     tb_"*module*".cpp
│    ...
│   
├─tcl
│      Makefile
│      "*module*".tcl
│      "*module*"_directives.tcl
│    ...
│   
├─tv
│     Makefile
│     hls_param.txt
│     input.raw
│     isp
│     readme_for_tv
├─  LICENSE
├─  setup_env.sh
└─  README.md

fpga contains code files for top level integration verification. src contains source code files which are the single module of the xkISP project and head files(file_define.h) for single module test. tb contains code files for verificating the function consistency with Cmodel(tv/isp) in the module level. tcl contains the scripts for execuating the code files in the tb("module".tcl) and adding the pragma command for the code files in the src ("module"_directives.tcl). Makefile in the tcl is used for module level verification. tv contains the files for generating the test vectors. You can read the readme_for_tv for more details. setup_env.sh is used to designate the development tools. (Vitis HLS or Vivado)

Usage

Clone this repo:

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

Environment setup

Modify setup_env.sh to add the installed vivado or vitis hls path under the current system. Then complete the environment setup.

source setup_env.sh

Test vector generate

Before starting the project, we need use xkISP Cmodel ispto generate test vectors. These is an test image input.rawand default configuration hls_param.txt in tv.

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

If you want to use your own image, please modify makefile\

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

Note:the configuration is fixed in each module level verification. You should modify the verification code files( tb_"*module*".cpp in tb) to match the configuration of Cmodel. We will modify the verification code files to read configuration file in the future update.

module level verification

For module level verification, you can use the script Makefile in the tcl. Of course, you can modify the Makefileas needed

cd tcl
make

Top level integration verification

For top level integration verification, you can use the vitis GUI. The example is shown as follows:

1.Create a new project using the vitis.

Import top.h and top.cpp under kernels and host.cpp, top.h, xcl2.cpp, xcl2.hpp under host platform(x86).

输入图片说明

输入图片说明

2.Set top file
Under the kernel directory, double-click .prj to enter its configuration interface, click 输入图片说明 and set the “isp_top” function as the top level.

输入图片说明

3.Set test images path and configuration parameters Enter the host.cpp

  • Image Path
    Modify the "TOP_SRC1" and "TOP_DST1" to your image paths.
  • Image Resolution
    "IMAGE_HEIGHT" and "IMAGE_WIDTH" determine the input image height and witdh.
    "upper_left_x", "upper_left_y" , "lower_right_x*" ,"lower_right_y" determine the pixel positions of the upper left and lower right corners of the cropped image.
    "CROP_HEIGHT" and "CROP_WIDTH" determine the output image height and width. They need to be matched with "upper_left_x", "upper_left_y" , "lower_right_x*" ,"lower_right_y"
  • Module Configuration
    You can find them in the host.cpp

4.Compile and run Click the settings 输入图片说明 in the Assistant window to select the target we compile ("emulation-SW", "emulation-HW", "HW")

输入图片说明

输入图片说明

Click build 输入图片说明 in the Assistant window to compile. Click run 输入图片说明 to execute the project.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 90.2%
  • C 6.0%
  • Tcl 3.5%
  • Other 0.3%