Reputation: 11
Help me to solve this problem, for following question
Create a 16-bit wide, 9-to-1 multiplexer. sel=0 chooses a, sel=1 chooses b, etc. For the unused cases (sel=9 to 15), set all output bits to '1'.
Solution:
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)
0:
out = a;
1:
out = b;
2:
out = c;
3:
out = d;
4:
out = e;
5:
out = f;
6:
out = g;
7:
out = h;
8:
out = i;
default:
out = 1;
endcase
end
endmodule
I don't know what wrong in this code. may be the whole thing.
Note : https://hdlbits.01xz.net/wiki/Mux9to1v
Upvotes: 0
Views: 2193
Reputation: 354
module top_module(
input [15:0] a,b, c, d, e, f, g, h, i,
input [3:0] sel,
output reg [15:0] out
);
always @(*) begin
case(sel)
0: out = a;
1: out = b;
2: out = c;
3: out = d;
4: out = e;
5: out = f;
6: out = g;
7: out = h;
8: out = i;
default: out = {16{1'b1}}; //..'1 is not the same in every compiler
endcase
end
endmodule
Upvotes: 1
Reputation: 11
Thanks anyway. found a answer. have to fill all outputs bits to 1 with '1.
module top_module(
input [15:0] a,b, c, d, e, f, g, h, i,
input [3:0] sel,
output reg [15:0] out
);
always @(*) begin
case(sel)
0: out = a;
1: out = b;
2: out = c;
3: out = d;
4: out = e;
5: out = f;
6: out = g;
7: out = h;
8: out = i;
default: out = '1;
endcase
end
endmodule
Upvotes: 0
Reputation: 1693
endomdule
keyword (unexpected end of file).always
block.module top_module(
input [15:0] a,b, c, d, e, f, g, h, i,
input [3:0] sel,
output reg [15:0] out
);
always @(*) begin
case(sel)
0: out = a;
1: out = b;
2: out = c;
3: out = d;
4: out = e;
5: out = f;
6: out = g;
7: out = h;
8: out = i;
default: out = 1;
endcase
end
endmodule
Upvotes: 0