Title | Winter | Spring | Summer | Fall |
Embedded Systems Engineering |
Logic Design and Analysis using Verilog (3.00 Units)
EECS X494.92
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.
|
to be scheduled
|
|
|
|
VHDL Design and Modeling of Digital Systems (3.00 Units)
EECS X494.94
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.
|
|
|
|
|
FPGA Design and Hardware Description Language (3.00 Units)
EECS X494.95
The goal of this course is to provide students material to gain a working understanding of FPGA architectures, design methodologies, FPGA development tools, prototyping hardware, FPGA synthesis, place and route, Static Timing Analysis, and FPGA image generation. This course’s approach involves learning new material via a series of lectures and then practicing that knowledge in labs, which build on top of one another. These labs are meant to provide practical design scenarios for students to apply what they have learned in a hands on setting. This course will focus exclusively on VHDL for RTL design and students will have the opportunity to create, modify, and debug designs through the labs. In lab, students will be asked to modify existing projects to accommodate more IP, add timing constraints so a design can pass timing, and physically validate models by programming your own FPGA board. The guided labs will provide enough context for the student to complete the final project. The final project has student’s create their own FPGA design, which needs to meet a set of given design specifications.
The objective of this class is to allow all students the opportunity to learn high-level FPGA design issues, the FPGA implementation flow and to debug FPGA hardware.
|
|
|
Online
|
|
Motor Control Algorithms and Application (4.00 Units)
EECS X497.6
Although the topic of motor control has been around for decades, there are more development activities in motor drives and control technologies today than ever in the past. This is because of the increasing use and demanding requirements in applications ranging from (Hybrid) Electric Vehicles, aircraft flight controls, ultra-fast computer servos, to adjustable-speed pumps, and many others. On the other hand, thanks to the rapid development of both power electronic switching devices and Digital Signal Controllers (DSC), motor drive technologies have been developed with great emphasis on performance, cost, efficiency, and controllability. From this effort the permanent magnet synchronous motor (PMSM) drive has emerged as a top competitor because of its high efficiency, low torque ripple, superior dynamic performance, and high power density. To realize such complex technologies, a group of resources including motor control experts and software engineers are indispensable. However, there is often a knowledge gap between these two disciplines. It is for the purpose of bridging this gap, that this course was created. Starting from a review of motor types and motor control techniques, this course will focus on the theory and applications of Field Oriented Control (FOC) algorithms and embedded programming techniques. The project sessions will demonstrate how to create a DSC-based motor controller project from scratch step-by-step, write control blocks in C programming language, and finally, complete a sensorless motor speed controller solution for PMSM through ten incremental lab exercises. Each lecture is supplied with narrated PowerPoint presentation, and each lab is provided with recorded lab demonstration. Students are required to study the lesson materials, watch the lecture videos, and program the lab projects with the reference of lab instructions, and accomplish a fully functional sensorless PMSM speed controller with FOC technology by the end of the course.
|
|
Online
|
|
to be scheduled
|
Writing Portable Device Drivers (3.00 Units)
EECS X497.19
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.
|
|
Online
|
|
to be scheduled
|
Designing Embedded Software Using Real-Time Operating Systems (3.00 Units)
EECS X497.31
Learn how to develop critical embedded software utilizing a real-time operating system (RTOS). Participants will learn how to use an RTOS to accomplish the design goals of a real-time system. Understand how to satisfy hard and soft real-time constraints. Gain expertise with memory management, task management, queue management, and timer management. Practical hands-on lab exercises are used to reinforce the concepts learned. FreeRTOS and a Texas Instruments development kit are used for the labs. The course includes a project. Students are required to design a solution to a real-world problem. The solution is to be implemented both with an RTOS and without an RTOS.
|
|
|
|
to be scheduled
|
Fundamentals of Embedded Linux (3.00 Units)
EECS X497.10
Further your understanding of Linux and its adoption as an embedded OS platform. Gain 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.
|
to be scheduled
|
|
|
|
Linux Driver Primer (3.00 Units)
EECS X497.12
Gain a competitive edge by learning how to write Linux Device Drivers. Participants will gain practical knowledge of what constitutes a device driver in Linux, basic Linux device driver building blocks, and how to build and grow a framework that can be used to develop a Linux device driver from scratch. Increase your knowledge of timing, interrupt handling, memory access, how to avoid pitfalls, and other critical issues fundamental to writing Linux device drivers. Hands-on lab exercises reinforce code-writing skills.
|
|
|
Online
|
|
Embedded Systems Design Using ARM Technology (3.00 Units)
EECS X497.39
Increase your understanding of how system-on-chip (SoC) and microprocessors are designed and used in embedded systems development. 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 a survey of ARM processor cores are discussed. A commercial ARM evaluation kit is used to demonstrate cost sensitive embedded applications.
|
|
Online
|
|
|
Applied Control Theory for Embedded Systems (3.00 Units)
EECS X497.4
Apply modern control theory to optimize embedded system designs using microcontrollers or DSP devices. The majority of embedded designs are closed loop control systems, as opposed to open loop control. Gain 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. 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.
|
|
Online
|
|
|
Real-Time Embedded Digital Signal Processing (3.00 Units)
EECS X498.61
Advance your level of expertise in embedded digital signal processing as well as DSP programming techniques. Participants learn about adaptive filtering, digital signal generation, adaptive echo cancellation, speech signal processing, and audio signal processing. A mixture of C, Matlab and DSP assembly-language programming is employed to examine implementation and performance trade-offs. A commercial DSP development kit is used for hands-on learning.
|
to be scheduled
|
|
|
|
Designing and Integrating IoT Devices (3.00 Units)
I&C SCI X481
The explosive growth of the Internet of Things (IoT) is changing our lives. Fueled by dramatic increases in technology and the rapid drop in price for typical IoT components, the IoT is being used to sense, connect, and automate our world. This course explores the design of embedded IoT systems and how these systems are connected to the physical world. It provides an overview of the specialized network communications and security that are required for embedded IoT systems. Course participants gain hands-on experience using the Arduino and Raspberry Pi hardware/software platforms to explore specific concepts and technologies that are important for designing and connecting embedded IoT systems. The Arduino and Raspberry Pi sense and control the environment using add-on components such as sensors, actuators, and expansion boards. Course participants are introduced to different types of sensors and actuators. They learn to program the Arduino and Raspberry Pi to use these components. Since the external world may use continuous or analog signals and the hardware is digital, participants learn how signals are converted from analog to digital and from digital to analog forms. Participants learn how to make design trade-offs between hardware and software. Participants also learn how to program the Raspberry Pi using Python.
|
to be scheduled
|
|
|
|