RTV forum PL | NewsGroups PL

Jak działa FPGA? Zrozumienie konfiguracji CLB, LUT i wydajności bramek dla Xilinx

Jak działa FPGA?

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak działa FPGA? Zrozumienie konfiguracji CLB, LUT i wydajności bramek dla Xilinx

Ignacy
Guest

Sat Jan 02, 2016 1:18 pm   



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.

Grzegorz Kurczyk
Guest

Sat Jan 02, 2016 10:13 pm   



W dniu 02.01.2016 o 13:18, Ignacy pisze:
Quote:
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.


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.

--
Pozdrawiam
Grzegorz

Ignacy
Guest

Sat Jan 02, 2016 10:55 pm   



W dniu 02.01.2016 o 22:13, Grzegorz Kurczyk pisze:
Quote:
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.

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.

Grzegorz Kurczyk
Guest

Sat Jan 02, 2016 11:03 pm   



W dniu 02.01.2016 o 22:55, Ignacy pisze:
Quote:
W dniu 02.01.2016 o 22:13, Grzegorz Kurczyk 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.

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.



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


--
Pozdrawiam
Grzegorz

Ignacy
Guest

Sun Jan 03, 2016 12:04 am   



W dniu 02.01.2016 o 23:03, Grzegorz Kurczyk pisze:
Quote:
Jeśli znasz rodzinę TTL, to mogę wyjaśnić budowę takiego LUT-a
rozpisując go na TTL-e Smile
Da się to zrobić z dwóch 74164 i jednego 74150 Wink

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?

Grzegorz Kurczyk
Guest

Sun Jan 03, 2016 1:30 am   



W dniu 03.01.2016 o 00:04, Ignacy pisze:
Quote:
W dniu 02.01.2016 o 23:03, Grzegorz Kurczyk pisze:
Jeśli znasz rodzinę TTL, to mogę wyjaśnić budowę takiego LUT-a
rozpisując go na TTL-e Smile
Da się to zrobić z dwóch 74164 i jednego 74150 ;-)

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?



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 Wink
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 ;-)

--
Pozdrawiam
Grzegorz

Ignacy
Guest

Sun Jan 03, 2016 7:33 am   



W dniu 03.01.2016 o 01:30, Grzegorz Kurczyk pisze:
Quote:
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

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?

Quote:
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 Wink

Rejestr przesuwny opisany jest w
https://en.wikipedia.org/wiki/Shift_register.
Co to są za prostokątne bloki na rysunku na dole oznaczające 1 bit? Mają
wyjścia? D,S,Q,Q,R.

Ignacy
Guest

Sun Jan 03, 2016 7:51 am   



W dniu 03.01.2016 o 07:33, Ignacy pisze:
Quote:
Rejestr przesuwny opisany jest w
https://en.wikipedia.org/wiki/Shift_register.
Co to są za prostokątne bloki na rysunku na dole oznaczające 1 bit? Mają
wyjścia? D,S,Q,Q,R.

W symulacji http://www.falstad.com/circuit/ 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.

Guest

Mon Jan 04, 2016 1:24 am   



W dniu niedziela, 3 stycznia 2016 07:32:53 UTC+1 użytkownik Ignacy napisał:
Quote:
Rejestr przesuwny opisany jest w
https://en.wikipedia.org/wiki/Shift_register.
Co to są za prostokątne bloki na rysunku na dole oznaczające 1 bit? Mają
wyjścia? D,S,Q,Q,R.
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,
--
Karol Piotrowski

Ignacy
Guest

Mon Jan 04, 2016 2:54 pm   



W dniu 03.01.2016 o 01:30, Grzegorz Kurczyk pisze:
Quote:
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 Wink

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ł.

Adam GĂłrski
Guest

Mon Jan 04, 2016 3:22 pm   



On 2016-01-04 14:54, Ignacy wrote:
Quote:
W dniu 03.01.2016 o 01:30, Grzegorz Kurczyk pisze:
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 ;-)

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ł.



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

J.F.
Guest

Mon Jan 04, 2016 3:51 pm   



Użytkownik "Adam Górski" napisał w wiadomości grup
dyskusyjnych:568a8038$0$689$65785112@news.neostrada.pl...
On 2016-01-04 14:54, Ignacy wrote:
Quote:
[...]
Zasadniczo to nie widzę sensu dalszego kopania w tym temacie bo nie
ma to sensu bo: [...]

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.

J.F.
Guest

Mon Jan 04, 2016 5:03 pm   



Użytkownik "Ignacy" napisał w wiadomości grup
dyskusyjnych:n68f5k$qp2$1@node2.news.atman.pl...
Quote:
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
[...]

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.

Quote:
Czy nie lepiej były by drobniejsze elementy, takie jednobramkowe?

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
http://www.microsemi.com/products/fpga-soc/antifuse-fpgas

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

Quote:
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?

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

J.

Ignacy
Guest

Mon Jan 04, 2016 9:21 pm   



W dniu 04.01.2016 o 15:51, J.F. pisze:
Quote:
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.

W Google Scholar znalazłem jeden artykuł z marca 2012 ale dostępny tylko
za indyjskie rupie, nie widziałem podobnych i cytowań:
http://ijgti.org.in/index.php/ijgti/article/view/116
tytuł : "An effective alternative for LUT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak działa FPGA? Zrozumienie konfiguracji CLB, LUT i wydajności bramek dla Xilinx

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map