Haz una pregunta
  Foros de Electrónica » Diseño digital » Circuitos lógicos combinacionales y secuenciales
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

10/12/2009 #1


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 !
10/12/2009 #2
Moderador general

Avatar de Cacho

Respuesta: ayuda programa fpga spartan 3
¿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
10/12/2009 #3


Respuesta: ayuda programa fpga spartan 3
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!
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Circuitos lógicos combinacionales y secuenciales

Compuertas, flips flops, registros, PLDs, codificadores, contadores, multiplexores, ...

Cerrar
Foros de Electrónica » Diseño digital » Circuitos lógicos combinacionales y secuenciales

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.