The Game Plan
I am studying the course with the beginning of digital logic gates that accept 1’s and 0’s as inputs and produce 1’s and 0’s as outputs. Then explore how to combine logic gates into more complicated modules such as adders and memories. Then shift gears to programming in assembly language, that native tongure of the microprocessor. Finally, put together to build a microprocessor that runs these assembly language programs.
A great advantage of digital systems is that the building blocks are quite simple: just 1’s and 0’s. The designer’s challenge is to combine these simple blocks into complicated systems. One of the major task is to learn how to manage complexity.
The Art of Managing Complexity
- Abstraction: hiding details when they are not important. The critical technique for managing complexity. Levels of abstraction for an electronic computing system are
- Application Software (Programs)
- Operating Systems (Devices, Drivers)
- Architecture (Instructions, Registers): describe a computer from the programmer’s perspective.
- Microarchitecture (Datapaths, Controllers)
- Logic (Adders, Memories)
- Digital Circuits (AND Gates, NOT Gates)
- Analog Circuits (Amplifiers, Filters)
- Devices (Transistors, Diodes)
- Physics (Electrons)
- Discipline: the act of intentionally restricting your design choices so that you can work more productively at a higher level of abstraction. Using interchageable parts is a familiar application of discipline.
- The Three-Y’s: hierarchy, modularity, and regularity.
- Hierarchy involves dividing a system into modules, then further sub-dividing each of these modules until the pieces are easy to understand.
- Modularity states that the modules have well-defined functions and interfaces, so that they connect together easily without unanticipated side affects.
- Regulairy seeks uniformity among the modules. Common modules are reused many times, reducing the number of distinct modules that must be designed.
The Digital Abstraction
- Digital systems represent information with discrete-valued variables.
- Boolean logic: a system of logic operationg on binary variables.
Number Systems
- Decimal Numbers
- Binary Numbers
- Hexadecimal Numbers
- Bytes, Nibbles, and All That Jazz
- Nibble: a group of 4 bits, or half a byte.
- Signed Binay Number Systems: sign/magnitude and two’s complement.
Logic Gates
- NOT Gate (inverter)
- Buffer
- AND Gate
- OR Gate
- XOR Gate
- NAND Gate
- NOR Gate