Encode 8x3

You might also like

You are on page 1of 5

Encode 8x3:

Data flow code:


module shilpa_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 shilpa_encoder_tb;

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

wire A,B,C;

shilpa_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:
Decoder:
module shilpa_decoder

(input A,B,C,En,

output D0,D1,D2,D3,D4,D5,D6,D7 );

assign D0= En&(~A&~B&~C);

assign D1= En&(~A&~B&C);

assign D2= En&(~A&B&~C);

assign D3= En&(~A&B&C);

assign D4= En&(A&~B&~C);

assign D5= En&(A&~B&C);

assign D6= En&(A&B&~C);

assign D7= En&(A&B&C);

endmodule

RTL Schematic:

Testbench:
module shilpa_decoder_tb;

reg A,B,C,En;

wire D0,D1,D2,D3,D4,D5,D6,D7;

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

initial

begin
A=1'b0;B=1'b0;C=1'b0;En=1'b1;

#10

A=1'b0;B=1'b0;C=1'b1;En=1'b1;

#10

A=1'b0;B=1'b1;C=1'b0;En=1'b1;

#10

A=1'b0;B=1'b1;C=1'b1;En=1'b1;

#10

A=1'b1;B=1'b0;C=1'b0;En=1'b1;

#10

A=1'b1;B=1'b0;C=1'b1;En=1'b1;

#10

A=1'b1;B=1'b1;C=1'b0;En=1'b1;

#10

A=1'b1;B=1'b1;C=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