我正在设计一个二进制到格雷码的转换器。这是我的主要代码:
module gray_code (bin_num, Gray_num);
input [3:0] bin_num; //binary input
output [3:0] Gray_num; //gray output
assign Gray_num[3] = bin_num[3];
assign Gray_num[2] = bin_num[3]^bin_num[2];
assign Gray_num[1] = bin_num[2]^bin_num[1];
assign Gray_num[0] = bin_num[1]^bin_num[0];
endmodule这是testbench:
module gray_code_tb;
reg [3:0] bin_num;
wire [3:0] Gray_num;
integer i;
gray_code DUT(.bin_num(bin_num),.Gray_num(Gray_num));
initial begin
for(i=0;i<16;i=i+1)begin
bin_num=i;
$display("BIN = %b GRAY =%b", bin_num, Gray_num);
end
end
endmodule我在模拟后得到的输出是:
BIN = 0000 GRAY =xxxx;
BIN = 0001 GRAY =xxxx;
BIN = 0010 GRAY =xxxx;
BIN = 0011 GRAY =xxxx;为什么它显示了格雷码的所有x?
发布于 2018-05-14 23:53:17
在模拟中,不会经过任何时间。所以信号永远不会有改变的机会。
在bin_num=i;后添加#100;
https://stackoverflow.com/questions/50334242
复制相似问题