CS 460: Embedded Systems
Fall 2009

Course Description

In today's world there are at least two orders of magnitude more embedded systems than PCs. Embedded systems are employed in consumer electronics such as cameras, DVD players and cable descramblers, in cars, airplanes, factories, offices and hospitals. Their large numbers and growing complexity call for a new approach to their design. In this new, experimental, course we will learn to program the processors embedded in electronic devices such as cell phones, digital clocks and cameras, and gameboys. In the lab FPGA based boards will be used as target platforms. At the end of this course, students will be able to use electronic design automation tools and will have implemented a set of complete embedded systems on the FPGA boards.

Yoo koso! Huan ying! Benvenuto! Bienvenue! Wilkommen! Welcome!

Check out this article on Moore's law, thanks to David Newman.

A useful tool for getting the bitstrings of your icons
Jon Hajdu's sprite converter

and a useful tutorial for understanding the SVGA module of your game

Class Lecture Schedule
The ESL is open whenever the general lab is open.
Lab Teams: There is a limited number of stations (8) in the lab. So, you must work in teams of two. In the first week of class, each lab team shall e-mail their names and e-mail addresses to the lab systems manager: hansenp@cs.colostate.edu . You will need your account in week 2 for the ModelSim recitation. The information should be in the following format:

email team member 1, email team member 2
full name member 1, full name member 2

You will be given a groupname.

Instruction and labs

  • Instructor: Wim Bohm Computer Science Building room 344, e-mail: bohm at cs dot colostate dot edu, office (CS 344) hours: MW 10:00-11:00
  • Graduate Teaching Assistant: Erin Nagoshi nagoshi at cs dot colostate dot edu, office hours: Tue 1:00-2:00, Thu 3:00-4:00, Fri 12:00-1:00
  • Lectures: MWF 15:00-15:50 PM, CS 315 HPC Teaching Lab
  • Recitations / Tutorials are intended to familiarize you with the tools.
  • Lab hours are the same as the CS lab hours.
  • Prerequisite: CS370, ENFORCED
  • Optional textbook: Essential VHDL, RTL Synthesis done right, Sundar Rajan, ISBN: 0-9669590-0-0, available in the lab.
  • Grading: Lab 40% ([lab,weight]: [1,2], [2,8], [3,8], [4,12], [5,6], [6,14]), Midterms 30% each.

    Class Lecture Schedule

    Course Outline

    1. Introduction
      • Course overview
      • Embedded Systems overview
      • Example Embedded Systems and their Requirements
      • Design Challenges, Metrics
      • Processor technologies
      • IC technology
      • Programmable Logic Devices
      • FPGA Programming Models
    2. VHDL Introduction
      • VHDL Entities and architectures
      • Standard Logic Vectors
      • Signals, In, Out, Inout
      • Execution Order, RTL
      • Structural, Dataflow, Behavioral
    3. Hardware background: Combinational Logic
      • Wires, Drivers, Transistors, logic gates
      • Combinational Logic, Multiplexors, Decoders, Encoders
    4. VHDL Cont
      • A First VHDL Design: XOR3
      • ModelSim, Do Files
      • Decoders, Encoders
      • Generics, Int type, Generates
      • LAB1: Ripple Carry Adder
      • Synthesizable, behavioral VHDL constructs
    5. FPGA Structure
      • FPGA architecture
      • Configurable Logic Block Structure (CLB), wiring
      • On chip wiring: Global routing matrix,
        global, long, hex and single lines
      • Memory hierarchy: LUTs, Block RAM, external memory controllers
      • IO blocks
    6. The DIGILENT SPARTAN3 board
    7. FPGA Design Flow
      • Design Entry
      • Synthesis
      • Place and Route
      • Download
    8. Sequential VHDL
    1. EDK Structure
      • A soft processor in VHDL: the LC3 LC3 code
      • The Xilinx EDK
      • Microblaze
      • Block RAMs
      • Busses, OPB/LMB
      • Peripherals, UART, GPIO
    2. EDK Programming
      • Microblaze
      • Software debugging, GDB, MDM
      • UART, GPIO, detecting button presses
      • LAB5: First EDK Design: knock knock
      • Event handlers, timers, FSLs
      • Building an SVGA system in the Spartan
      • Using BlockRAMs in the SVGA system
      • LAB6: The games people play
      • You can find some useful examples on the public area on galdalf in the lab. There should be an icon on your desktop called "public_on_gandalf" with a picture of a cute little house. It should also be mapped to your P: drive when you are in the lab. It contains (Among other things):
        • EDK_Peripherals
          Some example EDK Peripherals, such as the reset_debounce, reset_gen_ip, fsl_leds, fsl_random, fsl_event_handler, etc... You can use these examples as good starting points for making your own edk peripherals.
        • Its_Art
          A very simple example which you might want to use as the basis of your game. It has a bitmap memory and an icon rom, etc. As Discussed in class.
        • Brownian_Mouse
          An example of how to use a mouse with an svga display. It shows you how to use a refresh signal from your SVGA peripheral as a Custom event in the event handler. It also shows you how to use all of the commands for the mouse portion of the event handler.
        • Keyboard
          An example of how to use a keyboard. It reads the scancodes from the event handler (with a keyboard attached) and echos them directly onto the Hyperterminal (via the uartlite). It also shows how to use the LEDs on the keyboards, and how to set the keyboard repeat rates.
    3. A System on a Chip
      • Connect four, alpha-beta search
      • EDK Architecture
      • Board evaluation in software
      • Board evaluation in hardware

    Useful resources

    Useful links


    Essential VHDL, RTL Synthesis done right
    Sundar Rajan
    ISBN: 0-9669590-0-0


    Embedded Sytem Design: a unified hardware/software introduction
    Frank Vahid / Tony Givargis
    Wiley & Sons

    An Embedded Software Primer
    David E. Simon
    Addison Wesley

    Embedded Systems Building Blocks
    Jean Labrosse
    RD Books

    The Designers Guide to VHDL
    Peter Ashenden
    Morgan Kaufman

  • The Computer Science Department Student Information Sheet