计数器要如何写才能通过LEDA检查?
时间:10-02
整理:3721RD
点击:
我写了一个计数器,计数到15的时候就清0。
源代码附在后面。但是用LEDA检查的时候,总是报告说:
test.v:5 Avoid internally generated reset/set/load test.counter
--- Used as set/reset/load signal: test.counter (test.v,test)
这样子我就很搞不明白,这样子的计数器究竟应该怎么写?
module test(rest,clock);
input rest;
input clock;
integer counter;
always@(posedge clock) begin
if( !rest ) begin
counter <= 0;
end
else begin
if( counter == 15 )
counter <= 0;
else counter <= counter + 1;
end
end
endmodule
源代码附在后面。但是用LEDA检查的时候,总是报告说:
test.v:5 Avoid internally generated reset/set/load test.counter
--- Used as set/reset/load signal: test.counter (test.v,test)
这样子我就很搞不明白,这样子的计数器究竟应该怎么写?
module test(rest,clock);
input rest;
input clock;
integer counter;
always@(posedge clock) begin
if( !rest ) begin
counter <= 0;
end
else begin
if( counter == 15 )
counter <= 0;
else counter <= counter + 1;
end
end
endmodule
counter是不是应该定义为reg类型啊
定义为reg类型,结果是一样的。都通不过LEDA的检查
integer counter; 改成 reg [3:0] counter;
always@(posedge clock) begin 改成 always@(posedge clock or negedge rest) begin
同意楼上,你用的同步reset信号,所以报了warning。
module test(rest,clock);
input rest;
input clock;
reg [3:0] counter;
always@(posedge clock or negedge rest) begin
if( !rest ) begin
counter <= 3'd0;
end
else begin
if( counter == 3'd15 )
counter <= 3'd0;
else
counter <= counter + 1;
end
end
endmodule
学习学习
初学者往往遇到问题不知道怎么办,其实,一切原因都是自己没有按照规范来,自己的随心所欲导致的,
正确的步骤是按照 厂商提供的模板。少走弯路,少郁闷,正确的道路让人快乐。任性的方式,自寻烦恼。
thanks。
学习了~
