加法器模块的输出总是don';t care[Verilog]

加法器模块的输出总是don';t care[Verilog],verilog,modelsim,quartus,digital-design,Verilog,Modelsim,Quartus,Digital Design,我懂VHDL,现在我试着做一点verilog。我有两个文件,一个包含计数器,另一个包含32位全加器 柜台五: module counter ( input clk, input enable, input reset, output reg [3:0] count ); wire [31:0] temp2 = 0; reg [31:0] clk_count = 0; wire [31:0] test = 32'b1;

我懂VHDL,现在我试着做一点verilog。我有两个文件,一个包含计数器,另一个包含32位全加器

柜台五:

module counter (
    input clk,
    input enable,
    input reset,
    output reg [3:0] count
    );


    wire [31:0] temp2 = 0;
    reg [31:0] clk_count = 0;
    wire [31:0] test = 32'b1;

    parameter integer number_of_clk_cycles = 15;
    adder adder1(clk_count, test, temp2);


    always @(posedge clk) begin
        if (reset) begin
            count = 0;
        end else if (enable) begin
            clk_count <= temp2;    
            if(clk_count == number_of_clk_cycles) begin
                count <= count + 1;
                clk_count <= 0;
            end
        end
    end

endmodule
模块计数器(
输入时钟,
输入使能,
输入复位,
输出寄存器[3:0]计数
);
导线[31:0]temp2=0;
reg[31:0]时钟计数=0;
电线[31:0]试验=32'b1;
参数整数值\u的\u clk\u循环=15;
加法器加法器1(时钟计数、测试、temp2);
始终@(posedge clk)开始
如果(重置)开始
计数=0;
如果(启用)开始,则结束else

在verilog中,如果使用不同的非z值驱动相同的
导线
,结果值将为
x

在你的情况下,你驾驶temp2两次。第一次在这里:

 wire [31:0] temp2 = 0;
这相当于

 wire [31:0] temp2;
 assign temp2 = 0;
第二次,用加法器的输出

因此,如果加法器输出产生的值非零
temp2
将变为
x
,否则将变为
0


因此,不要将
0
分配给它

在verilog中,如果使用不同的非z值驱动相同的
导线
,结果值将为
x

在你的情况下,你驾驶temp2两次。第一次在这里:

 wire [31:0] temp2 = 0;
这相当于

 wire [31:0] temp2;
 assign temp2 = 0;
第二次,用加法器的输出

因此,如果加法器输出产生的值非零
temp2
将变为
x
,否则将变为
0

因此,不要将
0
分配给它