1 //3—8译码器源代码
2 module decoder_3_8(
3 a,
4 b,
5 c,
6 out
7 );
8 input a;
9 input b;
10 input c;
11 output reg [7:0] out;
12 always @(*) begin
13 case({a,b,c})
14 3'b000:out=8'b0000_0001;
15 3'b001:out=8'b0000_0010;
16 3'b010:out=8'b0000_0100;
17 3'b011:out=8'b0000_1000;
18 3'b100:out=8'b0001_0000;
19 3'b101:out=8'b0010_0000;
20 3'b110:out=8'b0100_0000;
21 3'b111:out=8'b1000_0000;
22 endcase
23 /* 3'd0:out=8'b0000_0001;
24 3'd1=8'b0000_0010;
25 3'd2:out=8'b0000_0100;
26 3'd3:out=8'b0000_1000;
27 3'd4:out=8'b0001_0000;
28 3'd5:out=8'b0010_0000;
29 3'd6:out=8'b0100_0000;
30 3'd7:out=8'b1000_0000;*/
31 end
32 endmodule
33 //3—8译码器testbench源代码
34 `timescale 1ns/1ns
35 module decoder_3_8_tb();
36 reg s_a;
37 reg s_b;
38 reg s_c;
39 wire [7:0] s_out;
40 decoder_3_8 decoder_3_8_inst0(
41 .a(s_a),
42 .b(s_b),
43 .c(s_c),
44 .out(s_out)
45 );
46 initial begin
47 s_a=0;s_b=0;s_c=0;
48 #200;
49 s_a=0;s_b=0;s_c=1;
50 #200;
51 s_a=0;s_b=1;s_c=0;
52 #200;
53 s_a=0;s_b=1;s_c=1;
54 #200;
55 s_a=1;s_b=0;s_c=0;
56 #200;
57 s_a=1;s_b=0;s_c=1;
58 #200;
59 s_a=1;s_b=1;s_c=0;
60 #200;
61 s_a=1;s_b=1;s_c=1;
62 #200;
63 $stop;
64 end
65 endmodule
66