功能分析
三八译码器,输入为3个二进制数,3‘b000 – 3’b111,翻译为十进制数0,2,4,8,。。。。128
建立工程,参考上一实例
设计代码
module decoder38(
data,
out
);
input [2:0] data;
output reg [7:0] out;
always@(data)
case(data)
3’d0:out = 8’d0;
3’d1:out = 8’d2;
3’d2:out = 8’d4;
3’d3:out = 8’d8;
3’d4:out = 8’d16;
3’d5:out = 8’d32;
3’d6:out = 8’d64;
3’d7:out = 8’d128;
default:out = 8’d0;
endcase
endmodule
仿真代码
`timescale 1ns/1ns
module decoder38_tb;
reg [2:0] in;
wire [7:0] out;
decoder38 inst0(
.data(in),
.out(out)
);
initial begin
in=3’d0;
#10;in=3’d0;
#10;in=3’d1;
#10;in=3’d2;
#10;in=3’d3;
#10;in=3’d4;
#10;in=3’d5;
#10;in=3’d6;
#10;in=3’d7;
#10;in=3’d0;
#10;in=3’d1;
#10;in=3’d2;
#10;
end
endmodule
波形分析
遇到的问题
第一次仿真输入data为高阻态,输出out为不定态。排错:在设置激励文件,激励平台的名字要与tb文件名称相同
若选择第一个名称,出现无波形现象,选择相同名称后,出现波形。
按激励出现负数,在进制设置中选择无符号数