Welcome to Embedded Systems Design II @ RIT
In this class we focus on combining hardware, software, and firmware together to complete a specified task that makes use of FPGA-based embedded vision. The first part of the course focuses on the amazing Xilinx Zynq System on Chip [SoC] and how to use the Vivado tool ecosystem. Once students are familiar with Zynq, we move into using a Zynq System on Module [SOM], namely the Snickerdoodle by Krtkl. We selected this module due of its form factor, price, integrated WiFi, myriad of documentation, and open source code base. For example, for those of you who want to build up your SD card from scratch, check out our blog entry entitled "Create Snickerdoodle SD Card". The last part of the course takes students through preliminary and critical design reviews [CDR and PDR] to give them a flavor of how products are developed in the real world. The end goal of the semester is for student groups to program, verify, and demonstrate a working embedded vision application using the Fusion 2 FPGA-based imager shown below. In addition to learning embedded vision concepts, students will also learn Matlab, Simulink, Modelsim, Vivado, OpenCV, VHDL, C, Python, and many design design tricks of the trade which are highlighted in Dr. Kaputa's "Rules to Design By".
[Class Videos]
|
|
|
[Setup Tool Ecosystems]
|
|
|
[Snickerdoodle Tutorials]
|
|
|
[Vivado Tutorials]
|
|
|
[Modelsim Tutorials]
|
|
|
[Recorded Lectures]
|
|
[Linux Tutorials]
|
|
[Simulink Tutorials]
|
|
Older Tutorials [some links may be broken]
[BLINK]
CREATE BLINK IP
CREATE SNICKERDOODLE BLINK PROJECT
VIVADO SCRIPTING UTOPIA
BLINK WITH A TWIST
[LINUX SETUP AND PROGRAMING SNICKRDOODLE WITH LINUX]
SETUP SNICKERDOODLE WIFI
SETUP SNICKERDOODLE FILE SHARING
SETUP OTHER LINUX GOODIES
PROGRAM SNICKERDOODLE VIA LINUX
[PYTHON AND C SETUP AND BLINKING SNICKERDOODLE VIA AXI]
HELLO SNICKERDOODLE IN PYTHON AND C
CREATE PROCESSOR/FPGA AXI INTERFACE IN VIVADO
BLINK SNICKERDOODLE VIA PYTHON
BLINK SNICKERDOODLE VIA C
WRAP C IN PYTHON
[SNICKERDOODLE GUI WITH PYQT]
LOGGING IN WITH REMOTE DESKTOP
PYQT HELLO WORLD
BLINK SNICKERDOODLE VIA PYQT
[SNICKERDOODLE EXTERNAL MODE]
INSTALL SNICKERDOODLE SIMULINK BOARD SUPPORT PACKAGE
CREATE BLINK SIMULINK MEX FILE
BLINK SNICKERDOODLE VIA SIMULINK EXTERNAL MODE
[EMBEDDED VISION]
INTRODUCTION TO OPENCV
OPENCV ON THE SNICKERDOODLE
SNICKERDOODLE DRONE
DRONE SYSTEM OVERVIEW
SPINNING MOTORS WITH PWM
UNDERSTANDING THE IMU
DRONE PHYSICS
BASIC SIMULINK CONTROL LAWS
VISUAL SERVOING
CREATE BLINK IP
CREATE SNICKERDOODLE BLINK PROJECT
VIVADO SCRIPTING UTOPIA
BLINK WITH A TWIST
[LINUX SETUP AND PROGRAMING SNICKRDOODLE WITH LINUX]
SETUP SNICKERDOODLE WIFI
SETUP SNICKERDOODLE FILE SHARING
SETUP OTHER LINUX GOODIES
PROGRAM SNICKERDOODLE VIA LINUX
[PYTHON AND C SETUP AND BLINKING SNICKERDOODLE VIA AXI]
HELLO SNICKERDOODLE IN PYTHON AND C
CREATE PROCESSOR/FPGA AXI INTERFACE IN VIVADO
BLINK SNICKERDOODLE VIA PYTHON
BLINK SNICKERDOODLE VIA C
WRAP C IN PYTHON
[SNICKERDOODLE GUI WITH PYQT]
LOGGING IN WITH REMOTE DESKTOP
PYQT HELLO WORLD
BLINK SNICKERDOODLE VIA PYQT
[SNICKERDOODLE EXTERNAL MODE]
INSTALL SNICKERDOODLE SIMULINK BOARD SUPPORT PACKAGE
CREATE BLINK SIMULINK MEX FILE
BLINK SNICKERDOODLE VIA SIMULINK EXTERNAL MODE
[EMBEDDED VISION]
INTRODUCTION TO OPENCV
OPENCV ON THE SNICKERDOODLE
SNICKERDOODLE DRONE
DRONE SYSTEM OVERVIEW
SPINNING MOTORS WITH PWM
UNDERSTANDING THE IMU
DRONE PHYSICS
BASIC SIMULINK CONTROL LAWS
VISUAL SERVOING