Embedded Systems - FPGAs

Hardware/Software Design of Embedded Systems





Instructor (Lectures):   Prof. Nagi Naganathan

Instructor (Labs):   Elie Rosen




Level: Junior/Senior

Prerequisites: Digital Logic Design, Digital Logic Design Lab, Basic software programming

Course Content:

Embedded systems run the computing devices hidden inside a vast array of everyday products and appliances such as cell phones, MP3 players, handheld PDAs, cameras, and laptops. Cars are full of them, as are airplanes, satellites, and advanced military and medical equipment. The course will introduce a modern approach to embedded design by unifying both software and hardware design. As applications grow increasingly complex, so do the complexities of the embedded computing devices.

The goal of this course is to develop a comprehensive understanding of the underlying technologies and design techniques used to build such embedded systems. The aim of the course is to provide a practical view of building embedded systems through several real examples (hardware and software) with hands on Altera DE2-115 FPGA implementation in the labs.

The course builds on “Digital Logic Design” and will introduce logic design using hardware description language such as VHDL and will also provide some insight into computer architecture. The course will cover the VHDL language in depth and will explain on how to build complex combinational and sequential circuits. The functional verification of the VHDL designs will be done in ModelSim – Altera Starter Edition Logic Simulator.

The course will present a systematic approach to FPGA implementation using VHDL by providing the basic coding principles and hardware implementation using VHDL. The course will have labs using Altera DE2-115 FPGA with VHDL and will provide a valuable skill required for FPGA design along with embedded software.

This will involve several hardware implementations through VHDL in the FPGA setup and also software. The course will provide an understanding of the hardware needed in the design both hardware and software components.

At the end of the course, the students should be able to:

  1.    Understand the fundamentals of embedded systems from both hardware and software perspectives
  2.    Understand how to design digital circuits with VHDL
  3.    Understand how to design complex state machines in VHDL and also verify the designs using Modelsim simulator
  4.    Prototype digital design on an FPGA
  5.    Understand logic simulation and synthesis for FPGA
  6.    Understand basic aspects of embedded processors (ARM) and Bus Interfaces

Text Books:
   1.     Frank Vahid & Tony Givargis, “Embedded System Design, A Unified Hardware/Software Introduction”, 
           ISBN 978-0-471-38678-0
   2.     Frank Vahid & Roman Lysecky, “VHDL For Digital Design”, ISBN 978-0-470-05263-1
   3.     Peter Ashenden, “Digital Design (VHDL), An Embedded Systems Approach using VHDL”, ISBN 978-0-12-369528-4

Additional Books:

  1.    1.     Ronald Sass & Andrew Schmidt, “Embedded Systems Design with Platform FPGAs: Principles and Practices”, 
               ISBN 978-0-12-374333-6

       2.     Peter Ashenden, “The designer’s guide to VHDL, 3rd Edition”

    General Outline of Topics: (Tentative)
      1.    Introduction to basics of embedded systems – Hardware/Software
      2.    Digital Design Flow
      3.    Introduction of Hardware Description Language and VHDL
      4.    Various topics in VHDL
      5.    Hardware – Processors (ARM) and other basics of embedded processors/microcontrollers
      6.    Software
      7.    Brief Introduction to SystemC and Verilog
      8.    Peripherals, I/O Basics
      9.    Buses (I2C, SPI, CAN)
     10.   State Machine, Concurrent Process
     11.   Design Example (Digital Camera)

    General Outline of Labs:

    Hardware: Altera DE2-115 FPGA Development Board

    Simulator: ModelSim – Altera Starter Edition

      1.    Introduction to FPGA’s and VHDL
      2.    Latches, Flip-Flops, and Counters
      3.    Complex Addition Systems
      4.    Finite-State Machines
      5.    A Simple Processor
      6.    Final Project