Skip to content

roso1102/digitaldesign

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

13 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Digital Design Learning Repository

Welcome to my comprehensive Digital Design learning journey! This repository documents my exploration of digital systems, hardware description languages, and low-level programming concepts.

Featured Projects: Verilog Logic Gates

AND Gate Module and Testbench

This project demonstrates a simple 2-input AND gate written in Verilog, along with its testbench and waveform output.

AND gate GTKWave output

The waveform shows the expected truth table for an AND gate:

a b y (a & b)
0 0 0
0 1 0
1 0 0
1 1 1

OR Gate Module and Testbench

This project demonstrates a simple 2-input OR gate written in Verilog, along with its testbench and waveform output.

OR gate GTKWave output

The waveform shows the expected truth table for an OR gate:

a b y (a | b)
0 0 0
0 1 1
1 0 1
1 1 1

NOT Gate Module and Testbench

This project demonstrates a simple NOT gate (inverter) written in Verilog, along with its testbench and waveform output.

NOT gate GTKWave output

The waveform shows the expected truth table for a NOT gate:

a y (~a)
0 1
1 0

XOR Gate Module and Testbench

This project demonstrates a simple 2-input XOR gate written in Verilog, along with its testbench and waveform output.

XOR gate GTKWave output

The waveform shows the expected truth table for a XOR gate:

a b y (a ^ b)
0 0 0
0 1 1
1 0 1
1 1 0

XNOR Gate Module and Testbench

This project demonstrates a simple 2-input XNOR gate written in Verilog, along with its testbench and waveform output.

XNOR gate GTKWave output

The waveform shows the expected truth table for a XNOR gate:

a b y (a ~^ b)
0 0 1
0 1 0
1 0 0
1 1 1

NOR Gate Module and Testbench

This project demonstrates a simple 2-input NOR gate written in Verilog, along with its testbench and waveform output.

NOR gate GTKWave output

The waveform shows the expected truth table for a NOR gate:

a b y ~(a | b)
0 0 1
0 1 0
1 0 0
1 1 0

NAND Gate Module and Testbench

This project demonstrates a simple 2-input NAND gate written in Verilog, along with its testbench and waveform output.

NAND gate GTKWave output

The waveform shows the expected truth table for a NAND gate:

a b y ~(a & b)
0 0 1
0 1 1
1 0 1
1 1 0

Buffer Gate Module and Testbench

This project demonstrates a simple buffer gate written in Verilog, along with its testbench and waveform output.

Buffer gate GTKWave output

The waveform shows the expected truth table for a buffer gate:

a y
0 0
1 1

πŸ“š What's Inside

This repository serves as a knowledge base and practical workspace for:

  • Digital Design Fundamentals - Logic gates, combinational & sequential circuits
  • C Programming - Low-level programming, embedded systems, and hardware interfacing
  • Verilog HDL - Hardware description and digital system modeling

πŸ—‚οΈ Repository Structure

DigitalDesign/
β”œβ”€β”€ πŸ“ digital-design/          # Digital design theory and projects
β”‚   β”œβ”€β”€ πŸ“ combinational/       # Combinational logic circuits
β”‚   β”œβ”€β”€ πŸ“ sequential/          # Sequential logic & state machines
β”‚   β”œβ”€β”€ πŸ“ memory/              # Memory systems and storage
β”‚   └── πŸ“ processors/          # CPU design and architecture
β”œβ”€β”€ πŸ“ c-programming/           # C language learning and projects
β”‚   β”œβ”€β”€ πŸ“ basics/              # Fundamentals and syntax
β”‚   β”œβ”€β”€ πŸ“ embedded/            # Embedded C programming
β”‚   β”œβ”€β”€ πŸ“ hardware-interface/  # Hardware communication
β”‚   └── πŸ“ projects/            # Practical implementations
β”œβ”€β”€ πŸ“ verilog/                 # Verilog HDL code and designs
β”‚   β”œβ”€β”€ πŸ“ basics/              # Basic Verilog concepts and gates
β”‚   β”œβ”€β”€ πŸ“ modules/             # Reusable Verilog modules
β”‚   β”œβ”€β”€ πŸ“ testbenches/         # Simulation and testing
β”‚   └── πŸ“ fpga-projects/       # FPGA implementation projects
β”œβ”€β”€ πŸ“ images/                  # Simulation screenshots and diagrams
└── πŸ“„ README.md                # Main documentation

