-
1. Data: 2010-02-08 17:59:51
Temat: uC programujący FPGA
Od: Sebastian Biały <h...@p...onet.pl>
Witam.
Zastanawiam się nad pewnym rozwiązaniem. Ogólnie mam uC który musi
obrabiać pewne sygnaly cyfrowe na granicy możliwości sprzetowych
(predkość podejmowania decyzji). Jako ze większośc z tych decyzji opiera
się o prostą logikę kombinatoryczną, sporadycznie wzbogaconą o
"przerzutnik" w algorytmie tak sobie myślę nad małym FPGA[1]
konfigurowanym/programowanym przez uC. Kluczowe tutaj jest
konfigurowanie run-time (zależy od wybranego algorytmu przez operatora).
Przełaczanie pomiedzy różnymi "programami" w FPGA może być powolne,
istota jest tutaj możliwośc reprogramowania przez sam procesor a nie
szybkiego programowania.
Niestety musze znac odpowiedzi na pare prostych pytań zanim zaczne w
ogóle nad tym mysleć.
a) czy proceosory (ogólnie) z wbudowanym FPGA pozwalają na
reprogramowanie tego FPGA z poziomu programu ? Jesli tak, to czy
reprogramowanie odbywa się we flash (martwie sie o ilość cykli).
b) czy operacja zamiany logiki na zawartośc flash/ram FPGA wymaga
stosowania skomplikowanych algorytmów czy moze istnieje sensowny sposób
przekształcenia układu kombinatorycznego zapisanego za pomoca + * / na
wsad do FPGA ?
c) gdzie moge poczytać o samym procesie syntezy ukladu opisanego
kombinatorycznie + ewentualne przerzutniki do wsadu FPGA? Wystarczy bez
szczegółów, nie na tym poziomie o tym myślę. Iteresuje mnie złożoność
tego projektu - nawet tylko dla jednego typu układu. Szczególnie czy
taka uproszczona synteza jest możliwa w małej ilości RAM cpu.
d) Czy FPGA może przeprogramowac swój fragment? Zastanawiam się nad
możlwością wsadzenia do FPGA całości (uC + kawałek logiki) i zmianą
konfiguracji w run-time - czy to możliwe?
[1] "FPGA" to słowo które opisuje dowolna technologie ukladów
programowalnych, niekoniecznie FPGA wlasnie. Sam nie wiem co to być
powinno, na razie rozglądam sie ogólnie.
-
2. Data: 2010-02-08 21:45:16
Temat: Re: uC programujący FPGA
Od: Jerry1111 <j...@w...pl.pl.wp>
On 08/02/2010 17:59, Sebastian Biały wrote:
> [1] "FPGA" to słowo które opisuje dowolna technologie ukladów
> programowalnych, niekoniecznie FPGA wlasnie. Sam nie wiem co to być
> powinno, na razie rozglądam sie ogólnie.
1. Nie da sie miec jednego wsadu i jakims CS przelaczac rodzaj
algorytmu? Jak sprytnie napiszesz, to moze zajac niewiele wiecej niz
jeden algorytm (np: uzyc enable tylko dla jakichs krokow).
2. Jesli chcesz 'tworzyc' wsady do CPLD/FPGA on-line (wg parametrow
uzytkownika) to ciezkie zadanie - chyba nikt nie udostepnia sposobu
kompilacji.
3. FPGA to sa kosci wiekszej pojemnosci, gdzie config jest ladowany z
zewnetrznej pamieci/procesora do wewnetrznego SRAM, CPLD to 'mlodszy
brat', gdzie config jest trzymany w EEPROMie w kosci (i AFAIK nie da sie
przeprogramowac bez JTAGa).
--
Jerry1111
-
3. Data: 2010-02-08 22:00:09
Temat: Re: uC programujący FPGA
Od: Sebastian Biały <h...@p...onet.pl>
Jerry1111 wrote:
> 1. Nie da sie miec jednego wsadu i jakims CS przelaczac rodzaj
> algorytmu? Jak sprytnie napiszesz, to moze zajac niewiele wiecej niz
> jeden algorytm (np: uzyc enable tylko dla jakichs krokow).
Algorytmow jest duzo, w zasadzie konfiguruje je uC na żądanie. Moge je
wszystkie zaszyć, ale może własnie prościej jest je wrzucić w formie
specjalizowanej.
> 2. Jesli chcesz 'tworzyc' wsady do CPLD/FPGA on-line (wg parametrow
> uzytkownika) to ciezkie zadanie - chyba nikt nie udostepnia sposobu
> kompilacji.
Ano wlasnie o to pytam. Jesli całośc procesu jest słabo udokumentowana i
tajemnicza - pomysl odpada.
> 3. FPGA to sa kosci wiekszej pojemnosci, gdzie config jest ladowany z
> zewnetrznej pamieci/procesora do wewnetrznego SRAM, CPLD to 'mlodszy
> brat', gdzie config jest trzymany w EEPROMie w kosci (i AFAIK nie da sie
> przeprogramowac bez JTAGa).
Wiem że są FPGA dynamicznie rekonfigurowane, ale niekoniecznie o to mi
chodzi. W zasadzie to ja potrzebuje prosty układ kombinatoryczny z fmax
~ 20MHz rekonfigurowalny w dowolny sposób z uC. Czasem z jakimiś
przerzutnikami. jesli zagadnienie jest ogólnie trudne, to sprawę
pozostaje mi odłozyc na półke na lepsze czasy.
-
4. Data: 2010-02-08 22:13:27
Temat: Re: uC programujący FPGA
Od: Jerry1111 <j...@w...pl.pl.wp>
On 08/02/2010 22:00, Sebastian Biały wrote:
> Wiem że są FPGA dynamicznie rekonfigurowane, ale niekoniecznie o to mi
> chodzi.
Sa, ale duze. A ja mam wrazenie ze Tobie na mniejszych zalezy.
> W zasadzie to ja potrzebuje prosty układ kombinatoryczny z fmax
> ~ 20MHz rekonfigurowalny w dowolny sposób z uC. Czasem z jakimiś
> przerzutnikami. jesli zagadnienie jest ogólnie trudne, to sprawę
> pozostaje mi odłozyc na półke na lepsze czasy.
Ja bym popatrzyl czy da sie jakis 'duzy' algorytm zrobic, z ktorego
potem metodami 'enable' mozna by wlaczac/wylaczac jakies bloki. Albo
miec np: dwa 8-bitowe slowa stanu dla kazdej operacji (np: jesli w
pierwszym bajcie d0=1 to pierwszy krok algorytmu to OR, jesli w drugim
bajcie d0=1 to pierwszy krok to AND) - cos takiego nie bedzie (za)
trudne. Ot, takie proste szybkie ALU.
Jak to masz, to wtedy moglbys by 3-4 rodziny algorytmow zmieniac poprzez
zmiane stanu kilku pinow. Do EPM570 (CPLD Altery) wejdzie troche kodu (a
logika na rejestrach konfiguracyjnych nie rozdmucha za bardzo wsadu).
Duzo masz operacji na tych danych?
--
Jerry1111
-
5. Data: 2010-02-08 23:03:21
Temat: Re: uC programujący FPGA
Od: Sebastian Biały <h...@p...onet.pl>
Jerry1111 wrote:
> Duzo masz operacji na tych danych?
Nie potrafie tego precyzyjnie określić. Zazwyczaj mam około 3-4 bramek *
i + z negacjami) jako jeden "algorytm" kombinatoryczny. W wersji lite. W
weesji wypas - około 10 bramek i przerzutnik. Niestety na razie nie jest
to okreslone, to luźne szacunki i nie chce wnikać w szczegóły. Jeśli
FPGA/CPLD w wersji mini nie potrafią być przeprogramowywane, to
przemyśle sprawę robiąć w środku jakies wlasnie proste sekwencyjne ALU.
-
6. Data: 2010-02-08 23:13:14
Temat: Re: uC programujący FPGA
Od: J.F. <j...@p...onet.pl>
On Tue, 09 Feb 2010 00:03:21 +0100, Sebastian Biały wrote:
>> Duzo masz operacji na tych danych?
>
>Nie potrafie tego precyzyjnie określić. Zazwyczaj mam około 3-4 bramek *
>i + z negacjami) jako jeden "algorytm" kombinatoryczny. W wersji lite.
Moze ci wystarczy wpisac tablice funkcji do pamieci ?
>W weesji wypas - około 10 bramek i przerzutnik.
Mozna i tablice przejsc automatu wpisac.
J.
-
7. Data: 2010-02-09 10:00:45
Temat: Re: uC programujący FPGA
Od: Paweł <r...@1...0.0.1>
a moze by tak od innej strony - procesor risc i fpga w jednym? :)
zobacz sobie np. na uklad xilinx virtex-4 FX12.
masz tam przyzwoity (jak na embedded) rdzen powerpc
oraz reszte dobrodziejstw klasycznych fpga.
cenowo tez jest obecnie niezle, gotowe kity uruchomieniowe
kraza w sieci po 100.200$.
-
8. Data: 2010-02-09 16:24:16
Temat: Re: uC programujący FPGA
Od: Sebastian Biały <h...@p...onet.pl>
Paweł wrote:
> a moze by tak od innej strony - procesor risc i fpga w jednym? :)
> zobacz sobie np. na uklad xilinx virtex-4 FX12.
> masz tam przyzwoity (jak na embedded) rdzen powerpc
Nie jest mi potrzebny taki wypas.
> cenowo tez jest obecnie niezle, gotowe kity uruchomieniowe
> kraza w sieci po 100.200$.
Kompletnie bez sensu, to ma byc mały element z paronastoma bramkami.
Wole zredukowac koszt choćby dlatego że potrzebuje tego raz do roku użyć
kilkadziesiąt razy.
W zasadzie moje problemy rozwiązał by jakis AVR + maluteńki FPGA/CPLD.
Jeśli nie da się tego układu programowac, to pozostaje opisać coś na
kształt ALU w HDL i sterowac po mojemu.
-
9. Data: 2010-02-09 23:06:46
Temat: Re: uC programujący FPGA
Od: Konop <k...@g...pl>
> Zastanawiam się nad pewnym rozwiązaniem. Ogólnie mam uC który musi
> obrabiać pewne sygnaly cyfrowe na granicy możliwości sprzetowych
> (predkość podejmowania decyzji). Jako ze większośc z tych decyzji opiera
Hmmm... a jaki to procesor? Nie wystarczy dać szybszą jednostkę??...
> b) czy operacja zamiany logiki na zawartośc flash/ram FPGA wymaga
> stosowania skomplikowanych algorytmów czy moze istnieje sensowny sposób
> przekształcenia układu kombinatorycznego zapisanego za pomoca + * / na
> wsad do FPGA ?
Są to dosyć skomplikowane operacje... wprawdzie na studiach
realizowaliśmy pewne przykłady "na kartce" i właściwie wszystko dało się
jakoś wyjaśnić, jednak rzuć okiem jak długo komercyjne programy "tłuką"
proste projekty do pliku wynikowego FPGA, to da Ci to pewien pogląd na
sytuację... Wszystko zależy od rodzaju funkcji... Znacznym problemem
jest tzw. dekompozycja, czyli rozłożenie jednej funkcji wielu zmiennych
na kilka funkcji mniejszej liczby zmiennych. Czasem jest to wręcz
banalne, czasem, skomplikowane... bloki w FPGA mają określoną ilość
wejść i czasem konieczne jest takie rozbijanie...
Ja proponowałbym zainteresowanie się szybszym procesorem, także
procesorami "programowanymi" do FPGA... Bierzesz gotowy rdzeń procesora,
piszesz sobie program. Procesor pracuje z programu z pamięci RAM
(wbudowanej w FPGA)... Sam pisałeś, że urządzenie wykorzystywane będzie
raz na jakiś czas... Więc gotowy klocek z FPGA plus gotowy program
"wzorcowy" na PCcie... Bierzesz ten gotowy program i wpisujesz
odpowiedni algorytm, programujesz i działasz ;)... całość programowania
odbywa się do pamięci RAM, więc nie ma problemu z ilością cykli. Co
więcej - nie przerabiasz "wsadu" do FGPA, tylko kompilujesz prosty
program dla jakiegoś proca, więc dzieje się to dosyć szybko...
Jeśli urządzenie ma być programowane nie przez PC - też nie ma
problemu... wsad dla takiego wirtualnego proca też łatwiej "zrobić na
piechotę" niż wsad dla FPGA...
Oczywiście wszystko zależy od tego jakiej rzeczywistej prędkości
potrzebujesz... Zapewne mógłbyś też olać FPGA i dać jakiś bardziej
"wypasiony" procesor...
--
Pozdrawiam
Konop
-
10. Data: 2010-02-10 17:00:22
Temat: Re: uC programujący FPGA
Od: AK <a...@g...pl>
W dniu 2010-02-09 17:24, Sebastian Biały pisze:
> Paweł wrote:
>
> W zasadzie moje problemy rozwiązał by jakis AVR + maluteńki FPGA/CPLD.
> Jeśli nie da się tego układu programowac, to pozostaje opisać coś na
> kształt ALU w HDL i sterowac po mojemu.
Jak AVR + maly FPGA by wystarczyl to moze maly Cortex-M3 to zalatwi ?
NXP ma takie dzialajace do 100 MHz, a krytyczne fragmenty kodu mozna
wykonywac z ramu.
Pozdr
AK