The Microprocessors course introduces general processor architectures and operational models, and then focuses more narrowly on the ARM processing system and peripheral circuits. It is suitable for use as a stand-alone first course, but it does assume some knowledge of digital design and some exposure to programming in C, Java, or a related language. 
The course is built around a series of hands-on programming projects that implement basic functions and low-level peripheral controller algorithms in both assembly language and C. The projects include background reading material, homework problems, and one or more design projects, and they illustrate core concepts while emphasizing good programming techniques. Initial projects use tutorials to introduce the ARM architecture and assembly language programming, and later projects use the C language and present interrupts and the various busses and peripheral circuits available to the ARM. Each project includes required design tasks that present foundational concepts, and optional design challenges that extend beyond the basics. 
Xilinx’s free SDK tool is used for design entry, programming, and debugging. A standard hardware definition (.hdf) file makes all Blackboard’s sensors and ports available as memory-mapped peripherals, so no particular hardware knowledge is needed. 
At the end of each two-week project, students present their completed projects to an instructor or assistant. During the presentation, the instructor can ask questions to gauge comprehension, discuss design trade-offs, and provide feedback and guidance as appropriate. Submission forms are provided for recording and submitting scores. 
By the end of the course, students are able to write ARM assembly programs, use the ARM interrupt system, and write higher-level C programs to access all on-chip peripherals. 
We welcome corrections, suggestions, and ideas for new design projects. Please send any comments to contact@realdigital.org