Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Diğer => Konuyu başlatan: baran123 - 07 Ekim 2017, 19:03:31

Başlık: CPLD/FPGA Öğrenmek
Gönderen: baran123 - 07 Ekim 2017, 19:03:31
Şu sıralar yoğun olarak ST'nin çiplerini kullanıyorum fakat bir yandan da yeni bir mimari, yeni bir sistem öğrenmek istiyorum.
CPLD ve FPGA başlamak için her türlü önerinize açığım. Bununla birlikte aklımda bir kaç soru var.

1) CPLD/FPGA ikilisinde hangisi ile başlamak gerekir ?
2) C kodu yazar gibi programlamak mümkün mü ?
3) Hazır bir geliştirme kartı yerine küçük bir kart tasarlamak ne kadar mantıklı olur ?
4) Başlangıç için ne kadar kapsamlı bir donanıma ihtiyaç vardır ?

İlk aklıma gelen küçük bir CPLD, SRAM, ROM gibi temel şeyleri barındıran küçük bir kart tasarlamak.
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: Cemre. - 07 Ekim 2017, 19:08:18
Daha alışabileceğni veya zevk alarak kullanacağını/programlayacagini bile görmeden o donanım için kart tasarlamak bence hiç mantıklı bir yaklaşım değil. Aksine vakit ve nakit kaybı diye düşünüyorum.

CPLD ile ilgili bu sıralar benim de bir hevesim var. Konuyu takipteyim...
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: MC_Skywalker - 07 Ekim 2017, 19:33:17
1) FPGA ile başlayın. CPLD için FPGA'nın küçüğü diye biliriz.
2) Donanım tanımlama dilleri C kod yapısına benzer
3) Hazır kart kullanmak daha verimli. şu arkadaş ile çalışıyorum  http://store.digilentinc.com/basys-3-artix-7-fpga-trainer-board-recommended-for-introductory-users/
4) Yukarıdaki kit içinde porogramlayıcısıda mevcut

