0
私はSpartan-6ベースのFPGAでサーボ作業をしようとしています。Servo on FPGA
`timescale 1ns/1ps
/*
1 pin for servo--ORANGE CABLE
red cable-- 5V, brown cable-- GND.
Position "0" (1.5 ms pulse) is middle,
"90" (~2ms pulse) is all the way to the right,
"-90" (~1 ms pulse) is all the way to the left.
servo stuff:
http://www.micropik.com/PDF/SG90Servo.pdf
*/
//All i need to do is set SERVOPWM to 1 and 0 with delays i think
module ServoTestNShit(input M_CLOCK,
output [7:0] IO_LED, // IO Board LEDs
output reg SERVOPWM);
assign IO_LED = 7'b1010101; // stagger led lights just cause
reg [15:0] counter;
//use counter to have a 1ms or 2ms or 1.5ms duty cycle for a while inorder to actually run
//because run it this way is asking the servo to move for 1.5ms so it cant atually move that fast
always @*
begin
for(counter = 0; counter < 3000; counter = counter + 1)
begin
SERVOPWM = 1;
#2;
SERVOPWM = 0;
#2;
SERVOPWM = 1;
#2;
SERVOPWM = 0;
#2;
SERVOPWM = 1;
#2;
SERVOPWM = 0;
#2;
end
for(counter = 0; counter < 3000; counter = counter + 1)
begin
SERVOPWM = 1;
#1;
SERVOPWM = 0;
#2;
SERVOPWM = 1;
#1;
SERVOPWM = 0;
#2;
SERVOPWM = 1;
#1;
SERVOPWM = 0;
#2;
end
end
endmodule
と私のUCFファイルがちょうどほとんどです::次のように
私のコードがある
# Clock signal
NET "M_CLOCK" LOC = P123;
NET "SERVOPWM" LOC = P121 ;//0P1
だから私の頭の中で、私のコードは、最初にすべての方法をパルス波を作成します右に2msの間ハイに、次に2msの間ハイに、そして次に2msの間ハイに設定して繰り返します。その後、1msなどの間、高い方で左へと続きます。 私はIOピンに1または0を送信しているので、この問題は比較的簡単だと思っていました。 、グランド、および問題のIOピンについて説明します。
愚か/明白/簡単なことがありますか? 私が紛失している概念の一部がありますか?
事前にお問い合わせいただきありがとうございます。 Cody
ありがとうです!それは間違いなく私が正しい道を始めることになった。私は、遅延の文が合成されなかったことは知らなかった。 –
ようこそ。あなたの質問を解決した場合は、その答えを承認してください。 –