Karaşimşek için aşağıdaki kod üzerinde geliştirme yapmaya devam edilinebilir. Bu kod 1 saniye aralıklar ile sola kayma işlemi yapmaktadır.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity kara_simsek is
Port (
in_clk : in std_logic;
out_leds : out std_logic_vector(7 downto 0)
);
end kara_simsek;
architecture Behavioral of kara_simsek is
constant CLK_PERIOD : integer := 10; -- ns cinsinden
constant NEW_CLK_PERIDO : integer := 1_000; -- ms cinsinden
constant CLK_COUNT_PARAM : integer := (NEW_CLK_PERIDO * (10**6)) / (2 * CLK_PERIOD);
signal r_clk_new : std_logic := '0';
signal r_leds : std_logic_vector(7 downto 0) := X"01";
signal r_clk_count : integer := 0;
begin
out_leds <= r_leds;
process(in_clk)
begin
if rising_edge(in_clk) then
if r_clk_count = CLK_COUNT_PARAM - 1 then
r_clk_count <= 0;
r_clk_new <= not r_clk_new;
else
r_clk_count <= r_clk_count + 1;
end if;
end if;
end process;
process(r_clk_new)
begin
if rising_edge(r_clk_new) then
r_leds <= r_leds(r_leds'high - 1 downto 0) & r_leds(r_leds'high);
end if;
end process;
end Behavioral;
Ucundan azcık kopya çektim :)
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity KaraSimsek is
Port ( clk : in STD_LOGIC;
led015 : out STD_LOGIC_VECTOR (15 downto 0));
end KaraSimsek;
architecture Behavioral of KaraSimsek is
constant SYS_CLK_PERIOD : integer := 10; -- ns cinsinden
constant NEW_CLK_PERIOD : integer := 100_000_000; -- ns cinsinden
constant CLK_COUNT : integer := NEW_CLK_PERIOD / (2 * SYS_CLK_PERIOD);
signal counter: std_logic_vector(3 downto 0):= "0000";
signal gecici: std_logic_vector(3 downto 0);
signal clk_new : std_logic := '0';
signal count : integer range 0 to 99999999 := 0;
signal r_led015 : STD_LOGIC_VECTOR (15 downto 0):= X"0001";
signal fwd : std_logic := '1';
begin
process(clk)
begin
if clk= '1' and clk'event then
if count = CLK_COUNT - 1 then
count <= 0;
clk_new <= not clk_new;
else
count <= count + 1;
end if;
end if;
end process;
process(clk_new)
begin
if rising_edge(clk_new) then
if (fwd = '1') then
r_led015 <= r_led015(14 downto 0) & r_led015(15);
if (r_led015 = X"4000") then
fwd <= '0';
end if;
else
r_led015 <= '0' & r_led015(15 downto 1);
if (r_led015 = X"02") then
fwd <= '1';
end if;
end if;
end if;
end process;
led015 <= r_led015;
end Behavioral;
https://youtu.be/rmpanx5cP8U (https://youtu.be/rmpanx5cP8U)
(http://s11.postimg.cc/t3fw2jxcv/IMG_0239_1.jpg) (http://postimg.cc/image/t3fw2jxcv/)
Ellerinize sağlık Hocam. Güzel olmuş...
Hocam teşekürler yardımlarınız için.
Not: Video'yu değiştirdim :)
Selam,
Ne zaman Karaşimşek lambası görsem kendimi alamıyorum,hatırası büyüktür bende.
Güzel olmuş, 10 numara 4 yıldız
Neden 4 yıldız?
Kuyruklu orijinal Karaşimşek olsaydı 5 yıldız olacaktı:)
Bunu kuyruklu yaparsanız harika olur.
ilgi ile izliyorum.hocam 5'li dizi ile kaymalı filmdeki aslı öyle idi.
Cylon_Data:
LDATA 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0
LDATA 0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0
LDATA 0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0
LDATA 0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0
LDATA 0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0
LDATA 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0
LDATA 0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0
LDATA 0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0
LDATA 0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0
LDATA 0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0
LDATA 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0
LDATA 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1
İpek usta bu yöntem aldatmaca ama.
Aslı öyle değil!
PWM ile yapınca tıpkı dizideki gibi oluyor.
Alıntı yapılan: MC_Skywalker - 21 Ekim 2015, 13:13:13
PWM ile yapınca tıpkı dizideki gibi oluyor.
Tamam işte bende onu diyorum.
Öyle yapsaydınız 5 yıldız olurdu onu demek istemiştim.
Hadi yapın bizde nemalanalım :)
Onu daha sonraki ödevlerde verelim. Güzel fikir...
Alıntı yapılan: JOKERAS - 21 Ekim 2015, 13:10:59
İpek usta bu yöntem aldatmaca ama.
Aslı öyle değil!
Aslına bakarsan aldatmaca değil bu sisteme instantiation deniliyor PortMap metodu ile 3to8 gibi mux veya demux yapabilirsin.
mesaj birleştirme:: 21 Ekim 2015, 19:26:19
Alıntı yapılan: alicavuslu - 21 Ekim 2015, 13:31:35
Onu daha sonraki ödevlerde verelim. Güzel fikir...
hocam hem PWM hemde kayar sistem biraz sanki ağır olur gibi :)
Yok Firzen,Bence Aldatmaca o.
Kuyruk efektini vermek için uygulanmış bir taktik.
https://www.youtube.com/watch?v=-O6kMYTRyFY (https://www.youtube.com/watch?v=-O6kMYTRyFY)
Orj olan bu videodaki gibi.
burada açıklamışlar
http://www.rrsg.ee.uct.ac.za/courses/EEE4084F/Archive/2014/Assignments/Pracs/Prac4/EEE4084F_Prac4_XilinxISE.pdf (http://www.rrsg.ee.uct.ac.za/courses/EEE4084F/Archive/2014/Assignments/Pracs/Prac4/EEE4084F_Prac4_XilinxISE.pdf)
Şöyle düşünürsek 16 bitlik buffer tanımladık. Tanımlama işlemlerinde ilk 3 biti 1 olana kadar kaydırma yapmayacağız. Yani 1 ekleyeceğiz. Daha sonra 0 ekleyeceğiz. Bu şekilde kuyruk efektide eklenmiş olur. Ama onunda sırası gelcek :)
if count < 3 then
r_leds <= r_leds(r_leds'high - 1 downto 0) & '1';
else
r_leds <= r_leds(r_leds'high - 1 downto 0) & '0';
end if;
Alıntı yapılan: JOKERAS - 21 Ekim 2015, 19:39:59
Yok Firzen,Bence Aldatmaca o.
Kuyruk efektini vermek için uygulanmış bir taktik.
http://www.youtube.com/watch?v=-O6kMYTRyFY (http://www.youtube.com/watch?v=-O6kMYTRyFY)
Orj olan bu videodaki gibi.
Amplifier Tube + amplifier devresi + Shift Register ile yapılmış kayar sistem bunu direk yapar PWM bile gerek kalmaz Amp Tube zaten bu şekilde yanıp sönüyor
mesaj birleştirme:: 21 Ekim 2015, 23:07:17
Alıntı yapılan: alicavuslu - 21 Ekim 2015, 21:22:58
Şöyle düşünürsek 16 bitlik buffer tanımladık. Tanımlama işlemlerinde ilk 3 biti 1 olana kadar kaydırma yapmayacağız. Yani 1 ekleyeceğiz. Daha sonra 0 ekleyeceğiz. Bu şekilde kuyruk efektide eklenmiş olur. Ama onunda sırası gelcek :)
if count < 3 then
r_leds <= r_leds(r_leds'high - 1 downto 0) & '1';
else
r_leds <= r_leds(r_leds'high - 1 downto 0) & '0';
end if;
Hocam sanırım size gönderdiğim ödevde aynı bunu yapmıştım 3 bit kaydırma yapmıştım :D
Tek bit olarak yapmışsın :)
LEDS <= "00000001" when "000",
"00000010" when "001",
"00000100" when "010",
"00001000" when "011",
"00010000" when "100",
"00100000" when "101",
"01000000" when "110",
"10000000" when others;
Alıntı yapılan: alicavuslu - 21 Ekim 2015, 23:09:51
Tek bit olarak yapmışsın :)
LEDS <= "00000001" when "000",
"00000010" when "001",
"00000100" when "010",
"00001000" when "011",
"00010000" when "100",
"00100000" when "101",
"01000000" when "110",
"10000000" when others;
instantion'i düzenleyince sorun çıkmayacaktır hocam. :)
Ödev ile alakalı çalışma gerçekleştiren arkadaşları da aramızda görmek isteriz. :)
Alıntı yapılan: alicavuslu - 24 Ekim 2015, 20:31:49
Ödev ile alakalı çalışma gerçekleştiren arkadaşları da aramızda görmek isteriz. :)
Sıradaki ödev nasıl oalcak hocam? :)
İşten fırsat bulursam step motor döndüreceğim :)
(http://s13.postimg.cc/6aumfh8k3/image.jpg) (http://postimg.cc/image/6aumfh8k3/)
2. Ödev de kara şimşekten devam edeceğiz.