You are on page 1of 3

Encoder 8x3:

module encoder

( input D0,D1,D2,D3,D4,D5,D6,D7,En,

output A,B,C);

assign A= En&(D4|D5|D6|D7);

assign B= En&(D2|D3|D6|D7);

assign C= En&(D1|D3|D5|D7);

endmodule

RTL Schematic:

Testbench:
module encoder_tb;

reg D0,D1,D2,D3,D4,D5,D6,D7,En;

wire A,B,C;

encoder
s1(.D0(D0),.D1(D1),.D2(D2),.D3(D3),.D4(D4),.D5(D5),.D6(D6),.D7(D7),.En(En),.A(A),.B(B),.C(C));

initial

begin

D0=1'b1;D1=1'b0;D2=1'b0;D3=1'b0;D4=1'b0;D5=1'b0;D6=1'b0;D7=1'b0;En=1'b1;

#10

D0=1'b0;D1=1'b1;D2=1'b0;D3=1'b0;D4=1'b0;D5=1'b0;D6=1'b0;D7=1'b0;En=1'b1;

#10
D0=1'b0;D1=1'b0;D2=1'b1;D3=1'b0;D4=1'b0;D5=1'b0;D6=1'b0;D7=1'b0;En=1'b1;

#10

D0=1'b0;D1=1'b0;D2=1'b0;D3=1'b1;D4=1'b0;D5=1'b0;D6=1'b0;D7=1'b0;En=1'b1;

#10

D0=1'b0;D1=1'b0;D2=1'b0;D3=1'b0;D4=1'b1;D5=1'b0;D6=1'b0;D7=1'b0;En=1'b1;

#10

D0=1'b0;D1=1'b0;D2=1'b0;D3=1'b0;D4=1'b0;D5=1'b1;D6=1'b0;D7=1'b0;En=1'b1;

#10

D0=1'b0;D1=1'b0;D2=1'b0;D3=1'b0;D4=1'b0;D5=1'b0;D6=1'b1;D7=1'b0;En=1'b1;

#10

D0=1'b0;D1=1'b0;D2=1'b0;D3=1'b0;D4=1'b0;D5=1'b0;D6=1'b0;D7=1'b1;En=1'b1;

end

initial

$monitor($time,"D0=%b,D1=%b,D2=%b,D3=%b,D4=%b,D5=%b,D6=%b,D7=%b,En=%b,A=%b,B=%b,C
=%b",D0,D1,D2,D3,D4,D5,D6,D7,En,A,B,C);

endmodule

Output graph:

You might also like