Я пытаюсь сделать сервоработу на своей ПЛИС на базе Spartan-6.Серво на 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
Так что в моей голове, мой код будет создавать импульсную волну первым на всем пути справа, установив высоту на 2 мс, затем низкий, затем высокий на 2 мс и т. д. и повторяя. Затем, весь путь влево с высоким значением для 1 мс и т. Д. Я думал, что эта проблема будет относительно простой, поскольку все, что я делаю, это отправить 1 или 0 на вывод IO, и у меня есть сервопривод, подключенный к 5v , земля и контакт ввода-вывода.
Есть ли что-то глупое/очевидное/легкое, что мне не хватает? Или есть какая-то часть концепции, которую я пропускаю?
Спасибо за любую помощь заранее! Cody
Спасибо! Это определенно привело меня к правильному пути. Я понятия не имел, что заявления о задержке не синтезировали. –
Добро пожаловать. Пожалуйста, подтвердите ответ, если он решит ваш вопрос. –