加法器模块的输出总是don';t care[Verilog]
我懂VHDL,现在我试着做一点verilog。我有两个文件,一个包含计数器,另一个包含32位全加器 柜台五:加法器模块的输出总是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;
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
分配给它