thinkoco / c5soc_opencl

DE1SOC DE10-NANO DE10-Standard OpenCL hardware that support VGA and desktop. And Some applications such as usb camera YUYV to RGB , Sobel and so on.
Apache License 2.0
90 stars 39 forks source link
altera de1-soc de10-nano fpga intelfpga mandelbrot opencl sobel usb-cameras vga

IntelFPGA Cyclone V SoC OpenCL

Hardware Architecture

Supported Boards

Supported USB Cameras

SD Card Image Features

You can downlaod the c5soc_opencl_lxde_fpga_reconfigurable_20201027.img all in one SD card Image file here Baidu Cloud Link or Google Drive Link.

Run default OpenCL Application

  1. Download the Image file and write it into the microSD card
  2. run update_rbf_and_dtb.bat or sh ./update_rbf_and_dtb.sh on PC to update rbf and dtb for target board
  3. Insert the microSD card to the DE10-nano , DE1-SoC or DE10-Standard board
  4. Set the MSEL[4:0] on your board to 01010 , SW10(1 to 6) on,off,on,off,on,N/A
  5. Connect a monitor to the HDMI or VGA port on baord
  6. Conect USB mouse and keyboard to the USB ports on the board
  7. Conect UART to PC
  8. Power on the board and you will see the LXDE graphical environment
  9. Open the LXterminal on the desktop
  10. source the init_opencl_17.1.sh file
  11. run sobel host host.17.1.run directly. (which keep same as your target board and the OpenCL SDK version )

OpenCL Hardware Template

Target Board Hardware Template wtih VIP core terasic's Hardware Template
DE1SOC de1soc_sharedonly_vga de1soc_sharedonly
DE10-nano de10_nano_sharedonly_hdmi de10_nano_sharedonly
DE10-Standard de10_standard_sharedonly_vga de10_standard_sharedonly

de10_nano_sharedonly_mil for DE10-nano + Mi_LCD

Demos

colorApp

A UVC usb camera application program is used to convert YUYV to RGB and Gray by using opencl.

Host usage:

colorApp.run -w960 -h720 
colorApp.run -w640 -h480 -r2 -g1 -b2 -u700 -d200 

camera_sobel

YUYV --> Y(gray) --> sobel

camera_sobel.run -v  //"-v" hardware mode

sobel_filter

do sobel by using four methods : arm , neon , opencl ,opencl with shared memory

Methods Frequency Time
Cortex-A9 800Mhz 168ms
Neon ? 37ms
OpenCL Memory Copy 140Mhz 256ms
OpenCL Shared Memory 140Mhz 14.8ms

Host useage:

number 1 2 3 4 5 6 different ways to run filter
"+"  Increase filter threshold
"="  Reset filter threshold to default
 " q/<enter>/<esc>" Quit the program

Mandelbrot

Host useage:

mandelbrot -w=800 -h=640 -c=32

History

How to do

  1. How to do

  2. Linux and Drivers

  3. Network

  4. How to Run x2go

  5. How to build a BSP

  6. How to do fpga reconfiguration

  7. How to build SD card Image

Limits

Set the CL_CONTEXT_COMPILER_MODE_INTELFPGA=3 (opencl sdk17.1 ~ 19.1) flag in environment to disable the reprogramming of the FPGA by host. For updating aocx, go to How to do fpga reconfiguration