题解 | #使用8线-3线优先编码器Ⅰ实现16线-4线#
使用8线-3线优先编码器Ⅰ实现16线-4线优先编码器
https://www.nowcoder.com/practice/dcfa838e43de4744bc976abee96dc566
`timescale 1ns/1ns
module encoder_83(
input [7:0] I ,
input EI ,
output wire [2:0] Y ,
output wire GS ,
output wire EO
);
assign Y[2] = EI & (I[7] | I[6] | I[5] | I[4]);
assign Y[1] = EI & (I[7] | I[6] | ~I[5]&~I[4]&I[3] | ~I[5]&~I[4]&I[2]);
assign Y[0] = EI & (I[7] | ~I[6]&I[5] | ~I[6]&~I[4]&I[3] | ~I[6]&~I[4]&~I[2]&I[1]);
assign EO = EI&~I[7]&~I[6]&~I[5]&~I[4]&~I[3]&~I[2]&~I[1]&~I[0];
assign GS = EI&(I[7] | I[6] | I[5] | I[4] | I[3] | I[2] | I[1] | I[0]);
//assign GS = EI&(| I);
endmodule
module encoder_164(
input [15:0] A ,
input EI ,
output wire [3:0] L ,
output wire GS ,
output wire EO
);
//高8位输出
wire [2:0]Y1;
wire GS_1;
wire EO_1;
encoder_83 U1(
.I(A[15:8]),
.EI(EI),
.Y(Y1),
.GS(GS_1),
.EO(EO_1)
);
//低8位输出
wire [2:0]Y0;
wire GS_0;
wire EO_0;
encoder_83 U0(
.I(A[7:0]),
.EI(EO_1),
.Y(Y0),
.GS(GS_0),
.EO(EO_0)
);
assign L = {GS_1,Y0|Y1} ;
assign EO = EO_0 & EO_1;
assign GS = GS_1 | GS_0;
endmodule
/*
EI I[15] I[14] I[13] I[12] I[11] I[10] I[9] I[8] I[7] I[6] I[5] I[4] I[3] I[2] I[1] I[0] Y[3:0] CS EO
0 0_000 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0_000 0 1
1 1 X X X X X X X X X X X X X X X 1_111 1 0
1 0 1 X X X X X X X X X X X X X X 1_110 1 0
1 0 0 1 X X X X X X X X X X X X X 1_101 1 0
1 0 0 0 1 X X X X X X X X X X X X 1_100 1 0
1 0 0 0 0 1 X X X X X X X X X X X 1_011 1 0
1 0 0 0 0 0 1 X X X X X X X X X X 1_010 1 0
1 0 0 0 0 0 0 1 X X X X X X X X X 1_001 1 0
1 0 0 0 0 0 0 0 1 X X X X X X X X 1_000 1 0
1 0 0 0 0 0 0 0 0 1 X X X X X X X 0_111 1 0
1 0 0 0 0 0 0 0 0 0 1 X X X X X X 0_110 1 0
1 0 0 0 0 0 0 0 0 0 0 1 X X X X X 0_101 1 0
1 0 0 0 0 0 0 0 0 0 0 0 1 X X X X 0_100 1 0
1 0 0 0 0 0 0 0 0 0 0 0 0 1 X X X 0_011 1 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 X X 0_010 1 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 X 0_001 1 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0_000 1 0
*/
/*
EI I[7] I[6] I[5] I[4] I[3] I[2] I[1] I[0] Y[2:0] CS EO
0 000 0 0
1 0 0 0 0 0 0 0 0 000 0 1
1 1 X X X X X X X 111 1 0
1 0 1 X X X X X X 110 1 0
1 0 0 1 X X X X X 101 1 0
1 0 0 0 1 X X X X 100 1 0
1 0 0 0 0 1 X X X 011 1 0
1 0 0 0 0 0 1 X X 010 1 0
1 0 0 0 0 0 0 1 X 001 1 0
1 0 0 0 0 0 0 0 1 000 1 0
*/