This repository contains a comprehensive collection of resources, assignments, projects, and code implementations for the Digital Logic Design course. The materials are structured to facilitate learning about digital design concepts, hardware description languages, assembly programming, and computer architecture.
Assembler.py: A Python program implementing an assembler for the Hack computer architecture.Project (Design of Hack Assembler).pdf: Documentation and design details of the Hack assembler project.
DLD-Assignment-01.pdf&DLD-Assignment-02.pdf: Problem sets exploring digital logic design concepts.- Various image files containing solutions and explanations for the assignments.
- Lab manuals and practical exercises, including:
LAB 10 Subtractors.pdfLAB 11+12 Decoders and Encoders.pdf- Supporting images and diagrams for the lab work.
Digital Design Global Edition by M. Morris Mano, Michael Ciletti.pdf: Reference textbook.- COAL_VLecs-master.zip: Collection of lecture codes, tutorials, and reference materials, including HDL and assembly language examples.
- Comprehensive lecture slides covering key topics like:
- Simplification of Boolean Circuits
- Arithmetic Circuits
- Decoders, Encoders, Mux, and DMux
- Design of ALU, Registers, and Memory
- Instruction Set Architecture and Hack Machine Language
- Diagrams and hierarchical illustrations, such as:
Hirearchy of classes.pngmemory hirearchy.JPG- Boolean expressions like maxterms and minterms.
- Scripts and executables for hardware simulation and assembly programming, including:
Assembler.bat,Assembler.shCPUEmulator.bat,HardwareSimulator.sh- Built-in VM code and chip definitions
These programs define the essential components of the Hack computer. Each HDL file describes a specific hardware component, using the HDL syntax supported by the Hack hardware simulator.
Add16.hdl: 16-bit adder.FullAdder.hdl: Combines basic logic gates to perform full addition of bits.HalfAdder.hdl: Basic half-adder implementation.ALU.hdl: Arithmetic Logic Unit implementation, supporting basic arithmetic and logical operations.
Mux.hdl: Basic multiplexer (2-input).Mux16.hdl: 16-bit multiplexer.Mux4Way16.hdl: 4-way multiplexer for 16-bit inputs.Mux8Way16.hdl: 8-way multiplexer for 16-bit inputs.DMux.hdl: Basic demultiplexer.DMux4Way.hdl: 4-way demultiplexer.DMux8Way.hdl: 8-way demultiplexer.
Bit.hdl: Basic memory element to store a single bit.Register.hdl: 16-bit register for data storage.RAM8.hdl: 8-word RAM.RAM64.hdl: 64-word RAM.RAM512.hdl: 512-word RAM.RAM4K.hdl: 4K-word RAM.RAM16K.hdl: 16K-word RAM.PC.hdl: Program Counter, which keeps track of the instruction address.
CPU.hdl: The central processing unit of the Hack computer, integrating the ALU, registers, and control logic.Memory.hdl: Combines RAM and other storage components to create the main memory.Computer.hdl: The top-level module of the Hack computer, integrating the CPU, memory, and input/output control.
And.hdl,Or.hdl,Xor.hdl,Not.hdl,Nand.hdl: Basic gates implemented using HDL.And16.hdl,Or16.hdl,Not16.hdl: 16-bit versions of the basic gates.
- Install Hack Simulator: Use the tools provided in your repository, such as
HardwareSimulator.batorHardwareSimulator.sh, to test HDL files. - Run the HDL Programs:
- Open the
HardwareSimulator. - Load an HDL file (e.g.,
CPU.hdl). - Run tests using the provided
.tstand.cmpfiles.
- Open the
These HDL programs provide a complete implementation of the Hack computer and are perfect for learning computer architecture and hardware design principles.
-
Clone the Repository:
git clone https://github.com/your-username/Digital-Logic-Design.git cd Digital-Logic-Design -
Run the Assembler: Navigate to the
Assembler Projectdirectory and execute:python Assembler.py
-
Explore the Lecture Codes: Open HDL files or assembly codes using a text editor or simulation tools provided in the
toolsdirectory.
- Assembler Implementation: Converts Hack assembly code to binary machine code.
- HDL Designs: Complete set of hardware description language files for digital circuit simulations.
- Instruction Set Architecture: Examples of low-level programming for the Hack computer.
- Comprehensive Resources: Includes assignments, lecture slides, and reference materials.
Contributions, suggestions, and feedback are welcome! Please create a pull request or open an issue to improve the repository.