Jak działa FPGA?

Gdy bramka mam 2 wejścia i jedno wyjście, potrzeba 4 bitów do zapisu typu bramki. Mamy 16 możliwości:

0000 - nudne, zawsze da zero 0001 - or 0010 - NOT implikacja 0011 - tylko drugi się liczy 0100 - NOT zamieniona implikacja 0101 - tylko pierwszy się liczy 0110 - xor 0111 - and 1000 - nand 1001 - xnor 1010 - tylko NOT pierwszego się liczy 1011 - zamieniona implikacja 1100 - tylko NOT drugiego się liczy 1101 - implikacja p,q 1110 - nor 1111 - nudne, zawsze da jeden

A jak to jest w FPGA? 1 CLB = 4 slice, które dzielą się na dwie tablice LUT, z których każda ma 4 wejścia i jedno wyjście. Programuje/konfiguruje się w ten sposób że dla LUT przekazuje się 16 bitową wartość określającą jak ma się zachowywać? Czy nie lepiej były by drobniejsze elementy, takie jednobramkowe? Choć ilość, mimo że układy FPGA są tworzone w technologii liczonej w nanometrach, nie jest imponująca. Ilość bramek i pamięci mierzy się w tysiącach, jak to się ma do 16 GB pamięci flash? Dlaczego pamięci mogą mieć znacznie więcej podstawowych elementów? Jeszcze Xilinx ma te układy bogatsze a układy innych firm mają dość mało bramek.

Reply to
Ignacy
Loading thread data ...

W dniu 02.01.2016 o 13:18, Ignacy pisze:

Nie wiem jak w innych, ale np w Xilinx-ie (Spartan 3) LUT to jest w sumie szesnastobitowa pamięć RAM w organizacji 16x1. Te cztery wejścia LUT to szyna adresowa tej pamięci. Czyli nie jest to "programowanie typu bramki" tylko wpisując wartości do tej pamięci w trakcie programowania FPGA taki LUT może realizować dowolną funkcję czterech zmiennych logicznych.

Reply to
Grzegorz Kurczyk

W dniu 02.01.2016 o 22:13, Grzegorz Kurczyk pisze:

Próbuję zrozumieć elektronikę od strony tranzystorów. Gdyby tablice LUT miały tylko dwa wejścia i były czymś w rodzaju bramek, narzut elementów obsługujących tę jedną bramkę byłby jeszcze większy. Teraz w LUT oprócz innych elementów jest 16 komórek pamięci. Są robione w technologii CMOS? Czy komórka pamięci to tranzystor, może więcej + kondensator? Organizacja pamięci to 16x1, czyli zamiast wpisać coś do pamięci od razu, wpisujemy po bicie - na czterech wejściach adres i na jeszcze dodatkowym wartość bitu? Każdy LUT musi mieć swój adres przy programowaniu całej kostki, jest jeszcze hierarchia - slice,CLB. czy te 4 wejścia działają w dwóch trybach? gdy programuje się je to jest to szyna adresowa, a gdy wykonuje operacje, to jest wykonywana na nich funkcja? teraz przyszło mi do głowy, że wykonanie funkcji to odczytanie n-tego bitu z szesnastu. Czyli w tym tkwi tajemnica. Komórka musi być połączona z 8 sąsiadami, więc też trzeba by zaprogramować z kim się łączy, bo nawet gdybyśmy mieli same branki NAND, to obwód zależałby od ich połączeń. Skoro to są tablice 16-bitowe LUT zamiast bramek, to jak przetłumaczyć sieć bramek na takie tablice? Sumator 1-bitowy połowiczny to XOR i AND, a pełny to 5 różnych bramek, nie mówiąc o bardziej skomplikowanych układach. Teraz zamiast bramek są tablice LUT.

Reply to
Ignacy

W dniu 02.01.2016 o 22:55, Ignacy pisze:

Jeśli znasz rodzinę TTL, to mogę wyjaśnić budowę takiego LUT-a rozpisując go na TTL-e :-) Da się to zrobić z dwóch 74164 i jednego 74150 ;-)

Reply to
Grzegorz Kurczyk

W dniu 02.01.2016 o 23:03, Grzegorz Kurczyk pisze:

To jeden LUT taki skomplikowany jak trzy TTL-e? Nie znam, mają chyba duży pobór mocy, czy są stosowane w układach o dużej skali integracji?

Reply to
Ignacy

W dniu 03.01.2016 o 00:04, Ignacy pisze:

Pod względem logicznym taki LUT4 to 16-bitowy rejestr przesuwny szeregowo/równoległy (2szt 74164), którego wyjścia równoległe połączone są z wejściami 16-to wejściowego multipleksera (74150). Cztery wejścia adresowe multipleksera to są wejścia LUT, a wyjście multipleksera to wyjście LUT. Rejestr przesuwny jest programowany podczas inicjalizacji układu FPGA (np. przez łańcuch JTAG). Co do poboru mocy... umówmy się, że są to 74HCT164 i 74HCT150 ;-) To nie jest dokładne odzwierciedlenie tego co jest w TTL-ach. Multiplekser 16x1 to nie musi być wiadro bramek :-)

Czy taki LUT jest skomplikowany ? Pojęcie względne. W skrajnie "złym" przypadku LUT może stać się dwuwejściową bramką AND lub nawet zwykłym inwerterem!!! Jakże paskudne marnowanie zasobów :-/ Z drugiej strony taki LUT4 może zastąpić dowolny układ kombinacyjny funkcji czterech zmiennych czyli już całkiem niezłą garstkę bramek. Również może stać się rejestrem przesuwnym "zastępując" dwa scalaki 74HCT164 ;-)

