A learning project implementing digital logic circuits in Lua, including basic gates, adders, and arithmetic operations.
Lua_Practice-DSA/
├── init.lua # Main entry point - imports everything
├── basic_gates/ # Basic logic gates
│ ├── gates_2inputs.lua # AND, OR, NOT, XOR (2 inputs)
│ └── gates_3inputs.lua # 3-input versions
├── adders/ # Adder circuits
│ ├── half_adder.lua # Half adder
│ └── full_adder.lua # Full adder
├── arithmetic/ # Arithmetic operations
│ ├── multi-bit_adder.lua # Multi-bit addition
│ ├── multi-bit_multiplier.lua # Multi-bit multiplication
│ └── multi-bit_sub.lua # Multi-bit subtraction
├── utils/ # Utility functions
│ └── display_utils.lua # Binary display and conversion
└── examples/ # Example usage
├── test_gates.lua # Test basic gates
├── test_adders.lua # Test adders
├── test_multiplication.lua # Test multiplication
└── calculator_demo.lua # Simple calculator demo
local dl = require("init") -- Import everything
-- Use basic gates
local result = dl.AND(true, false) -- false
-- Use adders
local sum = dl.multi_bit_adder.multi_bit_adder({1,0,1}, {1,1,0})
-- Use utilities
print(dl.utils.binary_to_string({1,0,1,0})) -- "0101"local gates = require("basic_gates.gates_2inputs")
local adder = require("adders.full_adder")
local multiplier = require("arithmetic.multi-bit_multiplier")# Test basic gates
lua examples/test_gates.lua
# Test adders
lua examples/test_adders.lua
# Test multiplication
lua examples/test_multiplication.lua
# Run calculator demo
lua examples/calculator_demo.lua- LSB (Least Significant Bit) first:
{1,0,1,0}represents0101in binary - Display format: MSB first, so
{1,0,1,0}displays as"0101" - Decimal conversion:
{1,0,1,0}= 1×2⁰ + 0×2¹ + 1×2² + 0×2³ = 5
AND(a, b)- Logical ANDOR(a, b)- Logical ORNOT(a)- Logical NOTXOR(a, b)- Logical XOR
half_adder(a, b)- Returns sum, carryfull_adder(a, b, cin)- Returns sum, carrymulti_bit_adder(a, b)- Multi-bit addition
multi_bit_multi(a, b)- Multi-bit multiplicationmulti_bit_sub(a, b)- Multi-bit subtraction
binary_to_string(array)- Convert to display stringbinary_to_decimal(array)- Convert to decimaldecimal_to_binary(num, bits)- Convert decimal to binaryprint_binary_operation(a, b, result, op)- Pretty print operation
-
Basic Logic Gates (2-input) -
basic_gates/gates_2inputs.lua- AND gate implementation
- OR gate implementation
- NOT gate implementation
- XOR gate implementation
- Modular design with return table for reusability
-
Extended Logic Gates (3-input) -
basic_gates/gates_3inputs.lua- 3-input AND gate
- 3-input OR gate
- 3-input XOR gate
- Complete truth table testing
-
Half Adder Circuit -
adders/half_adder.lua- Sum and carry output generation
- Integration with 2-input gates module
- Truth table validation
-
Full Adder Circuit -
adders/full_adder.lua- 3-input addition with carry-in
- Sum and carry-out generation
- Complete truth table testing
-
Multi-bit Addition -
arithmetic/multi-bit_adder.lua- Variable-length binary number addition
- Proper carry propagation
- Overflow handling
-
Multi-bit Multiplication -
arithmetic/multi-bit_multiplier.lua- Binary multiplication using shift-and-add algorithm
- Integration with multi-bit adder
- LSB-first bit representation
-
Multi-bit Subtraction -
arithmetic/multi-bit_sub.lua- Two's complement subtraction
- Proper borrow handling
- Integration with existing components
-
Project Organization -
init.lua,utils/,examples/- Centralized import system
- Utility functions for binary operations
- Example files and demos
- Clean modular architecture
-
Flip-Flops and Latches
- SR Latch
- D Flip-Flop
- JK Flip-Flop
- T Flip-Flop
-
Counters and Registers
- Binary up/down counter
- Shift register
- Parallel-in-serial-out register
-
Multiplexers and Demultiplexers
- 2:1, 4:1, 8:1 multiplexers
- 1:2, 1:4, 1:8 demultiplexers
- Encoder/Decoder circuits
-
Enhanced Arithmetic Operations
- Binary division circuit
- Floating-point representation
- BCD (Binary-Coded Decimal) arithmetic
-
ALU (Arithmetic Logic Unit)
- Combined arithmetic and logic operations
- Control signals implementation
- Status flags (zero, carry, overflow)
-
Memory Systems
- RAM cell simulation
- ROM implementation
- Cache memory basics
-
CPU Components
- Instruction decoder
- Program counter
- Simple processor simulation
-
Comprehensive Testing Framework
- Automated truth table generation
- Performance benchmarking
- Edge case validation
-
Code Quality Improvements
- Error handling and validation
- Code documentation and comments
- Modular architecture refinement
✅ Fundamental Understanding
- Boolean algebra implementation
- Truth table verification
- Circuit composition and modularity
✅ Arithmetic Operations
- Binary addition with carry propagation
- Multiplication through repeated addition
- Subtraction using two's complement
✅ Programming Skills
- Lua language proficiency
- Modular programming design
- Algorithm implementation
This project is organized for learning digital logic concepts:
- Basic Gates: Start with simple AND, OR, NOT, XOR operations
- Adders: Build up from half-adder to full-adder to multi-bit
- Arithmetic: Implement multiplication and subtraction using adders
- Utilities: Helper functions for working with binary representations
Each module includes test functions to demonstrate functionality and verify correctness.