ECE 5760 Advanced Microcontroller Design and System-On-Chip

ECE 5760 Contents

Syllabus and Course Details
Lecture Notes and Handouts
Projects and Labs

Note: Homework and Exams are not available for this course.

Course Description

ECE 5760 deals with system-on-chip and embedded control in electronic design.

Instructor(s)

Bruce Land
214 Phillips Hall
Tel: 607-255-7994
Email: BRL4@cornell.edu

Course Level

Graduate (M.Eng.)

As Offered In

Spring 2017

Required Text(s)

Course Structure

The course consisted of:

  1. Three lectures a week
  2. Lab section every week
  3. Final project

 

A DE2-115 FPGA development board
Pose: An Arm Tracking System We created an arm mounted sensor array which interfaces with a PIC32 unit to produce odometry data for arm motion tracking. We were all interested in wearable technology, virtual reality, and sensor fusion, so we designed a project that drew from all of these fields. We wanted to create a device that would allow for an immersive martial arts video gaming experience, or evaluation of form and posture for fitness applications. Body pose tracking has many applications within gaming, healthcare, and other industries. A low cost, effective solution to this problem could easily disrupt the existing high end systems that are used for motion tracking, so the opportunity for either commercialization or publication also appeals to us. We used Inertial Measurement Units (IMUs) made of gyroscope-accelerometer and magnetometer-accelerometer sensor units along three points of the arm to measure accelerations, angular velocities, and magnetic field vectors. While the sensors gather data on three axes, the PIC32 retrieves their register contents via I2C communication. The PIC32 then communicates sensor readings over serial to a PC which integrates the readings, applys filtering algorithms to produce 3D positions and orientations. These are then used as inputs into a virtual reality application.
An FPGA-Based Robotic Rubik's Cube Solver We tasked ourselves with designing a mechanical Rubik’s cube solver. The mechanical arms rotate the cube to show each cube face of the cube to the camera. After each face is scanned, the cube faces are passed into the Rubik’s cube solving algorithm. The algorithm computes the moves that will be needed to solve the cube using a Nios II processor. The instructions are then fed to the FPGA, which in turn sends PWM signals to the servos to rotate the cube accordingly in order to solve the cube
Hand Motion Controlled Tetris This final project for ECE 5760 takes a very well known and classic game and puts a twist on it. Tetris was released in 1984 and since then has become an iconic game, garnering many reproductions and modifications to the original version. Our version of Tetris aims to produce the original Tetris game using a DE2-115 FPGA from Altera. Using VGA as an output and a camera that is able to detect skin tone, the user can play the game using motions that are sensed from their hand. There are four main regions of the screen. These regions control whether the block moves right, left, rotates, or moves down twice as fast. By filtering the video stream and looking for specific types of color in the YUV color space, the hardware recognizes when a user’s hand goes into one of the four sections and sends a signal to the game, instructing it what to do with the block. The game includes features that allow a player to move a piece left/right or rotate, count down time until the game ends, and also keep track of the score for the player. A player gets 10 points for each line that is completed. There are 7 different types of blocks that are chosen at random (with different colors) that drop down from the top of the screen. The games allows flexibility to switch between hand motion recognition or buttons on the FPGA to navigate the blocks and option for slow and fast speed of the blocks dropping down.