Close Menu
  • Analog Design
    • Latest Analog Layout Interview Questions (2025)
  • Digital Design
    • Digital Electronics Interview Question(2025)
    • Top VLSI Interview Questions
  • Physical Design
    • Physical Design Interview Questions for VLSI Engineers
  • Verilog
    • Verilog Interview Questions(2024)
  • Forum
Facebook Instagram YouTube LinkedIn WhatsApp
SiliconvlsiSiliconvlsi
Forum Questions Register in Forum Login in Forum
Facebook Instagram YouTube LinkedIn WhatsApp
  • Analog Design
    • Latest Analog Layout Interview Questions (2025)
  • Digital Design
    • Digital Electronics Interview Question(2025)
    • Top VLSI Interview Questions
  • Physical Design
    • Physical Design Interview Questions for VLSI Engineers
  • Verilog
    • Verilog Interview Questions(2024)
  • Forum
SiliconvlsiSiliconvlsi
Home»Verilog»Verilog Code for 3-to-8 Decoder
Verilog

Verilog Code for 3-to-8 Decoder

siliconvlsiBy siliconvlsiAugust 3, 2023Updated:July 16, 2024No Comments4 Mins Read
Facebook Pinterest LinkedIn Email WhatsApp
Share
Facebook Twitter LinkedIn Pinterest Email

Verilog Code for 3-to-8 Decoder

A 3-to-8 decoder is an essential combinatorial logic device, featuring three input lines and eight output lines. Each unique combination of the three binary input lines results in a single output signal set to logic 1. This decoder acts as a min-term generator, where each output corresponds to a specific min-term. Due to its significance, decoders find extensive applications in the design of digital systems.

Decoder Input and Output

The input of a 3-to-8 decoder has a logarithm base 2 of ‘n,’ meaning it has three input lines (n=3). On the other hand, it possesses ‘n’ bits of output, which translates to eight output pins. Out of these eight pins, only one pin will have a value of 1, while the rest will be 0, providing a unique binary representation for each input combination.

Example: 3-to-8 Decoder

For a 3-to-8 decoder, the input is represented by three bits of a binary input number, and the output is a single bit that corresponds to the value of the binary input number being set to 1.

Block Diagram of a 3-to-8 Decoder

Below is the block diagram of a 3-to-8 decoder, giving a visual representation of its structure and functionality.

Block diagram of a 3-to-8 decoder
Block diagram of a 3-to-8 decoder

Truth Table for 3-to-8 Decoder

The truth table for a 3-to-8 decoder is shown below. It illustrates all possible combinations of the three input lines (Ip0 to Ip2) and their corresponding eight output lines (Op0 to Op7).

Truth table of 3-to-8 decoder.
The truth table of 3-to-8 decoder.

Verilog Module: Implementing the 3-to-8 Decoder

Verilog module of 3-to-8 decoder
Verilog module of 3-to-8 decoder

To understand the implementation of the 3-to-8 decoder in Verilog, refer to the Verilog module code provided below:

module decoder3to8(
input Ip0,
input Ip1,
input Ip2,
input EN,
output reg Op0=0,
output reg Op1=0,
output reg Op2=0,
output reg Op3=0,
output reg Op4=0,
output reg Op5=0,
output reg Op6=0,
output reg Op7=0
);

always @ (EN, Ip2, Ip1, Ip0)
begin
Op0 = 0;
Op1 = 0;
Op2 = 0;
Op3 = 0;
Op4 = 0;
Op5 = 0;
Op6 = 0;
Op7 = 0;

if (EN == 1'b1)
begin
case ({Ip2, Ip1, Ip0})
3'b000: Op0 = 1;
3'b001: Op1 = 1;
3'b010: Op2 = 1;
3'b011: Op3 = 1;
3'b100: Op4 = 1;
3'b101: Op5 = 1;
3'b110: Op6 = 1;
3'b111: Op7 = 1;
default: begin
Op0 = 0;
Op1 = 0;
Op2 = 0;
Op3 = 0;
Op4 = 0;
Op5 = 0;
Op6 = 0;
Op7 = 0;
end
endcase
end
end

end module

Verilog Test Bench for the 3-to-8 Decoder

To verify the functionality of the 3-to-8 decoder, a Verilog test bench is used. The code for the test bench is provided below:

`timescale 1ns / 1ps

module decoder3to8_tb;
// Inputs
reg Ip0;
reg Ip1;
reg Ip2;
reg EN;

// Outputs
wire Op0;
wire Op1;
wire Op2;
wire Op3;
wire Op4;
wire Op5;
wire Op6;
wire Op7;

//temporary variable
reg [2:0] count = 3'd0;

// Instantiate the Unit Under Test (UUT)
decoder3to8 uut (
.Ip0(Ip0),
.Ip1(Ip1),
.Ip2(Ip2),
.Op0(Op0),
.Op1(Op1),
.Op2(Op2),
.Op3(Op3),
.Op4(Op4),
.Op5(Op5),
.Op6(Op6),
.Op7(Op7),
.EN(EN)
);

initial begin
// Initialize Inputs
Ip0 = 1'b0;
Ip1 = 1'b0;
Ip2 = 1'b0;
EN = 1'b0;

// Wait 100 ns for global reset to finish
#100;

// Add stimulus here
EN = 1'b1;
#20;
for (count = 0; count < 8; count = count + 1'b1)
begin
{Ip0, Ip1, Ip2} = {Ip0, Ip1, Ip2} + 1'b1;
#20;
end
EN = 1'b0;
end
endmodule

With this comprehensive understanding of the 3-to-8 decoder, you can explore various applications in the design of digital systems and create efficient, optimized circuits for your specific needs. By mastering the concepts and Verilog implementation, you can unlock the full potential of this essential combinatorial logic device.

Share. Facebook Twitter Pinterest LinkedIn Tumblr Email

Related Posts

What is a Bell’s Theorem?

January 13, 2024

First-In-First-Out Buffer Verilog Code

August 9, 2023

Last-In-First-Out Buffer Verilog Code

August 9, 2023
Leave A Reply Cancel Reply

Facebook X (Twitter) Instagram Pinterest Vimeo YouTube
  • About Us
  • Contact Us
  • Privacy Policy
© 2025 Siliconvlsi.

Type above and press Enter to search. Press Esc to cancel.