Professional Documents
Culture Documents
Encoder 8x3
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: