-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmuxes.vhdl
145 lines (130 loc) · 3.46 KB
/
muxes.vhdl
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
-- IITB-RISC-2022
------------------------------------------------------------------------------
-----------------------------------16 bit 2x1 MUX-----------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
ENTITY mux_2x1_16bit IS
PORT (
inp_1 : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
inp_2 : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
outp : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
sel : IN STD_LOGIC
);
END ENTITY mux_2x1_16bit;
ARCHITECTURE Behav OF mux_2x1_16bit IS
BEGIN
PROCESS (inp_1, inp_2, sel)
BEGIN
IF sel = '0' THEN
outp <= inp_1;
ELSE
outp <= inp_2;
END IF;
END PROCESS;
END Behav;
------------------------------------------------------------------------------
-----------------------------------3 bit 4x1 MUX------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
ENTITY mux_4x1_3bit IS
PORT (
inp_1 : IN STD_LOGIC_VECTOR (2 DOWNTO 0);
inp_2 : IN STD_LOGIC_VECTOR (2 DOWNTO 0);
inp_3 : IN STD_LOGIC_VECTOR (2 DOWNTO 0);
inp_4 : IN STD_LOGIC_VECTOR (2 DOWNTO 0);
outp : OUT STD_LOGIC_VECTOR (2 DOWNTO 0);
sel : IN STD_LOGIC_VECTOR(1 DOWNTO 0)
);
END ENTITY mux_4x1_3bit;
ARCHITECTURE Behav OF mux_4x1_3bit IS
BEGIN
PROCESS (inp_1, inp_2, inp_3, inp_4, sel)
BEGIN
IF sel = "00" THEN
outp <= inp_1;
ELSIF sel = "01" THEN
outp <= inp_2;
ELSIF sel = "10" THEN
outp <= inp_3;
ELSE
outp <= inp_4;
END IF;
END PROCESS;
END Behav;
------------------------------------------------------------------------------
-----------------------------------16 bit 4x1 MUX-----------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
ENTITY mux_4x1_16bit IS
PORT (
inp_1 : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
inp_2 : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
inp_3 : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
inp_4 : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
outp : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
sel : IN STD_LOGIC_VECTOR(1 DOWNTO 0)
);
END ENTITY mux_4x1_16bit;
ARCHITECTURE Behav OF mux_4x1_16bit IS
BEGIN
PROCESS (inp_1, inp_2, inp_3, inp_4, sel)
BEGIN
IF sel = "00" THEN
outp <= inp_1;
ELSIF sel = "01" THEN
outp <= inp_2;
ELSIF sel = "10" THEN
outp <= inp_3;
ELSE
outp <= inp_4;
END IF;
END PROCESS;
END Behav;
------------------------------------------------------------------------------
-----------------------------------16 bit 8x1 MUX-----------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
ENTITY mux_8x1_16bit IS
PORT (
inp_1 : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
inp_2 : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
inp_3 : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
inp_4 : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
inp_5 : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
inp_6 : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
inp_7 : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
inp_8 : IN STD_LOGIC_VECTOR (15 DOWNTO 0);
outp : OUT STD_LOGIC_VECTOR (15 DOWNTO 0);
sel : IN STD_LOGIC_VECTOR(2 DOWNTO 0)
);
END ENTITY mux_8x1_16bit;
ARCHITECTURE Behav OF mux_8x1_16bit IS
BEGIN
PROCESS (inp_1, inp_2, inp_3, inp_4, inp_5, inp_6, inp_7, inp_8, sel)
BEGIN
CASE(sel) IS
WHEN "000" =>
outp <= inp_1;
WHEN "001" =>
outp <= inp_2;
WHEN "010" =>
outp <= inp_3;
WHEN "011" =>
outp <= inp_4;
WHEN "100" =>
outp <= inp_5;
WHEN "101" =>
outp <= inp_6;
WHEN "110" =>
outp <= inp_7;
WHEN "111" =>
outp <= inp_8;
WHEN OTHERS =>
outp <= (OTHERS => '0');
END CASE;
END PROCESS;
END Behav;