步进电机
步进电机的模拟使用nexys4板子上的led灯,状态图如下
根据状态图写代码,可以使用状态机的方法
在这里没有用状态机
首先还是分频
always@(posedge cp)
begin
if(innercp<27'd100000000)
innercp<=innercp+1;
else
innercp<=0;
end
然后是状态变换
always@(posedge incp) begin
if(reset==1)
abc<=3'b000;
else if(M==0) //M==0时正转
case(abc)
3'b111:abc<=3'b000;
3'b000:abc<=3'b110;
3'b110:abc<=3'b010;
3'b010:abc<=3'b011;
3'b011:abc<=3'b001;
3'b001:abc<=3'b101;
3'b101:abc<=3'b100;
3'b100:abc<=3'b110;
endcase
else
case(abc)//M==1时反转
3'b111:abc<=3'b000;
3'b000:abc<=3'b110;
3'b110:abc<=3'b100;
3'b100:abc<=3'b101;
3'b101:abc<=3'b001;
3'b001:abc<=3'b011;
3'b011:abc<=3'b010;
3'b010:abc<=3'b110;
endcase
end
因为是照着状态图写,不会出现吸收态