1.IDE:Quartus II
2.设备:Cyclone II EP2C8Q208C8N
3.实验:译码器
4.时序图:
5.步骤:
6.代码:
译码器:
/* *译码器 */ module decoder( input wire in1, input wire in2, input wire in3, output reg [7:0] out ); always @ (*) begin case({in1,in2,in3}) 3'b000 : out =8'b0000_0001; 3'b001 : out =8'b0000_0010; 3'b010 : out =8'b0000_0100; 3'b011 : out =8'b0000_1000; 3'b100 : out =8'b0001_0000; 3'b101 : out =8'b0010_0000; 3'b110 : out =8'b0100_0000; 3'b111 : out =8'b1000_0000; default: out =8'b0000_0001; endcase end endmodule
仿真文件代码:
/* *译码器仿真代码 */ `timescale 1ns/1ns module tb_decoder(); reg in1; reg in2; reg in3; wire [7:0] out; /* *初始化 */ initial begin in1 <= 1'b0; in2 <= 1'b0; in3 <= 1'b0; end /* *延时一段时间后(10ns)进行随机赋值(0/1) */ always #10 in1 <= {$random} % 2; //#10表示时间延时10个单位 always #10 in2 <= {$random} % 2; always #10 in3 <= {$random} % 2; /* *打印仿真信息 */ initial begin $timeformat(-9,0,"ns",6); //-9代表ns,0代表小数位,6代表数据位宽 $monitor("@time %t:in1=%b,in2=%b,in3=%b,out=%b",$time,in1,in2,in3,out); end /* *实例化 */ decoder decoder_inst ( .in1(in1), .in2(in2), .in3(in3), .out(out) ); endmodule