Picproje Elektronik Sitesi

DİJİTAL & ANALOG ELEKTRONİK => Pld, Spld, Pal, Gal, Cpld, Fpga => Konuyu başlatan: alicavuslu - 20 Ekim 2015, 21:41:24

Başlık: Ödev 1 : Karaşimşek
Gönderen: alicavuslu - 20 Ekim 2015, 21:41:24
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;
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: MC_Skywalker - 20 Ekim 2015, 21:58:38
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/)
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: alicavuslu - 20 Ekim 2015, 22:05:29
Ellerinize sağlık Hocam. Güzel olmuş...
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: MC_Skywalker - 20 Ekim 2015, 22:14:43
Hocam teşekürler yardımlarınız için.

Not: Video'yu değiştirdim :)
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: JOKERAS - 21 Ekim 2015, 12:15:48
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.


Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: ipek - 21 Ekim 2015, 13:06:16
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
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: JOKERAS - 21 Ekim 2015, 13:10:59
İpek usta bu yöntem aldatmaca ama.
Aslı öyle değil!


Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: MC_Skywalker - 21 Ekim 2015, 13:13:13
PWM ile yapınca tıpkı dizideki gibi oluyor.
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: JOKERAS - 21 Ekim 2015, 13:24:54
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 :)
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: alicavuslu - 21 Ekim 2015, 13:31:35
Onu daha sonraki ödevlerde verelim. Güzel fikir...
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: Firzen - 21 Ekim 2015, 19:25:26
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 :)
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: JOKERAS - 21 Ekim 2015, 19:39:59
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.


Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: MC_Skywalker - 21 Ekim 2015, 19:49:28
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)
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: 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;
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: Firzen - 21 Ekim 2015, 23:06:29
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
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: 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;
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: Firzen - 22 Ekim 2015, 00:49:19
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. :)
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: alicavuslu - 24 Ekim 2015, 20:31:49
Ödev ile alakalı çalışma gerçekleştiren arkadaşları da aramızda görmek isteriz. :)
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: Firzen - 24 Ekim 2015, 22:00:58
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? :)
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: MC_Skywalker - 24 Ekim 2015, 22:03:32
İşten fırsat bulursam step motor döndüreceğim :)


(http://s13.postimg.cc/6aumfh8k3/image.jpg) (http://postimg.cc/image/6aumfh8k3/)
Başlık: Ynt: Ödev 1 : Karaşimşek
Gönderen: alicavuslu - 24 Ekim 2015, 22:51:39
2. Ödev de kara şimşekten devam edeceğiz.