Altifigence Academy

4 / 36 · Concept

Decoders and enable signals

Turn a binary address into one active output.

Learning goals

  • Select one of four outputs using two address bits.
  • Define the output when the decoder is disabled.

One address selects one output.

A 2-to-4 decoder maps addresses 00, 01, 10 and 11 to 0001, 0010, 0100 and 1000. For y[3:0], the rightmost bit is y[0].

Define y=0000 when en=0. Exactly one output is active only when en=1. Include this qualification in the verification rule.

RTL excerpt
always_comb begin
  y = 4'b0000;
  if (en) begin
    case (address)
      2'b00: y = 4'b0001;
      2'b01: y = 4'b0010;
      2'b10: y = 4'b0100;
      2'b11: y = 4'b1000;
      default: y = 4'b0000;
    endcase
  end
end

Assign a value on every path.

A combinational output must be determined by current inputs. Assigning 0000 first defines the disabled path. Missing assignments can unintentionally infer a latch that retains a previous value.

This is a logic excerpt, not a complete top module. Declare the address, en and y ports and widths before using it in a project.

Try it yourself

What is y[3:0] for en=1 and address=10? What if en=0?

Read the explanation

Enabled: 0100, with only y[2] set. Disabled: 0000.

Your choice applies to this browser. Change it any time using the footer.