Książka na zupełny początek z FPGA

Dyskusje ogólne na temat "cyfrówki" czyli wszystko o TTL/CMOS, językach VHDL i VERILOG, bramkach, rejestrach, przerzutnikach... Dobre miejsce na pytania odnośnie uniwersalnych programatorów (np. Willem) a także podłączania własnych peryferiów do komputera PC.
ODPOWIEDZ
Awatar użytkownika
Kulpina
Użytkownik
Posty: 2037
Rejestracja: 28 lip 2005, 16:57
Lokalizacja: Sanok
Kontakt:

Książka na zupełny początek z FPGA

Post autor: Kulpina » 26 lis 2010, 13:49

Jaką książkę polecacie na początek z fpga? Taką, żeby poruszała zupełne podstawy, opis tych układów itd.

Awatar użytkownika
michalstec1
Użytkownik
Posty: 202
Rejestracja: 20 kwie 2007, 13:24
Lokalizacja: Jazowsko
Kontakt:

Post autor: michalstec1 » 26 lis 2010, 15:32

Czytałeś już kurs z EP?
Można kupić za smsa.

keruseykaryu

Post autor: keruseykaryu » 26 lis 2010, 18:35

Widziałem już wiele książek o FPGA i VHDL. To straszne, ale żadna nie była napisana tak by się tego łatwo nauczyć. Trzeba przekopywać się przez PDFy, strony, manuale, helpy i samemu działać, próbować, symulować. Nie ma lekko.
Możesz sobie kupić to http://komputeks.pl/product_info.php/products_id/1620 ale ta książka nieco za szybko przechodzi od opisów do oprogramowania.

Powiem tak: na początek architektura FPGA nie taka istotna jest. Bo w sumie zwykłe FPGA to jakaś tam matryca jednakowych klocków (zwykle przerzutnik, jakaś bramka i bufor) połączonych sygnałowymi autostradami. A ty piszesz kod w VHDL i to program do syntezy ma się martwić jak to połączyć by dobrze działało. Nawet jak rysujesz układ na bramkach to i tak powstaje VHDL (ale nieźle pokręcony).

Przykładem takie cóś jak na obrazku, tworzy taki kod.

Kod: Zaznacz cały

library ieee;
use ieee.std_logic_1164.all;
library proasic3;
use proasic3.all;

entity BRAMKA is

    port( ANDO : out   std_logic;
          ORO  : out   std_logic;
          XORO : out   std_logic;
          INA  : in    std_logic;
          INB  : in    std_logic
        );

end BRAMKA;

architecture DEF_ARCH of BRAMKA is 

  component AND2
    port( A : in    std_logic := 'U';
          B : in    std_logic := 'U';
          Y : out   std_logic
        );
  end component;

  component XOR2
    port( A : in    std_logic := 'U';
          B : in    std_logic := 'U';
          Y : out   std_logic
        );
  end component;

  component OR2
    port( A : in    std_logic := 'U';
          B : in    std_logic := 'U';
          Y : out   std_logic
        );
  end component;

  component INBUF
    port( PAD : in    std_logic := 'U';
          Y   : out   std_logic
        );
  end component;

  component OUTBUF
    port( D   : in    std_logic := 'U';
          PAD : out   std_logic
        );
  end component;

    signal \$1N10\, \$1N11\, \$1N12\, \$1N4\, \$1N7\
         : std_logic;

begin 


    \$1I1\ : AND2
      port map(A => \$1N4\, B => \$1N7\, Y => \$1N10\);
    
    \$1I3\ : XOR2
      port map(A => \$1N4\, B => \$1N7\, Y => \$1N12\);
    
    \$1I2\ : OR2
      port map(A => \$1N4\, B => \$1N7\, Y => \$1N11\);
    
    \$1I17\ : INBUF
      port map(PAD => INB, Y => \$1N7\);
    
    \$1I13\ : OUTBUF
      port map(D => \$1N10\, PAD => ANDO);
    
    \$1I15\ : OUTBUF
      port map(D => \$1N12\, PAD => XORO);
    
    \$1I16\ : INBUF
      port map(PAD => INA, Y => \$1N4\);
    
    \$1I14\ : OUTBUF
      port map(D => \$1N11\, PAD => ORO);
    

end DEF_ARCH; 
A szłoby to opisać w paru linijkach:

Kod: Zaznacz cały

library ieee;
use ieee.std_logic_1164.all;
library proasic3;
use proasic3.all;

entity BRAMKA is
    port( ANDO : out   std_logic;
          ORO  : out   std_logic;
          XORO : out   std_logic;
          INA  : in    std_logic;
          INB  : in    std_logic
        );
