| Elective Courses |
| Course # | Title | Winter | Spring | Summer | Fall |
| Embedded Hardware Development |
EECS X494.92
|
Logic Design and Analysis using Verilog ( 3 units )
Show Details
Expand your knowledge of gate level modeling, data flow modeling, behavior modeling, advanced modeling techniques, test benches, and logic synthesis. Learn the essentials of the Verilog hardware description language, syntax , and practical design scenarios. Participants learn fundamental and advanced usage of Verilog as a design capture and simulation development tool, and the use of the Programming Language Interface (PLI). The course will emphasize how Verilog is used in each step of the design automation process.
|  |  |  |  |
EECS X494.94
|
VHDL Design and Modeling of Digital Systems ( 3 units )
Show Details
Familiarize yourself with the analysis and synthesis of digital systems using VHDL to simulate and realize VLSI systems. Participants learn the fundamental concepts of VHDL and practical design techniques. The VHDL methodology and design flow for logic synthesis addresses design issues related to component modeling, data flow description in VHDL and behavioral description of hardware. An emphasis is placed on understanding the hardware description language, VHDL design techniques for logic synthesis, design criteria, and VHDL applications.
|  |  |  |  |
EECS X494.95
|
FPGA Design with Hardware Description Languages ( 3 units )
Show Details
Gain a comprehensive understanding of Field Programmable Gate Arrays (FPGAs) architectures. Explore VHDL, Verilog, and variations of C as a hardware description language. Learn about design flow, simulation, and FPGA implementation. Engineers will enhance their knowledge of the CMOS process, trade-offs between FPGA's, metallized gate arrays, standard cells, and custom design. Gain insight into testability issues and boundary scan, termination, interfacing and timing issues, and methods of performance enhancement of a digital design.
|  | 
|  |  |
| Embedded Software Development |
EECS X497.5
|
C ++ for Embedded Systems ( 3 units )
Show Details
Embedded software can be found in many electronic devices today. Increase your understanding of the up and coming embedded language features required for embedded systems programming in C++. Embedded software developers will benefit from this hands-on course by expanding their knowledge of using C++ in an embedded system while avoiding common pitfalls.
|  | 
|  |  |
EECS X497.24
|
Integrating Embedded Systems Successfully ( 1.5 units )
Show Details
This course takes participants through the hardware and software development integration process. Participants learn how, when, where and why using start integration including parallel development and integration techniques including co-simulation. Topics include: Parallel development and leveraging co-simulation to convert the engineering process from being serial to parallel, how and when to prototype as well as lab debug techniques.
|  |  | 
|  |
EECS X497.3
|
Motor Control Algorithms & Applications ( 3 units )
Show Details
Starting with a review of motor types and motor control types; this course focuses on Field Oriented Control (also known as Space Vector Control) algorithms and DSP programming techniques. Learn how to create a DSP-based motor control project from scratch and write control blocks in C programming language from a sensor-less motor speed control project for a Permanent Magnet Synchronous Motor. Hands-on development is facilitated with a motor control development kit.
|  |  |  |  |
EECS X497.19
|
Writing Portable Device Drivers ( 3 units )
Show Details
Gain a competitive edge on writing portable device drivers source code. Participants will gain practical knowledge of what constitutes a device driver, how to build one from a hardware datasheet, and how to write the code that will be readily portable across multiple platforms and operation systems. Increase your knowledge of timing, interrupt handling, direct memory access (DMA), how to avoid pitfalls, and other critical issues fundamental to writing device drivers. Hands-on lab exercises reinforce code writing skills.
|  | 
|  |  |
EECS X497.31
|
Designing Embedded Software Using Real-time Operating Systems ( 3 units )
Show Details
Learn how to write real-time systems software in relation to the architectural design of a complete embedded system utilizing a real- time operating system kernel. Participants will gain a practical knowledge of how to use a real-time kernel to accomplish the design goals of a real-time system. Learn how a real-time kernel is used to satisfy hard real-time constraints in comparison to soft real-time constraints. Gain a greater insight into the concepts of task scheduling, resource management, inter-task communications, task synchronization, and interrupt handlers.
|  |  |  |  |
EECS X497.10
|
Fundamentals of Embedded Linux ( 3 units )
Show Details
Further your understanding of Linux and its adoption as an embedded OS platform. This course provides an overview of methods and techniques to design and create embedded systems based on the Linux kernel. The essentials of the Linux operating system are discussed from the embedded system point of view including selecting, configuring, cross-compiling, installing a target-specific kernel; licenses; drivers and subsystems; the GNU development toolchain; and tools used to build embedded Linux systems. Prerequisite: Familiarity with software programming and hardware design.
|  | 
|  |  |
EECS X497.11
|
Linux Driver Primer ( 1.5 units )
Show Details
Gain a competitive edge by learning how to develop and write code for Linux device drivers. Participants will gain practical knowledge of what constitutes a device driver in Linux and basic Linux device driver building blocks. In addition, learn how to build and grow a framework from scratch that can be used to develop a Linux device driver. Increase your knowledge of timing, interrupt handling, direct memory access (DMA), how to avoid pitfalls, and other critical issues fundamental to writing Linux device drivers. Hands-on lab exercises reinforce code writing skills.
|  | 
|  |  |
EECS X497.39
|
Embedded Systems Design Using ARM Technology ( 3 units )
Show Details
Increase your understanding of how system-on-chip (SoC) and microprocessors are designed and used in embedded systems development. Participants will learn about the 16/32-bit embedded RISC processor ARM architecture and discover its wide applicability in embedded applications. Concepts and methodologies employed in designing a SoC based around a microprocessor core are thoroughly discussed. Practical hands-on lab exercises based on the ARM instruction set are used to reinforce the concepts learned. Architectural support for high-level languages, systems development, operating systems, and survey of ARM processor cores are discussed. A commercial ARM evaluation kit is used to demonstrate cost sensitive embedded applications.
|  |  | 
|  |
EECS X497.4
|
Applied Control Theory for Embedded Systems ( 3 units )
Show Details
Learn how to apply modern control theory to optimize your embedded system designs using microcontrollers or DSP devices. The majority of embedded designs are closed loop control systems, as opposed to open loop control. This course provides practical how-to knowledge in deriving and applying practical control theory algorithms. Z Transforms are introduced as a practical way of developing the needed difference equations for optimal designs. Participants learn to evaluate and select the best control algorithm for desired control applications such as proportional-integral-derivative (PID), fuzzy logic or Z Transform-derived difference equations.
|  |  | 
|  |
EECS X498.61
|
Real-Time Embedded Digital Signal Processing ( 3 units )
Show Details
Increase your level of expertise in embedded digital signal processing as well as DSP programming
techniques. Participants learn about several important algorithms, such as Digital FIR, IIR filters, FFTs and advanced digital signal processing algorithms for embedded applications. An overview of fixed and floating point DSP processors is presented including memory use and management. Practical hands-on lab exercises using DSP assembly language programming is emphasized in conjunction with development tools that allow DSP code written in higher level languages, such as C and Matlab. A commercial DSP evaluation kit or a simulator is used to perform the labs.
|  | 
|  |  |