Reply to
Grzegorz Kurczyk

W dniu 03.01.2016 o 01:30, Grzegorz Kurczyk pisze:

W skrajnie złym przypadku może nic nie robić. A jak to jest gdy skonfiguruje się tylko 1% bramek a resztę nie? czy są wtedy ustawione tak, że są przezroczyste dla sygnału, czy sygnał je omija?

Rejestr przesuwny opisany jest w

formatting link
to są za prostokątne bloki na rysunku na dole oznaczające 1 bit? Mają wyjścia? D,S,Q,Q,R.

Reply to
Ignacy

W dniu 03.01.2016 o 07:33, Ignacy pisze:

W symulacji

formatting link
dobrze widać działanie inwertera. Czy zawsze bateria dodatnia? Ziemia zero, więc ruch prądu przedstawiony jest odwrotnie (zawsze?) niż ruch elektronów. U góry mamy typ PNP który przepuszcza prąd gdy na bazie nie ma napięcia, a u dołu wychodzący czyli NPN który przepuszcza prąd gdy na bazie jest napięcie.

Reply to
Ignacy

W dniu niedziela, 3 stycznia 2016 07:32:53 UTC+1 użytkownik Ignacy napisał:

Przerzutniki. Jak klikniesz gdzieś na tej stronie na 'flip flop', to dostaniesz opis. Aczkolwiek ten schemat jest w zasadzie na poziomie RTL i wcale nie musi oddawać fizycznej struktury takiego rejestru przesuwnego.

Pozdrawiam,

Reply to
kropelka

W dniu 03.01.2016 o 01:30, Grzegorz Kurczyk pisze:

A jak to wygląda, gdy mamy mały układ na kilka slicy a reszta układu jest nieużywana? Wszystkie inne LUT programowane są tak, aby były przeźroczyste? choć to i tak byłoby marnowanie czasu, gdyby sygnał przez nie przechodził.

Reply to
Ignacy

Zasadniczo to nie widzę sensu dalszego kopania w tym temacie bo nie ma to sensu bo:

  1. I tak nigdy nie dojdziesz do etapu manipulowania bitami w obrazie konfiguracyjnym fpga
  2. Skompilowany obraz jest już dostatecznie dobrze zoptymalizowany
  3. Jeżeli już naprawdę chcesz naprawdę tym się bawić to są od producenta narzędzia do ręcznego układania projektu wew fpga
  4. Bez problemu można też zobaczyć "schemat" do jakiego został skompilowany projekt.

Nieużywane zasoby są wyłączone i pociągają jedynie prąd zdefiniowany w dokumentacji. Ważniejsze są natomiast zrozumienie sposobu tworzenia reguł dla projektu określające czasy we/wy , clk itd.

Jeżeli te są poprawnie określone, narzędzia poprawnie podadzą ilość pobieranej mocy przez układ.

Adam

Reply to
Adam Górski

Czemu - sluszne spostrzezenie, to i opatentowac mozna, i kasiore trzepac, jak sie uda sprzedac :-)

Pytanie tylko czy:

-proponowane rozwiazanie bedzie prostsze niz LUT ?

-proponowane rozwiazanie bedzie rownie szybkie co LUT ... i stabilne jesli chodzi o predkosc, bo i to by sie przydalo.

J.

Reply to
J.F.

Użytkownik "Ignacy" napisał w wiadomości grup dyskusyjnych:n68f5k$qp2$ snipped-for-privacy@node2.news.atman.pl...

[...] Czekaj czekaj - to jest uklad 2-wejsciowy. W Xilinx jest 4 wejsciowy, to kombinacji wejsc jest 16, a mozliwych ukladow ... 64k, czyli potrzebujesz 16 bit do okreslenia jaki. LUT tez potrzebuje 16 bit do zapamietania, wiec na jedno wychodzi - a koncepcyjnie i realizacyjnie prosciej.

W praktyce czesto jednak 2 wejscia to za malo, ba 4 tez za malo. A jak wieksza ilosc polaczysz, to sie propagacje robia duze.

Byla taka firma Actel, robila programowalne uklady logiczne (w zasadzie FPGA, ale ten skrot bywa utozsamiana z architektura Xilinx), gdzie podstawe komorki byly bardzo proste i laczylo sie ich wieksza ilosc. Jakos popularnosc ma mierna, ale byc moze dlatego, ze ich uklady byly programowalne jeden raz (technologia antifuse). Co prawda na pewnej uczelni bylo to traktowane jako zaleta - oni kladli nacisk na testowanie projektu, kto zle przetestowal, ten mial problem, kto dobrze - nadawal sie na projektanta ASIC :-)

robia nadal

formatting link
robia tez inne, ale nie chce mi sie doczytywac czy to ma koncepcje malych bramek czy bardziej Xilinx.

Bo te elementy sa proste, wrecz prostackie. Taki xilinxowy CLB jest bardziej skomplikowany, a przeciez musi byc nadbudowa programujaca i laczaca ...

J.

Reply to
J.F.

W dniu 04.01.2016 o 15:51, J.F. pisze:

W Google Scholar znalazłem jeden artykuł z marca 2012 ale dostępny tylko za indyjskie rupie, nie widziałem podobnych i cytowań:

formatting link
ł : "An effective alternative for LUT’s in FPGA verified for comparator circuit" sugeruje że jest to jakaś alternatywa dla LUT.

Reply to
Ignacy

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.