4片应该做不了16选1,需要5片。其中,4个四选一实现16选4,最后一个4选1,输出。
下面是一个4选1的选择器,供参考。16选1可以使用5个4选1搭起来。
//====================================================================
//sel_16_1
module sel_16_1(a,b,c,d,
c0_0,c0_1,c0_2,c0_3,
c1_0,c1_1,c1_2,c1_3,
c2_0,c2_1,c2_2,c2_3,
c3_0,c3_1,c3_2,c3_3,
y);
input a,b,c,d;
input c0_0,c0_1,c0_2,c0_3;
input c1_0,c1_1,c1_2,c1_3;
input c2_0,c2_1,c2_2,c2_3;
input c3_0,c3_1,c3_2,c3_3;
output y; //
wire y0, y1, y2, y3;
sel_4_1
sel_4_1_top(
.a (a),
.b (b),
.c0 (y0),
.c1 (y1),
.c2 (y2),
.c3 (y3),
.y (y)
);
sel_4_1
sel_4_1_a(
.a (c),
.b (d),
.c0 (c0_0),
.c1 (c0_1),
.c2 (c0_2),
.c3 (c0_3),
.y (y0)
);
sel_4_1
sel_4_1_b(
.a (c),
.b (d),
.c0 (c1_0),
.c1 (c1_1),
.c2 (c1_2),
.c3 (c1_3),
.y (y1)
);
sel_4_1
sel_4_1_c(
.a (c),
.b (d),
.c0 (c2_0),
.c1 (c2_1),
.c2 (c2_2),
.c3 (c2_3),
.y (y2)
);
sel_4_1
sel_4_1_b(
.a (c),
.b (d),
.c0 (c3_0),
.c1 (c3_1),
.c2 (c3_2),
.c3 (c3_3),
.y (y3)
);
endmodule
//==========================================================
//sel_4_1
module sel_4_1(a,b,c0,c1,c2,c3,y);
input a,b,c0,c1,c2,c3;
output reg y; //
always @(*)
case ({a,b})
2'b00: y = c0;
2'b01: y = c1;
2'b10: y = c2;
2'b11: y = c3;
endcase
endmodule
温馨提示:答案为网友推荐,仅供参考