Digital Logic for Computing
John Seiffertt
Springer International Publishing
The book provides a bottom-up approach to understanding how a computer works and how to use computing to solve real-world problems.  It covers the basics of digital logic through the lens of computer organization and programming.  The reader should be able to design his or her own computer from the ground up at the end of the book.  Logic simulation with Verilog is used throughout, assembly languages are introduced and discussed, and the fundamentals of computer architecture and embedded systems are touched upon, all in a cohesive design-driven framework suitable for class or self-study