我在哪里做错了?

时间:2014-12-27 18:45:28

标签: verilog

我无法弄清楚我在编写代码时所犯的错误。当我编译我的代码时,它会发出以下警告:

  

警告:Xst:1710 - FF / Latch(无初始值)在块中的常量值为0。在优化过程中将修整此FF / Latch。

这是我的代码;

module adder4bit(a,b,clk,sum);
input [3:0] a;
input [3:0] b;
input clk;
output reg [4:0] sum;

wire [4:0] temp_sum;
assign temp_sum=a^b;
always@(posedge clk)begin
sum<=temp_sum;
end
endmodule


module comparator4bit(a,b,res);

input [3:0] a ;
wire [3:0] a ;
input [3:0] b ;
wire [3:0] b ;
output reg res;
always@(a or b)begin
if(a<b | a>b)
res=0;
else
res=1;
end
endmodule



module countparttwofor(clk,clr,cntEn,dout);
input clk,clr,cntEn;
output reg [3:0] dout ;

initial begin
dout=0;
end
always@(posedge clk)
begin
if(clr) dout<=0;
else if(cntEn) dout<=dout+1'b1;
end
endmodule

module sevensegparttwofor(num,dout);
input [3:0] num;
output reg [6:0] dout;
always@(*) begin
case(num)
0:dout=7'b1111110;
1:dout=7'b1100000;
2:dout=7'b1011011;
3:dout=7'b1001111;
4:dout=7'b1100110;
5:dout=7'b1101101;
6:dout=7'b1111101;
7:dout=7'b0000111;
8:dout=7'b1111111;
9:dout=7'b1101111;
default:dout='b0;
endcase
end
endmodule


module count(clk,clr,cntEn,dout);
input clk,clr,cntEn;
output reg [3:0] dout ;

initial begin
dout=0;
end
always@(posedge clk)
begin
if(clr) dout<=0;
else if(cntEn) dout<=dout+1'b1;
end
endmodule

module denemepart2(clk,clk_a,clk_b,clr,clr_a,cntEn,cntEn_a,dout,b,sum,res_comp);
input clk,clk_a,clk_b,clr,clr_a,cntEn,cntEn_a;
input [3:0] b;

output res_comp;
output [6:0] dout;
output [4:0] sum;
wire [3:0] w1;
wire [3:0] w2;

countparttwofor counttwo(clk,clr,cntEn,w1);
sevensegparttwofor sevensegtwo(w1,dout);
count count1(clk_a,clr_a,cntEn_a,w2);
comparator4bit comp1(w1,w2,res_comp);
adder4bit adder1(w1,b,clk_b,sum);

endmodule

我不喜欢这样说但我对Verilog很新。这就是我犯明显错误的原因。

0 个答案:

没有答案