Overview¶
The final project for the course should be a tutorial related to at least one learning objective of the subject:
- Formulate solutions that meet hardware and software requirements for FPGA-SoC (System-on-a-chip) projects
- Integrate a prototype solution for an embedded system with processing and/or real-time requirements via FPGA-SoC
- Interface different modules in an embedded system (processors, firmware, and operating system)
Areas¶
Some examples of areas that can be explored:
- Acceleration/implementation of some algorithm in hardware
- data processing, FFT, compression, cryptography, ...
- HLD/HLS/OpenCL/Amazon FPGA
- Performance comparison between different technologies
- SoC vs GPU vs FPGA vs uC
- Operating system
- Real-time scheduler, Linux kernel, Android, embedded RTOS
Previous Years¶
Take a look at what your colleagues have already done:
- PS3 Hack
- Android for Raspberry Pi 3
- Peripheral to control LED matrix
- Linux driver to turn on LEDs
- SoC and Python
- SDAccel / Vittis - Metropolis algorithm
- Audio on DE10
- Hardware Cryptography - FPGA
- TensorFlow - Jetson Nano
- OpenCL - FPGA
- Yocto
- Jetson Nano - GPU
- FPGA on AWS
- Linux device driver
Technologies/Tools¶
Below is a list of technologies that can be studied in the tutorial:
- HDL (VHDL/Verilog)
- Add a custom instruction to NIOS
- Platform Designer
- Create a system to control one of the robotics robots
- Create a peripheral to interface with the external world (read keyboard/motor/LED strip/...)
- High Level Synthesis (HLS)
- Create a peripheral that accelerates a function (example)
- OpenCL
- Create hardware that accelerates a function Terasic Manual (example)
- Linux
- real time / energy optimization / π boot time / applications / π Android / openCL ....
Hardware¶
Below, I tried to summarize the hardware available at Insper and the respective technologies that can be used to develop the projects:
Kit | Company | Technology | vhdl | HLS | OpenCL | Linux | OpenCV | Cuda |
---|---|---|---|---|---|---|---|---|
Arria 10 SoC | Intel | FPGA + ARM | x | x | x | x | x | |
DE10-Standard | Intel | FPGA + ARM | x | x | x | x | x | |
DE10-nano-soc | Intel | FPGA + ARM | x | x | x | x | x | |
Terasic SoC SoM | Intel | FPGA + ARM | x | x | x | x | x | |
DE5a-NET-DDR4 | Intel | FPGA | x | x | x | x | ||
ZedBoard | Xilinx | FPGA + ARM | x | x | x | x | x | |
F1 instance | AWS | FPGA | x | |||||
Jetson TK2 | NVIDIA | ARM + GPU | x | x | x | |||
Example topics/cool ideas¶
legend: βΌ requires greater dedication
- Creating a SoftProcessor and API to control a Drone
- OpenCV accelerated with OpenCL - ZedBoard
- !! Create an application with HLS/OpenCL that accelerates a function on the FPGA
- Image processing/data compression/cryptography/fft/...
- βΌ Create an application with OpenCL on AWS
- Embedding ROS on SoC-FPGA (first step to control robotics robots with FPGA)
- βΌ Use the LCD LT24 with Linux (ARM-FPGA Communication)
- Real Time kernel is it really real time? Latency study...
- Optimizing boot time for Linux
- Running Android on DE10-Standard
- Graphical interfaces in embedded systems (e.g.: create a payment kiosk)
- Device driver: Create a Linux driver for some distance sensor
- βΌ Create a peripheral to control the RGB LED strip and create a driver for Linux to control it
- Benchmark between different development kits
- Using yocto as an alternative to buildroot to generate Linux