1 //4—16译码器源代码
2 module decoder_4_16(
3 a,
4 b,
5 c,
6 d,
7 out
8 );
9 input a;
10 input b;
11 input c;
12 input d;
13 output reg [15:0] out;
14 always @(*)begin
15 case({a,b,c,d})
16 4'b0000:out=16'b0000_0000_0000_0001;
17 4'b0001:out=16'b0000_0000_0000_0010;
18 4'b0010:out=16'b0000_0000_0000_0100;
19 4'b0011:out=16'b0000_0000_0000_1000;
20 4'b0100:out=16'b0000_0000_0001_0000;
21 4'b0100:out=16'b0000_0000_0010_0000;
22 4'b0110:out=16'b0000_0000_0100_0000;
23 4'b0111:out=16'b0000_0000_1000_0000;
24 4'b1000:out=16'b0000_0001_0000_0000;
25 4'b1001:out=16'b0000_0010_0000_0000;
26 4'b1010:out=16'b0000_0100_0000_0000;
27 4'b1011:out=16'b0000_1000_0000_0000;
28 4'b1100:out=16'b0001_0000_0000_0000;
29 4'b1101:out=16'b0010_0000_0000_0000;
30 4'b1110:out=16'b0100_0000_0000_0000;
31 4'b1111:out=16'b1000_0000_0000_0000;
32 endcase
33 end
34 endmodule
35 //4—16译码器testbench源代码
36 `timescale 1ns/1ns
37 module decoder_4_16_tb();
38 reg s_a;
39 reg s_b;
40 reg s_c;
41 reg s_d;
42 wire [15:0] s_out;
43 decoder_4_16 decoder_4_16_inst0(
44 .a(s_a),
45 .b(s_b),
46 .c(s_c),
47 .d(s_d),
48 .out(s_out)
49 );
50 initial begin
51 s_a=0;s_b=0;s_c=0;s_d=0;
52 #200;
53 s_a=0;s_b=0;s_c=0;s_d=1;
54 #200;
55 s_a=0;s_b=0;s_c=1;s_d=0;
56 #200;
57 s_a=0;s_b=0;s_c=1;s_d=1;
58 #200;
59 s_a=0;s_b=1;s_c=0;s_d=0;
60 #200;
61 s_a=0;s_b=1;s_c=0;s_d=1;
62 #200;
63 s_a=0;s_b=1;s_c=1;s_d=0;
64 #200;
65 s_a=0;s_b=1;s_c=1;s_d=1;
66 #200;
67 s_a=1;s_b=0;s_c=0;s_d=0;
68 #200;
69 s_a=1;s_b=0;s_c=0;s_d=1;
70 #200;
71 s_a=1;s_b=0;s_c=1;s_d=0;
72 #200;
73 s_a=1;s_b=0;s_c=1;s_d=1;
74 #200;
75 s_a=1;s_b=1;s_c=0;s_d=0;
76 #200;
77 s_a=1;s_b=1;s_c=0;s_d=1;
78 #200;
79 s_a=1;s_b=1;s_c=1;s_d=0;
80 #200;
81 s_a=1;s_b=1;s_c=1;s_d=1;
82 #200;
83 $stop;
84 end
85 endmodule
86