şu sıralar CPLD ile saat için uğraşıyorum
(https://i.hizliresim.com/pGqJoq.jpg)
(https://i.hizliresim.com/Jl1J6J.jpg)

Bunlarda benim ilk denemeleri. VHDL donanım tanımlama diliyle yapıldım.
author=MC_Skywalker link=topic=34258.msg483199#msg483199 date=1449762152
-----------------------------------------------------------------------------------------

16bit yukarı/aşağı sayıcı
https://www.youtube.com/watch?v=EQbJrg95WK4


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.numeric_std.ALL;

entity onalti is
    Port ( clk100 : in STD_LOGIC;
           anh : in STD_LOGIC;
           led015 : out STD_LOGIC_VECTOR (15 downto 0));
end onalti;

architecture Behavioral of onalti is
            signal prescaller : integer range 0 to 800000:=0;
            signal sonuc : integer range 0 to 65535:=0;
begin
    led015<=STD_LOGIC_VECTOR(to_unsigned(sonuc,16));
        process(clk100)
            begin
            if(clk100'event and clk100='1') then
             if(prescaller<800000) then
                prescaller<=prescaller+1;
             else
                prescaller<=0;
            end if;     
           
            if(prescaller=0) then
            case anh is
                when '1' =>
                    if(sonuc<65535) then
                       sonuc<=sonuc+1;
                    else
                       sonuc<=0;
                    end if;
                when '0' =>
                    if(sonuc>0) then
                       sonuc<=Sonuc-1;
                    else
                       sonuc<=65535;
                    end if;
            end case;
            end if;
            end if;
        end process;                       
end Behavioral;


----------------------------------------------------------------------------------------

VHDL ile Karaşimşek Uygulamam
https://www.youtube.com/watch?v=rmpanx5cP8U

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;

Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: Bertan - 07 Ekim 2017, 21:24:11
Altera DE0-Nano kitini tavsiye ederim. Üzerinde başlangıç için yeterli çevre birimleri mevcut.  Geçen sene Çizgi Market'den indirim ile almıştım, belki bu sene de indirim olur.
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: muuzoo - 07 Ekim 2017, 21:55:01
@MC_Skywalker Hocam kodunuzda gördüğüm bir sorunu düzeltmek isterim. Kodunuzda

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use IEEE.numeric_std.ALL;


Satırları mevcut fakat genel kural olarak bu kütüphanlerin hepsini bir arada kullanmak sakıncalı. Ya bu şekilde :


library ieee ;
use ieee.std_logic_1164.all ;
use ieee.numeric_std.all


Ya da bu şekilde kullanın ama ikisni aynı anda kullanmayın.

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


Kaynak : http://www.synthworks.com/papers/vhdl_math_tricks_mapld_2003.pdf

(https://s1.postimg.cc/3h1r3rb7b3/picproje.png) (https://postimg.cc/image/70notkdx2z/)
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: MC_Skywalker - 07 Ekim 2017, 22:09:39
@muuzoo Bilgilendirici not için teşekürler.  Bilmediğim bir noktaydı.
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: sigmoid - 07 Ekim 2017, 22:48:38
Udemy üzerinde 25tl ye güzel kurslar var. Bu kursu satın aldım. Vakit bulup fazla izleyemedim. Ama izlediğim kadarıyla güzel. https://www.udemy.com/vhdl-and-fpga-development-for-beginners-and-intermediates/learn/v4/overview
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: MC_Skywalker - 07 Ekim 2017, 23:01:21
ucretsiz 110 bölümlük VHDL anlatımı
https://www.youtube.com/channel/UCbUe5SLMSZlSzCuJP81lU0A
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: baran123 - 07 Ekim 2017, 23:46:08
@Cemre. hocam haklısın fakat hiç bilmediğim için mini bir sistem düşünmüştüm.
@MC_Skywalker hocam açıklamalar için çok teşekkür ederim.
Alteranın hazır boardları çok pahalı gibi, en azından bir öğrenci için.
Benim düşündüğüm stm'nin 103 mini board tarzı bir şey olabildiğince temel birimlerin olması da yeterli.


@sigmoid hocam udemy aklıma gelmemişti bu iyi oldu.
Gerçi gördüğüm kadarıyla FPGA'ler artık MCU'lar kadar kaynak içermeye başlamış.


Sanırım şimdi uygun fiyatlı FPGA board arayabilirim. :)
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: MC_Skywalker - 08 Ekim 2017, 09:35:22
şöyle bir ikili işinizi görür. Aliexpress üzerinden ~$40 - $50 mailyetle temin edilebilir. kart üzerin de İntel Cyclone IV FPGA var.
(http://i.imgur.com/qSolOAz.jpg)

Bredboard için FPGA modülü  iki değişik version var. 15K ve 35K  Atrix 7 FPGA seçenekli.  üzerinde üretici firmanın programla arabirimi var.
http://store.digilentinc.com/cmod-a7-breadboardable-artix-7-fpga-module/

Bredboard için FPGA modülü  Spartan 6 FPGA var. üzerinde üretici firmanın programla ara birimi var.
http://store.digilentinc.com/cmod-s6-breadboardable-spartan-6-fpga-module/

Buda CPLD modülü. Ayrıca JTAG programlayıcı gerektiri
http://store.digilentinc.com/cmod-c2-breadboardable-coolrunner-ii-cpld-module/
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: 94onur94 - 08 Ekim 2017, 14:09:43
FPG giriş için bu kartı almayı düşünüyorum tavsiye eder misiniz veya alternatif olarak hangi kartı önerirsiniz.

(https://s1.postimg.cc/35c9sh68gr/image.png) (https://postimg.cc/image/35c9sh68gr/)

https://www.aliexpress.com/item/FPGA-development-board-ALTERA-Cyclone-IV-EP4CE-four-generations-SOPC-NIOSII-send-send-remote-control-to/32691369830.html?spm=a2g0s.13010208.99999999.277.Q2P0xA
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: baran123 - 23 Eylül 2018, 23:47:06
Tekrardan selamlar,

Şu sıralar fırsat bulmuşken konuya tekrardan vakit ayırabildim.
Biraz araştırma yaptım CPLD için ama hala takıldığım ufak noktalar var.

1) Xilinx /Altera arasında gidip geliyorum burada tavsiyeniz ne olur ?
2) CPLD/FPGA arasında kararsın kaldım. Sanki FPGA ile başlarsam bir şeyler kaçırmış olurum gibi geliyor.
3) Malum dolar kuru bir öğrenci için bu paralar çok fazla özellikle FPGA boardları. Donanım kısmında temel bir breakout board önerisi istiyorum. @MC_Skywalker hocam bir kaç öneride bulunmuştu fakat bu kitlerde pahalı.

CPLD için şu ürünler işimi görür mü?

CPLD Board : https://tr.aliexpress.com/item/Free-Shipping-5V-MAX-II-EPM240-CPLD-Minimum-System-Core-Board-Development-Board/32572133174.html?spm=a2g0s.13010208.99999999.265.5b693c008ind6d

Programmer : https://tr.aliexpress.com/item/Besr-prices-Free-shiping-USB-Blaster-ALTERA-CPLD-FPGA-download-cable/710638185.html?spm=a2g0s.13010208.99999999.259.5b693c008ind6d

Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: MC_Skywalker - 03 Ekim 2018, 12:52:41
CPLD sadece düşük yoğunluklu lojik ile uğraşacaksan işin çok iyi görü ama işim içine birazcıkta olsun ADC katayım dersen FPGA tarcih etmelisin. Olduya ARM vb işlemci istemiyorum deyip RISC V core içine ekleyip çalışmak için yine FPGA derim.

Benim başlangıç setim.
(https://i.postimg.cc/Jzz25Wdy/IMG_2161_1.jpg)
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: okg - 03 Ekim 2018, 15:07:33
Alıntı yapılan: MC_Skywalker - 03 Ekim 2018, 12:52:41CPLD sadece düşük yoğunluklu lojik ile uğraşacaksan işin çok iyi görü ama işim içine birazcıkta olsun ADC katayım dersen FPGA tarcih etmelisin. Olduya ARM vb işlemci istemiyorum deyip RISC V core içine ekleyip çalışmak için yine FPGA derim.

Benim başlangıç setim.
(https://i.postimg.cc/Jzz25Wdy/IMG_2161_1.jpg)

microseminin fpga larına riscv gömüp kullanıyordum. beni sarmadı açıkçası.
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: Emre_Tuncay_ - 03 Ekim 2018, 15:45:43
Artık çoğu yerde SoC kullanılır oldu.Fpga ve ARM işlemciler tek pakette üretiliyor.Yoğun işlem gücünü fpga hallederken karar verme mekanizmasının MCU hallediyor.Bence bu sistemler üzerinede yoğunlaşılmalı.Örnek vermek gerekirse Zynq kullanılabilir. Xilinx'in geliştirme ortamı daha kullanıcı dostu geliyor bana. Tabi bu kartlar dolar ile beraber uçtu gitti.Bir zybo 1500tl olmuş. Bu arada FPGA geliştirme kartlarında akademik indirim kullanılabilir akademisyen tanıdığınız veya lisansüstü yapıyorsanız bu fırsatı değerlendirin.
Microblaze kısmınada bakmanızı öneririm FPGA ile denetleyici çalıştırıp üzerlerinde freertos çalıştırılabiliyor.
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: OptimusPrime - 03 Ekim 2018, 17:21:25
SoC ve SoM larin populerligi gunden gune artiyor. CPLD yakin bir zamanda tarih olabilir. Baslangic icin xilinx tavsiye ederim uzerinde zynq-7000 serisi herhangi bir oyuncakla baslayabilirsin (biraz tuzludur ama). Zaten uzerinde arm islemci ile geliyor (mikrokontrolcu degil!). Led yakip sondurmeden sinyal islemeye kadar genis bir yelpazede kullanabilirsin. Isletim sistemi secenekleri de oldukca genis. Linux, beles rtos, papaz kodlama gibi. Onumuzdeki 10 sene seni idare eder ;D
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: WrtM - 03 Ekim 2018, 20:26:21
Benim yükseklerde gözüm yok , zaten bilgim ve o kadarlık işlem gücüne ihtiyacım da yok.

https://tr.aliexpress.com/item/U119-Altera-MAX-II-EPM240-CPLD-Development-Board-Experiment-Board-Learning-Breadboard/32605348979.html?spm=a2g0s.9042311.0.0.9ae34c4dyn18kX

linkteki kitle beraber usb blaster programlayıcısı sipariş ettim. amacım lojik herhangi bir entegre lazım olduğunda konfigüre edip kullanabileceğim bir yapı olsun. Sürekli elektronik tedarikçilerinden lojik entegre sipariş etmekten bıktım.Bu hamlemin deneylerimde  atölyemde para-zaman kazandıracağını umuyorum.
Yalnız alteranın quartus programını kullanışsız buldum biraz alışmak gerek.
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: baran123 - 04 Ekim 2018, 01:03:28
CPLD/FPGA için aslında hiç farketmez fakat alınabilir bişey olsun istiyorum.
Dolar kuru sağ olasın ufacık kitler çılgın seviyelere ulaşmış. Öğrenci adamı aşıyor :)
@MC_Skywalker
Hocam senin paylaştığın kit gayet iyi ama 33 dolar gözüküyor.
Güçlü olsun onu yapsın bunu yapsın derdim yok başta ufak tefek uygulamalardan sonra elimdeki TFT'leri sürebileyim, kameradan görüntü aktarabileyim gibi işleri yaptırmak istiyorum.
Sinyal işleme ve güçlü matematik kısımlarına ilerde işin teorisini öğrenince girişmek istiyorum.
Zaten SoC'lar da durum aynı değil mi ? En ucuz SoC bugün kaç paradır ki bilir :)
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: Zoroaster - 04 Ekim 2018, 03:49:01
FPGA barındıran kartlarınızda FPGA kodlarını kopyalamaya karşı nasıl koruyorsunuz?
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: OptimusPrime - 04 Ekim 2018, 16:59:06
Xilinx de 2 cesit koruma var bildigim. Birincisi jtag i kapatmak, ikincisi ise program dosyasini sifrelemek.
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: Zoroaster - 04 Ekim 2018, 18:20:54
CPLD icin mi FPGA icin mi konusuyorsun?
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: OptimusPrime - 04 Ekim 2018, 19:27:45
Genel konusuyorum. TRM lerine bakarken gordugum aklimda kalan seyler bunlar. Biz tasarladigimiz hicbir cihaza koruma koymadik. Bu yuzden detaylari bilmiyorum.

Bu arada FPGA icin sadece jtag i patlatmak da komik olur. Devekusu misali.  ;D
Başlık: Ynt: CPLD/FPGA Öğrenmek
Gönderen: aforizma - 04 Ekim 2018, 19:47:23
Alıntı yapılan: Zoroaster - 04 Ekim 2018, 03:49:01FPGA barındıran kartlarınızda FPGA kodlarını kopyalamaya karşı nasıl koruyorsunuz?
Koruma yontemlerini su sekilde anlatmislar. Xilinx icin tabi
https://www.xilinx.com/support/answers/40360.html