Açıklama:
Elektrik, Elektronik, Haberleşme ve Otomasyon konularının ağırlıklı olarak konuşulduğu, tartışıldığı ve bilgi paylaşımı yapıldığı forumumuza hoşgeldiniz.
Şu an Tamamlanmış Elektronik Devreler, Projeler kategorisi içerisindeki Robot projeleri (robot projects) forumunda bulunuyorsunuz.
Bu sayfada üyelerimizin "FPGA ile Sumo robot uygulaması" konusundaki problem, görüş ve önerileri okuyabilir ayrıca konu hakkındaki doküman, resim, proje, devre ve programlara ücretsiz olarak ulaşabilirsiniz. Üye olduktan sonra sizler de konu hakkında sorular sorabilir ya da yorum ve paylaşım yaparak birikimlerinizi aktarabilirsiniz.
Forumdan tam olarak yararlanabilmek için üye olmayı unutmayınız!
Slm arkadaşlar ekte xilinx spartan 3e fpga' i ile yapmış olduğum sumo robot uygulamasını bulabilirsiniz. Uygulama için gereken bütün dosyalar ekte mevcuttur.
--------------------------------------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity SSMACH2 is
port (sh,solcny,sagcny :in std_logic; -- system input to start the system
solmi,solmg,sagmi,sagmg:out std_logic; -- system output
clk, reset : in std_logic); -- clock and reset inputs
end SSMACH2;
-- purpose: Implement main architecture for SSMACH2
architecture BEHAVIOR of SSMACH2 is
type STATES is (ilkhareket,solgeridon,duzgit,saggeridon,wait1,wait2,wait3,wait4,solgeridon2,solgeridon3,saggeridon2,saggeridon3); -- possible states
signal PRESENT_STATE : STATES; -- present state
signal x,y,z,a:integer;
begin -- BEHAVIOR
-- purpose: Main process
process (clk, reset)
begin -- process
-- activities triggered by asynchronous reset (active high)
if reset = '1' then
PRESENT_STATE <= ilkhareket; -- default state
solmi<='0';
solmg<='1';
sagmi<='1';
sagmg<='0';
-- activities triggered by rising edge of clock
elsif clk'event and clk = '1' then
PRESENT_STATE <= ilkhareket; -- default state
case PRESENT_STATE is
when ilkhareket =>
solmi<='0';
solmg<='1';
sagmi<='1';
sagmg<='0';
if sh='1' and solcny='1' and sagcny='1' then PRESENT_STATE<= duzgit;
elsif sh='1' and solcny='1' and sagcny='0' then PRESENT_STATE<= saggeridon;
elsif sh='1' and solcny='0' and sagcny='0' then PRESENT_STATE<= saggeridon;
elsif sh='0' and solcny='1' and sagcny='0' then PRESENT_STATE<= saggeridon;
elsif sh='0' and solcny='0' and sagcny='0' then PRESENT_STATE<= saggeridon;
elsif sh='1' and solcny='0' and sagcny='1' then PRESENT_STATE<=solgeridon;
elsif sh='0' and solcny='0' and sagcny='1' then PRESENT_STATE<=solgeridon;
elsif sh='0' and solcny='1' and sagcny='1' then PRESENT_STATE<= ilkhareket;
end if;
when duzgit =>
solmi<='1';
solmg<='0';
sagmi<='1';
sagmg<='0';
if sh='1' and solcny='1' and sagcny='1' then PRESENT_STATE<= duzgit;
else PRESENT_STATE<= ilkhareket;
end if;
when solgeridon =>
solmi<= '0';
solmg<= '1';
sagmi<= '0';
sagmg<= '1';
x<=25000000;
PRESENT_STATE<= wait1;
--wait for 1000ms;
when solgeridon2=>
solmi <= '0';
solmg <= '1';
sagmi <= '0';
sagmg <= '0';
y<=12500000;
PRESENT_STATE<= wait2;
--wait for 500ms;
when solgeridon3=>
if sh='1' and solcny='0' and sagcny='1' then PRESENT_STATE<=solgeridon;
elsif sh='0' and solcny='0' and sagcny='1' then PRESENT_STATE<=solgeridon;
else PRESENT_STATE<= ilkhareket;
end if;
when saggeridon=>
solmi<='0';
solmg<='1';
sagmi<='0';
sagmg<='1';
z<=25000000;
PRESENT_STATE<= wait3;
--wait for 1000ms;
when saggeridon2=>
solmi<='0';
solmg<='0';
sagmi<='0';
sagmg<='1';
a<=12500000;
PRESENT_STATE<= wait4;
--wait for 500ms;
When saggeridon3=>
if sh='1' and solcny='1' and sagcny='0' then PRESENT_STATE<= saggeridon;
elsif sh='1' and solcny='0' and sagcny='0' then PRESENT_STATE<= saggeridon;
elsif sh='0' and solcny='1' and sagcny='0' then PRESENT_STATE<= saggeridon;
elsif sh='0' and solcny='0' and sagcny='0' then PRESENT_STATE<= saggeridon;
else PRESENT_STATE<= ilkhareket ;
end if;
When wait1=>
if (x>0) then
x<=x-1;
PRESENT_STATE<= wait1;
else PRESENT_STATE<= solgeridon2;
end if;
When wait2=>
if(y>0) then
y<=y-1;
PRESENT_STATE<= wait2;
else PRESENT_STATE<= solgeridon3;
end if;
When wait3=>
if (z>0) then
z<=z-1;
PRESENT_STATE<= wait3;
else PRESENT_STATE<= saggeridon2;
end if;
When wait4=>
if (a>0) then
a<=a-1;
PRESENT_STATE<= wait4;
else PRESENT_STATE<= saggeridon3;
end if;
end case;
end if;
end process;
end BEHAVIOR;
1 Kullanıcı bu konu için egemenak arkadaşımıza teşekkür ettiler
FPGA ile Sumo robot uygulaması
Benzer Konular
- çok ilginç bir robot
- 16F84A ile Çizgi İzleyen Robot Yapımı - yardım
- PIC16F877 ile Cisim Algılayan Kumandalı Mobil Robot
- GLDC ile Şifreli Kilit,sıcaklık ve BMP uygulaması
- protesus-İSİS programında gerçek paralel port uygulaması - yardım
- lm35 ve 16f877 ile termometre uygulaması(ccs c kullanılmıştır)
- Reconfigurable Computing: The Theory and Practice of FPGA-Based Computation
- pic16f877- ps/2 klavye - lcd uygulaması
- Gelişmiş Bir Şifre Uygulaması
- fintek a.ş. - C# ve Oracle da bankacılık uygulaması stajı , 30 iş günü
- Sumo Robot
Sitemize üyelik ve içeriğin indirilmesi tamamen ücretsizdir. Sitemizde paylaşılan tüm dokümanlar (Tezler, makaleler, ders notları, sınav soru cevaplar, projeler) paylaşımcıların bireysel çalışmaları olup telif hakları kendilerine aittir ya da açık bir şekilde kamusal alana yerleştirilmiş dokümanların birer kopyalarıdır. Kişilerin bireysel çalışmalarını sitemizde yüklemesinde, sitemizde paylaşıma teşvik eden
puanlama sisteminin de etkisi büyüktür. Bunlara rağmen hala size ait olan ve burada bulunmasına izin vermediğiniz dokümanlar varsa iletişim bölümünden yöneticilere bildirmeniz durumunda derhal silineceklerdir.