module Mo16(qout,up_down,cout,en,aclr,clk);
output [7:0]qout;
output cout;
input en,aclr,clk;
reg [3:0]q0,q1;
input up_down;
reg c1,c2;
always@(posedge clk,negedge aclr)
begin
if (!aclr)q0<=0;
else if(!en)q0<=q0;
else if(c2==0)
begin
if (q0>0) q0<=q0-1;
else q0<=0;
end
else q0<=0;
end
always@(negedge c1,negedge aclr)
begin
if (!aclr)q1<=0;
else if(!en)q1<=q0;
else if(c2==0)
begin
if (q1>1) q1<=q1-1;
else q1<=0;
end
else q1<=0;
end
always@(q0)
begin
if(q0==9||(q0==5&&q1==1)) c1=1;
else c1=0;
end
always@(q1)
begin
if(q1==1&&q0==5) c2=1;
else c2=0;
end
assign cout=c2;
assign qout={q1,q0};
endmodule
|