Multiplexers
2-to-1 multiplexer
可以用三元運算子簡潔地寫出 multiplexer。
2-to-1 bus multiplexer
和前一題類似,可以用三元運算子簡潔地寫出 vector 的 multiplexer。
Verilog
module top_module(
input [99:0] a, b,
input sel,
output [99:0] out );
assign out = sel ? b : a;
endmodule
9-to-1 multiplexer
可以用case 來實現9-to-1 multiplexer。
Verilog
module top_module(
input [15:0] a, b, c, d, e, f, g, h, i,
input [3:0] sel,
output [15:0] out );
always@(*)begin
case(sel)
4'b0000: out = a;
4'b0001: out = b;
4'b0010: out = c;
4'b0011: out = d;
4'b0100: out = e;
4'b0101: out = f;
4'b0110: out = g;
4'b0111: out = h;
4'b1000: out = i;
default: out = {16{1'b1}};
endcase
end
endmodule
256-to-1 multiplexer
講述sel也可以放在index的位置。
Verilog
module top_module(
input [255:0] in,
input [7:0] sel,
output out );
assign out = in[sel];
endmodule
256-to-1 4-bit multiplexer
題目講說assign out = in[4*sel+3 :4*sel];會編不過,所以可以改寫成assign out = in[4*sel +:4];,從4*sel的地方往上取4位。