Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Jaka jest zasada działania FPGA?

02 Jan 2016 17:46 2856 3
  • Level 9  
    Z tego co widziałem, to układ składa się z CLB, 1 CLB = 4 slice, 1 slice= 2 tablice LUT (przynajmniej Xilinx). Taka tablica ma 4 wejścia i jedno wyjście, co daje 2^16 możliwości. Czy konfigurowanie polega na wysłaniu 16 bitów do takiej tablicy? Czy nie lepiej aby programowało się mniejsze układy, odpowiadające jednej bramce, 2 wejścia, 1 wyjście?
    FPGA tworzone są w technologii liczone w nanometrach, a jednak ilość bramek nie powala, są to zwykle tysiące, a porównajmy to z 16 GB pamięcią flash. Skąd takie różnice?
  • Helpful post
    Level 43  
    Każda dajmy na to 2-wejściowa bramka żeby była przełączana potrzebuje co najmniej 3 przełączników. Dwa na wejście i jeden na wyjście. Żeby taką bramkę można było gdzieś podłączyć albo i nie. A w zasadzie to więcej bo "podłączenie albo i nie" to raczej mały wybór.
    Potrzeba więc czegoś więcej. No to niech będzie de/multiplexer 8:1/1:8.
    Żeby można było wybrać 8 źródeł sygnału dla każdego wejścia (albo 7 + "albo i nie") i tak samo z wyjściem.
    No i do tego trzeba jeszcze dużo przerzutników żeby pamiętały ustawiony stan podłączenia wejść/wyjść.
    Wychodzi 3 de/multiplexery po 8 wejść, czyli na pewno więcej jak 24 bramki, i z 9 przerzutników, czyli z 18 bramek minimum.
    Jak więc widać obsługa jednej bramki wymaga już ponad 40 innych bramek sterujących.
    Dodatkowo to tylko przykład. Te 8 wejść wyjść do wyboru.
    Mając do konfigurowania tylko pojedyncze bramki powinno ich być dużo żeby się z tego dało coś zbudować.
    Czyli bramek powinno być znacznie więcej, a więc i możliwości wyboru wejść też.
    Pewnie 256 możliwości podłączenia wejść/wyjść to było by mało, nawet gdyby utworzyć jakąś hierarchię podłączania (nie każda bramka z każdą, tylko każda jedynie ograniczona do podłączania do innych ze swojego bloku).
    A nawet dla 256 znacznie wzrasta ilość bramek sterujących taką jedną docelową bramką (wychodzi mi ponad 1500 bramek).
    Dodatkowo przejście sygnału przez taki system z samą bramką to duża strata czasu. Bo bramka to jedno, a jeszcze po drodze są 2 multiplexery. Czyli całe sterowanie opóźnia sygnał znacznie bardziej niż sama bramka docelowa.
    Dlatego takie coś nie ma sensu.
    Lepiej zrobić trochę sprytniejsze bloki i dopiero je jako całość do czegoś podłączać. Ograniczyć też przy okazji ilość wejść i wyjść.
    No to tak zrobili.
  • Level 9  
    Tego kawałka z multiplexerem nie za bardzo zrozumiałem, chodzi o wybór podłączony/nie podłączony dla ośmiu bramek które byłyby wokoło?
    Czyli mamy bloki z czterema wejściami i jednym wyjściem. Choć wyjście jedno a z bramek dało by się utworzyć dwu(kilku)wyjściowe to i tak możliwości zamiast 16 jest już 2^16. Czy każdą możliwość da się zaprogramować, czy tylko mały ich wybór?
    Mamy mały układ złożony z bramek - jednobitowy półsumator lub sumator pełny. Jak to teraz zapisać w LUT? Poza tym LUT tworzą Slice a te CLB, jak ta hierarchia działa?
    Elementy nie mają takiego upakowania jak ma pamięć DDR a zwłaszcza Flash, która chyba musi mieć więcej niż jedną warstwę by wszystko się zmieściło.
    To może dlatego że tablica LUT zastępująca z dwie bramki musi mieć między innymi 16 komórek pamięci, a podstawowe elementy nie są równo rozmieszczone, są miejsca gdzie są gęściej, najgęściej jest plątanina ścieżek, a są miejsca gdzie elementy są rzadko.
  • Level 1  
    Borneq wrote:
    Taka tablica ma 4 wejścia i jedno wyjście, co daje 2^16 możliwości. Czy konfigurowanie polega na wysłaniu 16 bitów do takiej tablicy? Czy nie lepiej aby programowało się mniejsze układy, odpowiadające jednej bramce, 2 wejścia, 1 wyjście?


    To o czym mówisz to układy SPLD oraz CPLD. Są starsze od FPGA i mają mniejszą skalę integracji. FPGA wyparło te układy dzięki moim zdaniem swojemu "upakowaniu" co się przełożyło na większe możliwości. :)