🎯 Learning Objectives

Digital Design

  • Boolean algebra and logic minimization
  • Combinational circuit design (multiplexers, decoders, encoders)
  • Sequential circuit design (flip-flops, counters, registers)
  • State machine design and implementation
  • Memory systems (RAM, ROM, cache)
  • Computer architecture fundamentals
  • Timing analysis and clock domains

C Programming

  • C fundamentals and syntax
  • Pointers and memory management
  • Bit manipulation and bitwise operations
  • Embedded C programming
  • Hardware register manipulation
  • Interrupt handling
  • Real-time programming concepts

Verilog HDL

  • Verilog syntax and modeling styles
  • Behavioral vs. structural modeling
  • Combinational and sequential logic in Verilog
  • Testbench development
  • Synthesis considerations
  • FPGA implementation
  • Timing constraints and analysis

πŸ› οΈ Tools & Environment

Software Tools

  • Text Editor/IDE: VS Code with Verilog extensions
  • C Compiler: GCC/MinGW for Windows
  • Verilog Simulator: ModelSim, Vivado, or open-source alternatives
  • FPGA Tools: Xilinx Vivado, Intel Quartus, or Lattice Diamond
  • Version Control: Git

Hardware Platforms

  • Development boards (Arduino, FPGA boards)
  • Logic analyzers and oscilloscopes
  • Breadboards and basic electronic components

πŸ“– Key Resources

Books

  • "Digital Design and Computer Architecture" by Harris & Harris
  • "The C Programming Language" by Kernighan & Ritchie
  • "Verilog HDL: A Guide to Digital Design and Synthesis" by Palnitkar

Online Resources

Documentation

  • IEEE 1364 Verilog Standard
  • C11 Standard (ISO/IEC 9899:2011)
  • FPGA vendor documentation

πŸš€ Getting Started

Current Workflow

Learning Phase: Create files anywhere in the repository as you learn and experiment. Don't worry about perfect organization initially - focus on understanding concepts and building things!

Organization Phase: Later, we'll sort and move files into the structured folders shown above based on what you've learned and created.

For C Programming

# Compile and run a C program (Windows PowerShell)
gcc -o program.exe program.c
.\program.exe

For Verilog Development

# Basic Verilog compilation (using Icarus Verilog)
iverilog -o simulation.vvp module.v testbench.v
vvp simulation.vvp

Setting Up the Environment

  1. Clone or download this repository
  2. Install required tools (GCC/MinGW, Verilog simulator)
  3. Configure your development environment
  4. Start creating files and learning - organization comes later!

πŸ“ Progress Tracking

File Organization Strategy

πŸ“‹ Current Approach: Files are created in the root directory during active learning πŸ—‚οΈ Future Organization: Files will be moved to appropriate folders in the structure above πŸ“‚ Temp Files: Keep experimenting! We'll sort everything later

Recent Updates

  • Aug 17, 2025 - Added NOR, XNOR, XOR, NOT, OR, AND gate Verilog projects and updated documentation
  • Aug 7, 2025 - Initial repository setup and README creation

Current Focus

  • Learning area currently being studied
  • Specific project or concept being implemented
  • Next milestone or goal

Files to Organize Later

This section will track files that need to be moved to proper folders:

  • List of files created during learning sessions
  • Notes on which folder each file should go to
  • Any files that need renaming or restructuring

🀝 Contributing to This Repository

This is a personal learning repository, but if you find errors or have suggestions:

  1. Feel free to open an issue
  2. Suggest improvements or additional resources
  3. Share alternative implementations or approaches

πŸ“œ License

This repository is for educational purposes. Code examples and implementations are provided as-is for learning and reference.


πŸŽ–οΈ Acknowledgments

  • Thanks to the digital design community for excellent resources
  • Appreciation for open-source tools that make learning accessible
  • Recognition of educators and content creators in this field

Happy Learning! πŸš€

Last Updated: August 2025


"The best way to learn digital design is to build something." - Keep experimenting and building!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published