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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
|
// test_simulation_decoder_2_test.v
module f1_test (input [1:0] in, input enable, output reg out);
always @(in or enable)
if(!enable)
out = 4'b0000;
else begin
case (in)
2'b00 : out = 0 ;
2'b01 : out = 1;
2'b10 : out = 0;
2'b11 : out = 1;
endcase
end
endmodule
// test_simulation_decoder_3_test.v
module f2_test (input [1:0] in, input enable, output reg [2:0] out);
always @(in or enable)
if(!enable)
out = 3'b000;
else begin
case (in)
2'b00 : out = 3'b001 ;
2'b01 : out = 3'b010;
2'b10 : out = 3'b010;
2'b11 : out = 3'b100;
endcase
end
endmodule
// test_simulation_decoder_4_test.v
module f3_test (input [2:0] in, output reg [7:0] out);
always @(in )
case (in)
3'b000 : out = 8'b00000001;
3'b001 : out = 8'b00000010;
3'b010 : out = 8'b00000100;
3'b011 : out = 8'b00001000;
3'b100 : out = 8'b00010000;
3'b101 : out = 8'b00100000;
3'b110 : out = 8'b01000000;
3'b111 : out = 8'b10000000;
endcase
endmodule
// test_simulation_decoder_5_test.v
module f4_test (input [2:0] in, input enable, output reg [7:0] out);
always @(in or enable )
if(!enable)
out = 8'b00000000;
else
case (in)
3'b000 : out = 8'b00000001;
3'b001 : out = 8'b00000010;
3'b010 : out = 8'b00000100;
3'b011 : out = 8'b00001000;
3'b100 : out = 8'b00010000;
3'b101 : out = 8'b00100000;
3'b110 : out = 8'b01000000;
3'b111 : out = 8'b10000000;
endcase
endmodule
// test_simulation_decoder_6_test.v
module f5_test (input [3:0] in, input enable, output reg [15:0] out);
always @(in or enable)
if(!enable)
out = 16'b0000000000000000;
else begin
case (in)
4'b0000 : out = 16'b0000000000000001;
4'b0001 : out = 16'b0000000000000010;
4'b0010 : out = 16'b0000000000000100;
4'b0011 : out = 16'b0000000000001000;
4'b0100 : out = 16'b0000000000010000;
4'b0101 : out = 16'b0000000000100000;
4'b0110 : out = 16'b0000000001000000;
4'b0111 : out = 16'b0000000010000000;
4'b1000 : out = 16'b0000000100000000;
4'b1001 : out = 16'b0000001000000000;
4'b1010 : out = 16'b0000010000000000;
4'b1011 : out = 16'b0000100000000000;
4'b1100 : out = 16'b0001000000000000;
4'b1101 : out = 16'b0010000000000000;
4'b1110 : out = 16'b0100000000000000;
4'b1111 : out = 16'b1000000000000000;
endcase
end
endmodule
// test_simulation_decoder_7_test.v
module f6_test (input [4:0] in, input enable, output reg [31:0] out);
always @(in or enable)
if(!enable)
out = 32'b00000000000000000000000000000000;
else begin
case (in)
5'b00000 : out = 32'b00000000000000000000000000000001;
5'b00001 : out = 32'b00000000000000000000000000000010;
5'b00010 : out = 32'b00000000000000000000000000000100;
5'b00011 : out = 32'b00000000000000000000000000001000;
5'b00100 : out = 32'b00000000000000000000000000010000;
5'b00101 : out = 32'b00000000000000000000000000100000;
5'b00110 : out = 32'b00000000000000000000000001000000;
5'b00111 : out = 32'b00000000000000000000000010000000;
5'b01000 : out = 32'b00000000000000000000000100000000;
5'b01001 : out = 32'b00000000000000000000001000000000;
5'b01010 : out = 32'b00000000000000000000010000000000;
5'b01011 : out = 32'b00000000000000000000100000000000;
5'b01100 : out = 32'b00000000000000000001000000000000;
5'b01101 : out = 32'b00000000000000000010000000000000;
5'b01110 : out = 32'b00000000000000000100000000000000;
5'b01111 : out = 32'b00000000000000001000000000000000;
5'b10000 : out = 32'b00000000000000010000000000000000;
5'b10001 : out = 32'b00000000000000100000000000000000;
5'b10010 : out = 32'b00000000000001000000000000000000;
5'b10011 : out = 32'b00000000000010000000000000000000;
5'b10100 : out = 32'b00000000000100000000000000000000;
5'b10101 : out = 32'b00000000001000000000000000000000;
5'b10110 : out = 32'b00000000010000000000000000000000;
5'b10111 : out = 32'b00000000100000000000000000000000;
5'b11000 : out = 32'b00000001000000000000000000000000;
5'b11001 : out = 32'b00000010000000000000000000000000;
5'b11010 : out = 32'b00000100000000000000000000000000;
5'b11011 : out = 32'b00001000000000000000000000000000;
5'b11100 : out = 32'b00010000000000000000000000000000;
5'b11101 : out = 32'b00100000000000000000000000000000;
5'b11110 : out = 32'b01000000000000000000000000000000;
5'b11111 : out = 32'b10000000000000000000000000000000;
endcase
end
endmodule
// test_simulation_decoder_8_test.v
module f7_test (input [5:0] in, input enable, output reg [63:0] out);
always @(in or enable)
if(!enable)
out = 64'b0000000000000000000000000000000000000000000000000000000000000000;
else begin
case (in)
6'b000000 : out = 64'b0000000000000000000000000000000000000000000000000000000000000001;
6'b000001 : out = 64'b0000000000000000000000000000000000000000000000000000000000000010;
6'b000010 : out = 64'b0000000000000000000000000000000000000000000000000000000000000100;
6'b000011 : out = 64'b0000000000000000000000000000000000000000000000000000000000001000;
6'b000100 : out = 64'b0000000000000000000000000000000000000000000000000000000000010000;
6'b000101 : out = 64'b0000000000000000000000000000000000000000000000000000000000100000;
6'b000110 : out = 64'b0000000000000000000000000000000000000000000000000000000001000000;
6'b000111 : out = 64'b0000000000000000000000000000000000000000000000000000000010000000;
6'b001000 : out = 64'b0000000000000000000000000000000000000000000000000000000100000000;
6'b001001 : out = 64'b0000000000000000000000000000000000000000000000000000001000000000;
6'b001010 : out = 64'b0000000000000000000000000000000000000000000000000000010000000000;
6'b001011 : out = 64'b0000000000000000000000000000000000000000000000000000100000000000;
6'b001100 : out = 64'b0000000000000000000000000000000000000000000000000001000000000000;
6'b001101 : out = 64'b0000000000000000000000000000000000000000000000000010000000000000;
6'b001110 : out = 64'b0000000000000000000000000000000000000000000000000100000000000000;
6'b001111 : out = 64'b0000000000000000000000000000000000000000000000001000000000000000;
6'b010000 : out = 64'b0000000000000000000000000000000000000000000000010000000000000000;
6'b010001 : out = 64'b0000000000000000000000000000000000000000000000100000000000000000;
6'b010010 : out = 64'b0000000000000000000000000000000000000000000001000000000000000000;
6'b010011 : out = 64'b0000000000000000000000000000000000000000000010000000000000000000;
6'b010100 : out = 64'b0000000000000000000000000000000000000000000100000000000000000000;
6'b010101 : out = 64'b0000000000000000000000000000000000000000001000000000000000000000;
6'b010110 : out = 64'b0000000000000000000000000000000000000000010000000000000000000000;
6'b010111 : out = 64'b0000000000000000000000000000000000000000100000000000000000000000;
6'b011000 : out = 64'b0000000000000000000000000000000000000001000000000000000000000000;
6'b011001 : out = 64'b0000000000000000000000000000000000000010000000000000000000000000;
6'b011010 : out = 64'b0000000000000000000000000000000000000100000000000000000000000000;
6'b011011 : out = 64'b0000000000000000000000000000000000001000000000000000000000000000;
6'b011100 : out = 64'b0000000000000000000000000000000000010000000000000000000000000000;
6'b011101 : out = 64'b0000000000000000000000000000000000100000000000000000000000000000;
6'b011110 : out = 64'b0000000000000000000000000000000001000000000000000000000000000000;
6'b011111 : out = 64'b0000000000000000000000000000000010000000000000000000000000000000;
6'b100000 : out = 64'b0000000000000000000000000000000100000000000000000000000000000000;
6'b100001 : out = 64'b0000000000000000000000000000001000000000000000000000000000000000;
6'b100010 : out = 64'b0000000000000000000000000000010000000000000000000000000000000000;
6'b100011 : out = 64'b0000000000000000000000000000100000000000000000000000000000000000;
6'b100100 : out = 64'b0000000000000000000000000001000000000000000000000000000000000000;
6'b100101 : out = 64'b0000000000000000000000000010000000000000000000000000000000000000;
6'b100110 : out = 64'b0000000000000000000000000100000000000000000000000000000000000000;
6'b100111 : out = 64'b0000000000000000000000001000000000000000000000000000000000000000;
6'b101000 : out = 64'b0000000000000000000000010000000000000000000000000000000000000000;
6'b101001 : out = 64'b0000000000000000000000100000000000000000000000000000000000000000;
6'b101010 : out = 64'b0000000000000000000001000000000000000000000000000000000000000000;
6'b101011 : out = 64'b0000000000000000000010000000000000000000000000000000000000000000;
6'b101100 : out = 64'b0000000000000000000100000000000000000000000000000000000000000000;
6'b101101 : out = 64'b0000000000000000001000000000000000000000000000000000000000000000;
6'b101110 : out = 64'b0000000000000000010000000000000000000000000000000000000000000000;
6'b101111 : out = 64'b0000000000000000100000000000000000000000000000000000000000000000;
6'b110000 : out = 64'b0000000000000001000000000000000000000000000000000000000000000000;
6'b110001 : out = 64'b0000000000000010000000000000000000000000000000000000000000000000;
6'b110010 : out = 64'b0000000000000100000000000000000000000000000000000000000000000000;
6'b110011 : out = 64'b0000000000001000000000000000000000000000000000000000000000000000;
6'b110100 : out = 64'b0000000000010000000000000000000000000000000000000000000000000000;
6'b110101 : out = 64'b0000000000100000000000000000000000000000000000000000000000000000;
6'b110110 : out = 64'b0000000001000000000000000000000000000000000000000000000000000000;
6'b110111 : out = 64'b0000000010000000000000000000000000000000000000000000000000000000;
6'b111000 : out = 64'b0000000100000000000000000000000000000000000000000000000000000000;
6'b111001 : out = 64'b0000001000000000000000000000000000000000000000000000000000000000;
6'b111010 : out = 64'b0000010000000000000000000000000000000000000000000000000000000000;
6'b111011 : out = 64'b0000100000000000000000000000000000000000000000000000000000000000;
6'b111100 : out = 64'b0001000000000000000000000000000000000000000000000000000000000000;
6'b111101 : out = 64'b0010000000000000000000000000000000000000000000000000000000000000;
6'b111110 : out = 64'b0100000000000000000000000000000000000000000000000000000000000000;
6'b111111 : out = 64'b1000000000000000000000000000000000000000000000000000000000000000;
endcase
end
endmodule
|