/
mux4to1.v
49 lines (38 loc) · 868 Bytes
/
mux4to1.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//A mux4to1 made from mux2to1s
//inputs
//SW[7:0]: data inputs
//SW[9:7]: select signal
//LEDR[0]: output signal
module mux4to1(LEDR, SW);
input [9:0] SW;
output [9:0] LEDR;
wire u_v_mux2to1;
wire w_x_mux2to1;
mux2to1 u0(
.x(SW[0]),
.y(SW[1]),
.s(SW[8]),
.m(u_v_mux2to1)
);
mux2to1 u1(
.x(SW[2]),
.y(SW[3]),
.s(SW[8]),
.m(w_x_mux2to1)
);
mux2to1 u2(
.x(u_v_mux2to1),
.y(w_x_mux2to1),
.s(SW[9]),
.m(LEDR[0])
);
endmodule
module mux2to1(x, y, s, m);
input x; //selected when s is 0
input y; //selected when s is 1
input s; //select signal
output m; //output
assign m = s & y | ~s & x;
// OR
// assign m = s ? y : x;
endmodule