これは、RC サーボ モーターを制御するための私のコードです。このコードは、基本的に 50MHz の周波数を 1KHz に変換します。
FPGA のスイッチの 1 つを使用してモーターを制御しています。スイッチがオンになるまで、プログラムは実行されません。しかし、それは起こっていないようです。何が間違っているのかわかりません。それはおそらく非常にばかげた間違いです。
module servo(clk,rst,clk_out,switch);
input clk,rst,switch;
output reg clk_out;
reg [15:0] counter;
always @(posedge clk or posedge rst or posedge switch)
if (switch) begin
if(rst) begin
counter <=16'd0;
clk_out <= 1'b0;
end
else if(counter==16'd25000) begin
counter <=16'd0;
clk_out <= ~clk_out;
end
else begin
counter<=counter+1;
end
end
endmodule
また、デューティサイクルを変更してモーターの回転を速くしようとしましたが、これは機能していないようです。
module servo (clk,rst,clk_out,switch);
input clk,rst,switch;
output reg clk_out;
reg [15:0] counter;
always @(posedge clk or posedge rst)
if(rst)
begin
counter<=16'd0;
clk_out <= 1'b0;
end
else if (switch)
begin
if(counter==16'd12500)
begin
clk_out <= 1'b1;
counter<=counter+1;
end
else
if(counter==16'd50000)
begin
counter <= 16'd0;
clk_out <= 1'b0;
end
else
begin
counter<=counter+1;
end
end
endmodule