Page 1107 - 3-2
P. 1107
/*
근접 센서에 따른 모터 구동 회로
*/
input clk,rst,l_sen_f,r_sen_f,en;
output reg [1:0]motor;
reg [31:0] cnt;
reg l_flag,r_flag;
wire l_sen,r_sen;
parameter pwm_value=300000;
assign l_sen=~l_sen_f;
assign r_sen=~r_sen_f;
always @(posedge clk, negedge rst)
begin
if(!rst) motor<=2'b00;
else
begin
if(en)
begin
if(l_sen==1 && r_sen==1) begin l_flag<=0; r_flag<=0; motor<=2'b00; end
// 둘다 인식 정지:
else
begin
if(l_sen==0 && r_sen==1) // 반시계방향 회전
begin
if(pwm_value>=cnt) motor<=2'b10;
else motor<=2'b00;
l_flag<=1;
end
else if(l_sen==1 && r_sen==0)// 시계방향 회전
begin
if(pwm_value>=cnt) motor<=2'b01;
else motor<=2'b00;
r_flag<=1;
end
else if(l_sen==0 && r_sen==0)
//find mode 찾다가 갑자기 사라졌을 때
begin
if(l_flag==1)
begin
if(pwm_value>=cnt) motor<=2'b10; // 반 시계방향 회전
else motor<=2'b00;
end
else if(r_flag==1)
begin if(pwm_value>=cnt) motor<=2'b01; // 시계방향 회전
else motor<=2'b00;
end
else
begin
if(pwm_value>=cnt) motor<=2'b01;
else motor<=2'b00;
end
end
end
- 1107 -