Module 1 (Introductory Topics)
Computing System
Lecture 1, Continue from CS1111. Source code, compilation, disassembly (live) and machine code. Tell students we will design a simple but complete computer from first principles at a logic circuit level.
Lecture 2, What is a computer? Old generation to smartphones, Moore's Law
Lecture 3, Why digital? Information Representation
CMOS Transistors and Logic Gates
Lecture 4, Transistors as switches, Two state abstraction, Switching logic, CMOS (NMoS + PMoS)
Lecture 5, Realization of a NOT gate, NAND, NAND + NOT = AND, Transistor Networks
Lecture 6, Tutorial on CMOS implementation of Boolean Functions (worked out in class, eg XOR)
Lecture 7, Timing/delays (propagation, contamination), Fan-outs, Power Consumption - static/dynamic, big picture of VLSI
Module 2 (Combinational Logic Design)
Self-study (prerequisites): Boolean Algebra Basics, notes will be provided, Axioms, Distributive law, De Morgan etc.
Lecture 8, Work out numericals on boolean algebra expression simplification
Lecture 9, Canonical Logic Expressions (SOP, POS)
Lecture 10, Example are solved in class from past GATE papers
Lecture 11, What kind of combinational circuits would be required for a computer we will design? Thought exercises. Concept of ALU.
Lecture 12, mux (sw: if-else), demux (sw: switch-case), encoder (sw: indexing/compression), decoder (sw: lookup tables, expansion), priority encoder – draw parallels with their s/w knowledge
Lecture 13, Binary addition and adder (half and full), negative number representation
Lecture 14, 1/2's complement - why does it work? Extending the adder circuit to perform subtraction
Lecture 15, Circuit Simplification (K-maps), Concept of glitches, How simplification helps in glitch free design.
Lecture 16, 7-segment LED logic, Misc design problems
Lecture 17, PLA based design (microcoding truth tables), homework problems
Module 3 (Sequential Logic Design)
Sequential Logic Elements (Latches, Flip-Flops)
Lecture 18, Circuits with feedbacks, R-S and Gated D-Latch, Excitation tables
Lecture 19, Gated D-Latch and D-Flip-Flop, Clocking, Excitation tables
Lecture 20, JK latched-version & racing (toggles), Master-slave based design
Principles for Designing Sequential Logic Circuits
(We will primarily focus on synchronous clock based design)
Lecture 21, Design a 2-bit up and down counter using MS-JK
Lecture 22, T-flipflop, Discussion on D/T/JK based seq. circuit design, ASM charts
Lecture 23, D/T/JK based sequential designs, up/down counters
Counters, Frequency Dividers and Registers
Lecture 24, BCD counters, Johnson and Ring counters, Frequency Dividers
Lecture 25, Registers, Shift Registers and its applications
Lecture 26, Register based memory organization/addressing, Register interconnections (bus design, tri-state buffers), introduce how ALU can use register banks as temporary scratchpad
Finite State Machine (FSM) Design
Lecture 27, Introduction to FSMs, Traffic Light Controller Case Study
Lecture 28, FSM Design (Moore vs Mealy), Practice Problems
Lecture 29, FSM as a sequence detector - practice
Lecture 30, FSM misc. problems (e.g., coin change, vending machine) - practice
Module 4 (Computer System Design)
Includes concepts taught in lab, understanding microinstructions or control words, automation of control signals as desired by an instruction, design of the overall control unit circuit (both microprogrammed and as hardware FSM). A long session (workshop style, typically on a weekend) is conducted to clarify all implementation doubts, many students were almost done implementing their ISA on Logisim. Verilog is also introduced.
Lecture 31, History of CPU evolution, PC Revolution (1960s - 1990s), Mainframes, Minicomputers, Microcomputers to PCs, (IBM S/360, PDP - 1/8/11, Altair 8800, MOS 6502 (birth of Microsoft and Apple), Xerox Alto UI, Intel x86, Contribution of Wipro Infotech, Recommended reading: CHIP Wars
Lecture 32, Architecting our simple processor (Gajendra-1), overview of the data path and register organization along with ALU, Bus access mechanism via controlling tri-state buffers
Lecture 33, From s/w (high level lang) to h/w (machine code), Concept of ISA, Gajendra-1 instructions (4-bit opcode), Assembly language
Lecture 34, Stored program execution. Fetch (PC, MAR), Decode (Instruction Decoder)
Lecture 35, Stored program execution. IR, MAR, MDR, and memory
Lecture 36, Manually generating control signals (with clock strobes) to move data across memory, bus and registers as desired. Multiplication using repeated addition done using manual control signal generation.
Lecture 37, Software based control logic, Ring counter in control circuit, T-states (multicycle)
Lecture 38, Implementation details for Gajendra-I, Logisim demo
Lecture 39, Implementation details for Gajendra-I, Logisim demo, Control Logic as FSM (H/W)
Lecture 40, Programming Gajendra-1, Multiplication, Fibonacci, Arithmetic Series Display (loops)
Lecture 41, Addressing Modes, Discussion of function call, Call stack
Lecture 42, Course conclusion and summary, Homebrew CPU projects.
Final Computer Design Exercise: Gajendra-1 CPU
With this design skills we conclude the course and expect them to smoothly switch over to the CS2600 course (Computer Organization and Architecture). Roadmap:
CS2300: How to design and build a computer that can execute code?
design for bare functionality
CS2600: How to design (and/or build) a computer that can execute code efficiently?
design for performance
CS6600: How to improve performance incorporating the state-of-the-art recipes in architecture?
state-of-the-art design