|
发表于 2010-8-24 09:40:25
|
显示全部楼层
不知道楼主是不是要这种效果
module state_cnt(
clk,
rst,
start,
odata
);
input clk;
input rst;
input start;
output [7:0] odata;
//reg [7:0] odata;
reg [1:0] state,next_state;
parameter idle=2'b00;
parameter count=2'b01;
parameter endl=2'b10;
reg [7:0] cnt;
always @ (posedge clk or negedge rst)
if(!rst)
state<=idle;
else
state<=next_state;
always @ (state or cnt or start)
case(state)
idle:if(start)
next_state=count;
else
next_state<=idle;
count:if(cnt==8'd255)
next_state=endl;
else
next_state<=count;
endl:next_state=idle;
default:next_state=idle;
endcase
always @ (posedge clk)
case(state)
idle:cnt<=8'd0;
count:cnt<=cnt+1'b1;
endl:cnt<=8'd0;
default:cnt<=8'd0;
endcase
assign odata=cnt;
endmodule
三段式的.可以将计数器放到状态及内部的. |
|