Embedded Systems ENGINEERING AND TECHNOLOGY KNOWLEDGE YOU PUT TO WORK Gain Knowledge Tailored to Working Professionals in These Key Fields Hardware designsystem architecture, board design, FPGA, protocols and components Software developmentreal-time embedded programming, Linux-based systems, device programming Firmware and network programming Digital signal processing (DSP and DV) and image processing Mobile device design and programming Program Summary Embedded Systems refer to a growing range of function-specic computers and communication systems, including smartphones, set-top boxes, networking equipment, industrial controllers and military electronics. UCSC Extension Silicon Valley offers a comprehensive certicate program in Embedded Systems that will help new engineers gain experience in the eld, and benet practitioners who want to keep up with the changing technology. Our rich curriculum will spur the growth of your career in the vast marketplace of embedded systems. Our courses are structured to multiple levels of professional expertise. Many courses offer students hands-on board projects to implement the theories learned in lectures. ucsc-extension.edu/engineering Join us for a FREE Open House to learn more. Details inside Curriculum *Choose one of four core courses Units Course System Design * Embedded Systems Hardware Architectures, Introduction .......1.5 ......21319 Mobile Device Hardware Overview........... 1.5 ......30176 IO Concepts and Protocols: PCI Express, Ethernet, and Fibre Channel .3.0 ......22177 IO Design Fundamentals ...........................3.0 ......30170 Printed Circuit Board Design for Signal Integrity and EMC Compliance ......1.5 ......21943 Jitter Essentials .........................................1.5 ......21321 Comprehensive Signal and Power Integrity for High-Speed Digital Systems.................3.0 ......22874 Design Overview of High Efciency Switch-Mode Power Supply ......................3.0 ......23590 Designing Xilinx CPLDs and FPGAs, Introduction ..............................................3.0 ........6346 Designing with Xilinx FPGAs, Comprehensive .........................................3.0 ......22179 Digital Design with FPGA .........................3.0 ......30207 SystemVerilog for ASIC & FPGA Design ....3.0 ......20095 Embedded Linux * Embedded Linux Design and Programming ............................................3.0 ........3364 Linux Device Drivers .................................3.0 ........2470 Linux Device Drivers, Advanced ................3.0 ........1016 Real-Time Systems Real-Time Embedded Systems Programming, Introduction .......................3.0 ........5381 Embedded Systems I/O Programming- USB, R232, SPI, I2C and Analog ................3.0 ......30028 Embedded Software * Embedded Firmware Essentials ................2.0 ........4357 Embedded Boot Loaders: BIOS and UEFI ..3.0 ......23092 TCP/IP Network Programming on Linux ...3.0 ......30235 USB Device Interface: Architecture, Protocols and Programming .....................3.0 ........2179 Software Testing: Techniques, Tools and Practices ...........................................3.0 ......20501 Developing Applications for iPhone and iPad, Introduction ...................1.5 ......21938 Developing Applications for Android Mobile Devices ............................2.0 ......21956 C Programming for Beginners...................3.0 ........5208 DSP and DV * Digital Signal Processing, Fundamentals ...2.0 ........5758 DSP Applications in Audio, Imaging, and Communications Systems ..................3.0 ........0516 Computer Vision and Image Processing .... 3.0 ........4926 Digital Video Interfaces and Protocols ...... 3.0 ......30093 Digital Video Compression and Codec ...... 3.0 ......19025 Certicate Requirements To obtain the Certicate in Embedded Systems, you must successfully complete a total of 14 units, including one of the four core courses. Each core course is focused on one of three major specialties: Hardware Design, Embedded Software, and Digital Signal Processing and Digital Video. Since the embed- ded eld is diverse, only one core course is required in the area of the students interest or specialization. Prerequisites Technical aptitude, a background in science and technology, an engineering degree, programming experience, or equivalent knowledge acquired through training and experience in the eld. Prospective students are advised to review prerequisites that apply to individual courses. Recommended Course Sequence Beginners should take the core courses rst. After that, courses may be taken in any order provided the prerequisites are met. Note: Some courses may be listed in more than one program, however, only one course may be shared between two Engineering and Technology certicate programs unless otherwise noted. Program Contact Engineering and Technology Department, (408) 861-3860 or e-mail extensionprogram@ucsc.edu C Programming for Beginners This course is for individuals who want to learn C programming language but have little or no program- ming background. The course begins with an overview of programming and tools. It introduces functions, data types, input/output, strings, operators, precedence, and expressions. It also demonstrates the use of control statements, arrays, and pointers for problem solving. You will receive assignments to write non-trivial programs and learn to create modular programs with efciency and readability. Course 5208 Comprehensive Signal and Power Integrity for High-Speed Digital Systems This course covers signal and power integrity analysis of high-speed digital systems, and the modeling and design techniques used in high-speed links (in board, package, and connector). The instructor introduces IO modeling including IBIS, behavioral, functional, and ESD. Also explained are signaling techniques such as differential, NRZ, pulse, and multi-level, as well as simulation methods. You will learn the fundamental concepts in equalization design. At the system level, topics include clocking schemes such as PLL, DLL and CDR; timing jitter analysis; and power analysis topics such as IR drop, AC noise, simultaneous switching noise and decoupling capacitor. Course 22874 Computer Vision and Image Processing Computer vision is widely used in the industrial, medical, document and security elds. This course begins with vision and image fundamentals, including image formation and display, digital camera and image capture, the human visual system and visual perception. You will learn the basics of digital image processing, including spatial and frequency domain ltering techniques and compression. The course covers practical image analysis and inference methods, including feature detection, image segmentation, matching and stitching. There will also be a discussion of emerging technologies, applications, and trends. Course 4926 Design Overview of High Efciency Switch-Mode Power Supply In this course, youll gain a hands-on understanding of high efciency analog and digital switch-mode power supplies that can meet system needs and regulatory requirements. The course covers the concepts, opera- tions, and design considerations related to efciency, Embedded System Certicate Copyright 2013 The Regents of the University of California. All rights reserved. Enrollment Information Visit ucsc-extension.edu/engineering for the most up-to-date information about our courses and programs, including textbooks, instructors, schedules and locations. Enroll online at ucsc-extension.edu. EMI, thermal and safety. The lectures will be supple- mented with hardware demonstrations and waveform observations of power supply behaviors. The course will equip you with the modern integrated solutions needed to achieve high efciency and high power density, and includes the topics of digitally controlled power supplies. Course 23590 Designing with Xilinx FPGAs, Comprehensive This course covers how to use FPGA resources, manage constraints and debug methods for real world designs. Embedded design combining soft processors with fabric is discussed at length, followed by high performance, low-power design and multiple clock domain techniques. Identifying bottlenecks and hot-spots is discussed along with the trade-offs of fabric versus code-based solutions. Advanced debugging techniques are also covered. In-class demonstrations occur weekly, and you will must complete a hands-on design project using the Xilinx Spartan 3A or 3AN Starter Kit. Course 22179 Designing Xilinx CPLDs and FPGAs, Introduction This course is a practical introduction to programmable logic design with Xilinx FPGAs and CPLDs. Using sev- eral examples and design techniques, you will be taken through a complete PLD design. Upon completion of the course, you will be able to complete a design with Xilinx CPLDs and FPGAs, and understand the design and timing reports. The course will include two student projects. Topics include a logic design process review, design software, Xilinx CPLDs and FPGA architecture, design techniques and optimization, JTAG, power optimization and large design techniques. Course 6346 Developing Applications for Android Mobile Devices Android is an open source platform for smartphones, tablets and many other Internet-enabled mobile devices. This course begins with an overview of the Android development platform. You will learn from a simple application that demonstrates how to build applications for the new platform. The course explains the platform architecture and basic mobile building blocks. You will complete programming assignments to learn how to program the platform with Java code, debug it, implement the UI, and use optional APIs and Google libraries to enrich the application. Course 21956 Developing Applications for iPhone and iPad, Introduction This course provides an overview of using the iOS SDK to develop iPhone and iPad applications. It begins with discussion of Xcode and Objective-C. You will learn various iOS programming frameworks, user interface development, memory management and program design. The App Store submission process and guidelines are covered. Discussions also delve into special considerations for the iPad. Upon completing the course, you will have a solid understanding of the iOS SDK and know how to develop applications. Course 21938 Digital Design with FPGA This course provides the knowledge and hands-on experience needed to design digital logic blocks in FPGA. The course introduces how to build designs in FPGA and covers specic designs of various digital blocks. Starting from combinational logic, look-up tables, carry chains, and multiplexers, you will learn to design arithmetic and comparator functions using FPGA and test them. The instructor then explains various sequential ops, fast counters and shift register look-up. The course also explores the embedded RAM, ROM and nite state machine designs using Xilinx architecture. Course 30207 Digital Signal Processing, Fundamentals This course introduces students to the basic concepts, fundamental theory and implementation of DSP tech- nology. Topics include digital signals, digital systems, Fourier transform, Z-transform, sampling, digitaliza- tion, transform analysis of LTI systems, structures for discrete-time systems, digital lter design, discrete Fourier transform, Hilbert transform, and fast Fourier transform algorithms. MATLAB will be introduced and used to demonstrate concepts and principles of DSP. The course features expert guidance and interactive instructions to help you understand the fundamentals of DSP technologies and design considerations. MATLAB and Simulink Suite software are required. Course 5758 Digital Video Interface and Protocols This course covers the major DV protocols in use today, and the architecture and design consideration for each one. The course begins with an overview of the basic video concepts and video system architecture in real applications. Several common interface standards will be covered in detail: DVI (Digital Visual Interface), HDMI (High-Denition Multimedia Interface), DisplayPort and USB video class. The discussions address architectures, comparisons, operations, and design considerations. You will learn the important features of each interface. The course concludes with a discussion of emerging trends in digital video. Course 30093 DSP Applications in Audio, Imaging, and Communications Systems This course introduces the basics of audio-speech, image processing and digital communication systems and encompasses theory, algorithms and practical techniques used in these three popular DSP applica- tions. You will learn C/C++, Assembly, or MATLAB using standard DSP libraries. Course 0516 Embedded Boot Loaders: BIOS and UEFI In this course, youll learn about Basic Input/Output System (BIOS) and Unied Extensible Firmware Interface (UEFI). The course starts with BIOS history and architecture. You will learn BIOS device enumeration and conguration, BIOS interfaces including software interrupts, option ROM interface, and boot mechanism. Following an overview of UEFI history, architecture and services, youll learn the UEFI driver architecture and how to write UEFI drivers and applications. The course concludes with UEFI debugging methodologies, briey addresses U-BOOT and includes some hands-on programming. Course 23092 Embedded Firmware Essentials This course provides practical knowledge and training in rmware development. It begins with the RISC instruction set (ARM and MIPS), pipelines, system memory hierarchy, and SSD interface. You will learn to congure the clock and program the interrupts and IOs. The course covers the rmware coding environment and practices. It also covers common rmware topics and techniques such as button debounce and LEDs, circular buffers, and debugging with JTAG and GDB. You will learn to program I2C bus and power-on sequence. A board project provides hands-on experience. Course 4357 Embedded Linux Design and Programming This course covers the fundamentals of building and installing an embedded Linux operating system version 2.6 on an ARM 9 processor platform, and provides hands-on experience for creating cross-platform Embedded Systems and VLSI Open House Join us for a FREE Open House to learn about two of our most popular certicate programs. The VLSI Engineering Certicate Program is for professionals working in the integrated circuit, ASIC, semiconductor, EDA, device and system industries in Silicon Valley. The Embedded Systems Certicate Program is for professionals working in the hardware and system design elds, with courses in system design, embedded programming, real-time systems, and DSP/DV. Ask presenters about new developments in both areas and how these courses can help you break into a new eld or advance your career. Course 20544 and 22403 For information and to register, visit ucsc-extension.edu/events. F R E E
E V E N T Courses continue on reverse environments using the GNU tools. Basic concepts for designing, testing, and customizing embedded Linux will be covered, including how the Linux scheduler is implemented, and how to write Linux kernel modules and remotely debug the embedded Linux applications. Course 3364 Embedded Systems Hardware Architectures, Introduction This course covers the hardware components and interfaces in a typical embedded system. The course begins with an inside look at some typical embedded systems and the functional blocks within those systems. The course addresses design considerations and several approaches to system building. Also covered are the various types of memory commonly used in embedded systems, basic concepts in microprocessors, microcontrollers and DSP, and an introduction to the typical buses used at the system level. Course 21319 Embedded Systems I/O Programming: USB, RS232, SPI, I2C and Analog This course examines common external IO architec- tures for embedded systems and provides hands-on instruction in designing and developing IO sub- systems under real-time constraints. A variety of IO architectures are addressed, including USB, RS232, SPI, I2C, and Analog IO. Discussions cover physical interfaces, input/output protocols, and the design and implementation of the IO subsystems that interact with real-time applications. Issues of bandwidth, latency and real-time are also discussed. Youll gain practical experience designing and coding embedded systems on an ARM microcontroller based SDK. Course 30028 IO Concepts and Protocols: PCI Express, Ethernet, and Fibre Channel This course focuses on IO technologies and walks you through the complexities of IO subsystems in modern computers, and the networking and storage subsystems to which they are attached. After an introduction to the basic concepts of IO, the course covers PCI Express, Ethernet and Fibre Channel. Discussion will include operation and protocols and exploration of how these technologies work. You will follow an applications IO request all the way from the system call to when the data actually makes it out of the wire. Course 22177 IO Design Fundamentals This course is an introduction to IO interfacing at chip and board levels. It covers the advantages and disad- vantages of TTL, CMOS, low-voltage CMOS, LVDS and optical interfaces. The course emphasizes fundamental concepts such as transmission line analysis, slew rate, termination, etc. You will also learn basic IO logic, timing analysis and package models. The course also covers bit error rate, bi-directional IO and decision feedback lters. Because most solutions are silicon-based, ESD concepts and techniques will also be discussed. Course 30170 Jitter Essentials Learn the denitions of various types of jitter (includ- ing phase noise), understand which type of jitter is important to your application and why, plus learn how to propagate jitter through a system, create jitter bud- gets, measure and minimize jitter, and more. Emphasis will be placed on developing a working knowledge of jitter, such as establishing a common language, under- standing jitter beyond the denitions, gaining insight by making simplifying assumptions, and visualizing relationships between different types of jitter. Course 21321 Linux Device Drivers This course covers the design and implementation of device drivers for the Linux operating system, and the interfaces to the Linux kernel for writing them. Topics include compiling the kernel; building and running; character and block device driver concepts; PCI, I/O, and timer routines; hardware management and interrupt han dling; networking drivers; PROC le system and IOCTL interface; and kernel mechanisms and advanced topics. Course 2470 Linux Device Drivers, Advanced This course will enhance your understanding of the art of writing Linux device drivers. You will explore the framework that can be used to develop a commercial grade driver. The course includes detailed discussion of the USB and PCI family (PCI-E, PCIe) subsystems, as well as Linux kernel services and facilities. The course includes a board project, and code review of real-world drivers. Additional discussions cover live debugging with Kprobes, proling with Oprole, and a survey of industry trends including virtualized drivers, iSCSI and serial IO buses. Course 1016 Mobile Device Hardware Overview This course gives an overview of typical mobile device hardware, including architecture, components and system management considerations. The course begins with an inside look at a typical mobile device such as an iPhone or iPad. It covers the functions of applica- tion processor, memory and system interconnects. You will learn the mobile-specic IO subsystem and components which create the unique and attrac- tive features of mobile devices, including the various sensors (GPS, accelerometer, Gyroscope), the touch display, and the camera. Also covered are power management and other mobile system considerations. Course 30176 Printed Circuit Board Design for Signal Integrity and EMC Compliance This course presents simplied design techniques for the design and layout of printed circuit boards to achieve both signal integrity and electromag- netic compatibility (EMC) for both experienced and entry-level engineers. Design and layout techniques are introduced in a simple, step-by-step presentation that allows plenty of opportunities to address specic questions. Emphasis is placed on real-life examples that demonstrate good layout practices that can be incorporated immediately for high-performance designs and products. Course 21943 Real-time Embedded Systems Programming, Introduction This introductory course reviews embedded system hardware, interfaces, and the requirements of real-time operations. It discusses timing analysis and real-time programming techniques and architectures, and covers the use of RTOS to effectively structure large programs and design tasks and device drivers to meet real-time requirements. You will learn common topics in real- time systems, such as interrupt handling, polling, using timers, and detecting and preventing deadlocks. There will also be discussions of multi-threading, cooperative vs. preemptive multi-tasking and inter- process communications. Course 5381 SystemVerilog for ASIC and FPGA Design This course prepares hardware engineers, ASIC and FPGA designers, and design-support staff to use the high-level syntax of SystemVerilog to design, debug, and synthesize digital logic for ASICs, FPGAs, and IP cores. You will learn SystemVerilogs basic building blocks and language constructs, including synthesizable data types and operators, structures and unions, 2-D arrays and loops, and the bus interface unit. In lab sessions, they will write code and synthesize it into digital logic and bus fabric, using both ASIC and FPGA tools. Course 20095 TCP/IP Network Programming on Linux This course covers the fundamentals of designing and programming applications or devices on the TCP/IP based distributed computing systems under Linux. C/ Linux based socket network programming will be used to implement applications based on the TCP/ IP client/server architecture. You will learn to design network applications and share data across hetero- geneous systems on the Internet. Additional topics include effective programming for real-world network conditions, network performance, diagnostics and debugging tools. You will learn to do projects for net- work applications such as the HTTP server, WiFi-based sensor clients and Web-based controller systems. Course 30235 USB Device InterfaceArchitecture, Protocols and Programming This course covers USB architecture, protocols and features. Communication, control, and application layer protocols for generic USB devices are covered. You will learn how to pick the optimal USB protocols to meet performance and bandwidth requirements. The course introduces the basic USB programming model, USB libraries and the higher level USB software required to implement specic device functionality. The course emphasizes effective design and test techniques and the use of USB debugging tools. The course focuses on the device side USB interface, and includes a class project based on a PIC USB kit. Course 2179 Not printed or mailed at state expense. 611795-1303-1634 (08/09/13)