Problemas con programa fpga spartan 3 para crear culebra mecánica.

hola necesito ayuda para un proyecto final es urgente espero alguien pueda ayudarme con este codigo
necesito controlar 6 servos con una fpga spartan 3 3500e

necesito hacer que se muevan como culebra simultaneamente con ciclo que no para y solo con un reset
masomenos algo asi www.youtube.com/watch?v=f2nkj7c4v6o

espero me puedan ayudar gracias !(y)
 
¿Y lo que ya hiciste del proyecto dónde está?

Si pretendés que alguien haga un desarrollo para vos, entonces buscá un ingeniero por tu ciudad y pagale.
Si lo que querés es algún consejo sobre lo que hiciste, entonces posteá los esquemas, programas o lo que tengas desarrollado y se verá.

Saludos
 
ok lo que yo llevo es esto solo que los servos giran solo hacia un lado

aqui esta el pwm

library ieee;
use ieee.std_logic_1164.all;
use work.Control_Srvo.ALL;
use work.FFD.ALL;
use work.PWM.ALL;
use work.comparador_ffj_comp.ALL;

PACKAGE t_level is
COMPONENT toplevel port (
clk,rst: in std_logic;
foco: out std_logic;
servo: buffer std_logic
);
END COMPONENT;
end t_level;



library ieee;
use ieee.std_logic_1164.all;
use work.Control_Srvo.ALL;
use work.FFD.ALL;
use work.PWM.ALL;
use work.comparador_ffj_comp.ALL;

entity toplevel is port (
clk,rst: in std_logic;
foco: out std_logic;
servo: buffer std_logic
);
end toplevel;

architecture arch_toplevel of toplevel is

signal control_to_ffd: std_logic_vector(18 downto 0);
signal ffd_to_compa: std_logic_vector(18 downto 0);
signal conta_to_compa: std_logic_vector(18 downto 0);
begin



control: c_Control_Srvo PORT MAP(clk,rst,foco,control_to_ffd);
flipflp: registro PORT MAP(clk,rst,control_to_ffd,ffd_to_compa);
contpwm: contpwm PORT MAP (clk,rst,conta_to_compa);
comapara: compardor_c PORT MAP (clk,rst,servo,conta_to_compa,ffd_to_compa);


end arch_toplevel;

Estes es el del control del servo


library ieee;

use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_1164.all;

PACKAGE Control_Srvo IS
COMPONENT c_Control_Srvo PORT(
clk,rst: in std_logic;
foco: out std_logic;
salida_C: buffer std_logic_vector(18 downto 0));
end COMPONENT;
END Control_Srvo;

library ieee;

use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_1164.all;

ENTITY c_Control_Srvo is Port(
clk,rst: in std_logic;
foco: out std_logic;
salida_C: buffer std_logic_vector(18 downto 0));
END c_Control_Srvo;

ARCHITECTURE arch_c_Control_Servo of c_Control_Srvo is
signal button: std_logic_vector (1 downto 0);
signal cnt: std_logic_vector (31 downto 0);

BEGIN

--proceso del preescalador
reloj: process(clk, rst)
begin
if(rst='1') then
button<= "00" ;
cnt<= conv_std_logic_vector(0,32);
elsif(clk'event and clk='1') then
if(cnt= conv_std_logic_vector(25000000,32)) then
button <= "10";
foco <='1';
cnt <= conv_std_logic_vector(0,32);
else
button <= "01" ;
foco <='0';
cnt <= cnt+1;
end if;
end if;
end process;
---fin proceso del preescalador

salida_C <= conv_std_logic_vector(1000,20) when button = "01" else
conv_std_logic_vector(900,20) when button = "10" else
conv_std_logic_vector(0,20);


end arch_c_Control_Servo;

el del flip flop

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

PACKAGE FFD IS
COMPONENT registro PORT
(
clk, rst: in std_logic;
intmov: in std_logic_vector(18 downto 0);
salffd: out std_logic_vector(18 downto 0)
);
end COMPONENT;
end FFD;


library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;

entity registro is port(
clk, rst: in std_logic;
intmov: in std_logic_vector(18 downto 0);
salffd: out std_logic_vector(18 downto 0)
);
end registro;

architecture arch_registro of registro is
begin
process (clk, rst) begin
if rst='1' then
salffd<= conv_std_logic_vector(0,19);
elsif (clk' event and clk='1') then
salffd <= intmov;
end if;
end process;
end arch_registro;


y el comparador

library ieee;
use ieee.std_logic_arith.alL;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

PACKAGE comparador_ffj_comp IS
COMPONENT compardor_c PORT
(
clk,rst: in std_logic;
Señal_servo: buffer std_logic;
conta: in std_logic_vector(18 downto 0);
salffd: in std_logic_vector(18 downto 0)
);
end COMPONENT;
end comparador_ffj_comp;

library ieee;
use ieee.std_logic_arith.all;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

ENTITY compardor_c is port
(
clk,rst: in std_logic;
Señal_servo: buffer std_logic;
conta: in std_logic_vector(18 downto 0);
salffd: in std_logic_vector(18 downto 0)
);
END compardor_c;

ARCHITECTURE archComp of compardor_c IS
BEGIN

process(clk,rst)
begin
if(rst='1') then
Señal_servo <= '0';
elsif(clk'event and clk = '1') then
if( conta < salffd) then
Señal_servo <= '1';
else
Señal_servo <= '0';
end if;
end if;
end process;

end archComp;




el problema es que no puedo hacer que sigan una secuencia y un ciclo continuo


gracias!(y)
 
Última edición por un moderador:
Atrás
Arriba