end BRAMKA;
architecture DEF_ARCH of BRAMKA is 
begin 
    ANDO <= INA and INB;
    XORO <= INA xor INB;
    ORO <= INA or INB;
end DEF_ARCH;
I jak sobie odpale pogląd po syntezie to obie struktury są takie same.
Załączniki
andorxor.png
andorxor.png (1.95 KiB) Przejrzano 10918 razy

Awatar użytkownika
tymon_x
-
Posty: 64
Rejestracja: 14 wrz 2010, 16:48
Lokalizacja: Gdańsk

Post autor: tymon_x » 27 lis 2010, 12:33

Kulpina pisze:Jaką książkę polecacie na początek z fpga? Taką, żeby poruszała zupełne podstawy, opis tych układów itd.
1. Musisz się zdecydować na jeden z języków opisu sprzętowego HDL: VHDL lub Verilog.
Ten pierwszy jest bardziej popularny w Europie (co za tym idzie więcej książek traktuje o nim), ten drugi daje dużo większe możliwości (w szczególnie w standardzie Verilog-200x).

2. Zdecydować się na jednego z trzech wielkich graczy CPLD/FPGA: Xilinx, Altera, Lattice. Kolejność nie przypadkowa! Reszta nie jest dostępna dla zwykłego śmiertelnika.

3. Poznać podstawy układów logicznych: sekwencyjny, kombinacyjny i przede wszystkim FSM, maszyna stanów.

Co za tym idzie, wybór książek, manuali i tutoriali:
-język opisu:
-VHDL - Zieliński
-Verilog
Szukać po uczelniach:
-PG - ETI
-AGH - Język opisu sprzętu

O samej strukturze FPGA tylko w książkach zagranicznych!
O ciekawych zastosowaniach jak własny mikroprocesor: NIOS-II (Altera) lektura w EP, Picoblaze (Xilinx) książka dostępna w BTC.

Dużo przykładów na stronie:
OpenCores

Praktyczne zastosowania:
Układy FPGA w przykładach

Tak naprawdę dobrej książki, która prezentuje zagadnienie od zera do bohatera w Polsce nie uświadczysz. Chociaż wymienione u góry spokojnie Ci wystarczą.

w praktyce dla laika wygląda to tak:
Ściągnąć darmowe IDE (Xilinx, Altera, Lattice), zaopatrzyć się w książkę z VHDL lub Verilog, pościągać tutoriale do obsługi IDE, potestować oraz załatwić Sobie jakiegoś CPLD/FPGA do zabawy (ważne, środowiska współpracują tylko z układami firmowymi (; ).

Osobiście polecam produkty Xilinx'a:
-łatwo i tanio dostępne w Polsce
-dystrybutor układów startowych w Europie, i zniżka dla studentów
-miażdżący support, ciekawe i przyjemne tutoriale

keruseykaryu

Post autor: keruseykaryu » 27 lis 2010, 16:28

tymon_x pisze:Reszta nie jest dostępna dla zwykłego śmiertelnika.
No nie bardzo. Na przykład kości Actel-Microsemi: ProAsic3, Igloo czy SmartFusion są dostępne, choćby w MSC. Szkoda tyko, że inne sklepy wolą ich nie sprowadzać. Taka polityka pod studentów i Xilinx-a.
Do tych FPGA nie trzeba wcale drogiego programatora Silicon Sculptor i zestawu adaptorów, zadowolą się FlashPro4 USB za... Uwaga! 49 USD!
Środowisko Libero IDE jest darmowe (licencja roczna na serial number dysku). Soft Console do oprogramowania rdzeni IP Cortex-M też (ostatnio nawet to składnik Libero). Dużo też jest samych IP Core (i2c, uart, pwm, irp.) tak, że fajny SoC można sobie skleić.

Awatar użytkownika
tymon_x
-
Posty: 64
Rejestracja: 14 wrz 2010, 16:48
Lokalizacja: Gdańsk

Post autor: tymon_x » 27 lis 2010, 17:46

Tu mnie masz, zbyt dużego skrótu myślowego użyłem (; Ale faktem jest, że rynek został podzielony między dwoma najpopularniejszymi graczami Xilinx i Alterą (jak się nie mylę 80-90% rynku). Pozostali (Actel, Lattice, QuickLogic. Cypress, Atmel) mogą konkurować ciekawymi rozwiązaniami, bo z dostępnością w Polsce po rozsądnych cenach to trudno je dostać. Wiem że rodzimi dystrybutorzy handlują też ofertami Lattice i Cypress.

ODPOWIEDZ