RoBert
Guest
Mon Apr 28, 2008 1:39 pm
Witam
Mam pyatnie odnośnie implementacji różnego rodzaju algorytmów w
układach FPGA. Chciałbym zbudować robota w oparciu o układ Spartan3. W
jaki sposób zaimplementować tam układ generujący różne rodzaje chodu?
W C opisuje się zadanie odwrotne konematyki (czy jakoś tak) a w FPGA?
Czy to trzeba wykonać w oparciu o przerzuyniki, liczniki itp? W
literaturze opisywane są poszczególne bloki funkcjonalen jak właśnie
róznego rodzaju liczniki, przerzutniki, dekodery ale brak jest jakiś
przykładów pokazujących jak połaczyć wszytsko w całość.
Jak w układzie zaimplementować RS, USB, magistralę I2C. Jak
poszczególne bloki ze soba połaczyć sygnałami sterującymi.
Szukałaem trochę na gogle ale na razie nić nie znalazłem. Niektórzy
projektanci robotów (tzn na uniwersytetach) budujący różnego rodzaju
roboty pełzające, kroczęce itd wykorzystują możliowść rekonfiguracji
układu w trakcie działania (np. dostosowywanie do aktualnie
istniejącej liczby segmentów w robotach pełzających lub określonej ich
kolejnośc). jak coś takiego zrobić?
czy programowanie FPGA opiera sięprzedewszystkim na cyfrówce? czy żeby
zaimplementować jakiś algorytm trzeba go najpierw "opisać" w postaci
bloków logicznych.
moze ktoś mi coś więcej na ten temap napisać, lub podać jakieś linki.
czy są jakieś ksiązki gdzie poza opisem w VHDLu samych bloków są
pokazane sposoby łaczenia ich w bardziej zaawansowane układy (mam
książkę FPGA w przykładach z BTC i układy programowalne też z BTC)
pozdrawiam
RoBert
Andrzej Kamieniecki
Guest
Mon Apr 28, 2008 1:39 pm
J.F. napisał(a):
[ciap]
Quote:
Niby mozna jeszcze FPGA skonfigurowac jako procesor
[NIOS], ale na moj gust to bardziej sztuka dla sztuki.
ale zdaje się mowa o Spartanie.
za free jest picoBlaze i do RS/I2C wystarczy a i zajmuje niewiele.
Andrzej kamieniecki
J.F.
Guest
Mon Apr 28, 2008 1:39 pm
On Mon, 28 Apr 2008 03:39:54 -0700 (PDT), RoBert wrote:
Quote:
Mam pyatnie odnośnie implementacji różnego rodzaju algorytmów w
układach FPGA. Chciałbym zbudować robota w oparciu o układ Spartan3. W
jaki sposób zaimplementować tam układ generujący różne rodzaje chodu?
Zadanie jest raczej z gatunku programowych - tzn trzeba duza
funkcjonalnosc, wiele linii programu .. i to sie przeklada na
skomplikowany uklad elektroniczny.
Sugeruje jednak dolozyc do ukladu mikroprocesor, pamiec, a w FPGA
wpakowac prostsze funkcje wymagajace wiekszej predkosci dzialania.
Niby mozna jeszcze FPGA skonfigurowac jako procesor
[NIOS], ale na moj gust to bardziej sztuka dla sztuki.
Quote:
W C opisuje się zadanie odwrotne konematyki (czy jakoś tak) a w FPGA?
Czy to trzeba wykonać w oparciu o przerzuyniki, liczniki itp?
Obliczenia kinematyki to raczej sumatory, uklady mnozace,
rejestry na wszystkie zmienne - i ewentualnie do tego
liczniki sterujace.
Quote:
W literaturze opisywane są poszczególne bloki funkcjonalen jak właśnie
róznego rodzaju liczniki, przerzutniki, dekodery ale brak jest jakiś
przykładów pokazujących jak połaczyć wszytsko w całość.
Jak w układzie zaimplementować RS, magistralę I2C.
A to akurat w sumie proste przerzutniki i liczniki :-)
Quote:
USB,
Z tym troche gorzej - choc w sumie tez przerzutniki i liczniki.
Na poczatek
http://www.cesko.host.sk/IgorPlugUSB/IgorPlug-USB%20(AVR)_eng.htm
Niby mikroprocesor, ale mozna przeczytac o co chodzi.
Quote:
Szukałaem trochę na gogle ale na razie nić nie znalazłem. Niektórzy
projektanci robotów (tzn na uniwersytetach) budujący różnego rodzaju
roboty pełzające, kroczęce itd wykorzystują możliowść rekonfiguracji
układu w trakcie działania (np. dostosowywanie do aktualnie
istniejącej liczby segmentów w robotach pełzających lub określonej ich
kolejnośc). jak coś takiego zrobić?
Najpierw zacznij od podstaw.
Quote:
czy programowanie FPGA opiera sięprzedewszystkim na cyfrówce? czy żeby
zaimplementować jakiś algorytm trzeba go najpierw "opisać" w postaci
bloków logicznych.
Pomijajac specyficzny przypadek zamiany FPGA w procesor, to jak
najbardziej tak. FPGA to taki zestaw bramek i przerzutnikow,
ktore mozna dosc dowolnie laczyc.
Quote:
moze ktoś mi coś więcej na ten temap napisać, lub podać jakieś linki.
czy są jakieś ksiązki gdzie poza opisem w VHDLu samych bloków są
pokazane sposoby łaczenia ich w bardziej zaawansowane układy (mam
książkę FPGA w przykładach z BTC i układy programowalne też z BTC)
A nie ma tam pod koniec bardziej skomplikowanych przykladow ?
J.
Guest
Tue Apr 29, 2008 12:42 am
On 28 Kwi, 15:28, "Greg\(G.Kasprowicz\)"
<Grzegorz.Kasprowicz_usun...@CERN.CH> wrote:
Quote:
IMHO troche bez sensu
w przypadku robotow nie potrzebujesz rownoleglego przetwarzania sygnalow z
olbrzymimi szybkosciami, on-line
A co powiesz na pająka w galopie? W danym czasie tylko jedna noga
dotyka ziemi ;-)
Quote:
duzo lepiej do tego bedzie nadawal sie DSP czy inny szybki procesor, np ARM.
Tylko, że Autor nie określił dokładnie rodzaju napędu. Może to też być
pojazd trójnożny,
gdzie podstawa jest jedną "nogą". Szybkości też nie określił.
IMHO to wszystko nie zmieści się do Spartan'a (włączając USB do
komunikacji ze światem
i I2C do komunikacji z peryferiami.
Quote:
Mozna wesprzec sei FPGA do realizacji pewnych czesci sprzetowych, np obslugi
enkoderowm ale rzezbienie na tym pelnego algorytmu nie ma szczegolnego
uzasadnienia, poza sztuka dla sztuki lub przyczynami edukacyjnymi.
Pozostaje jeszcze jedno : Polak potrafi.

pzdr
Artur
RoBert
Guest
Tue Apr 29, 2008 8:00 am
Quote:
Tylko, że Autor nie określił dokładnie rodzaju napędu. Może to też być
pojazd trójnożny,
gdzie podstawa jest jedną "nogą". Szybkości też nie określił.
chodzi mi o robota sześcionoznego. co do napędu to na razie serwa
modelarskie (6nóg po 3 serwa = 18serw) więc prędkośc ruchu nie będzie
za duża. chodzi mi raczej o implementację algorytmów umozliwiających
ruch po nierównych podłożach (wykrywanie kolizji nogi z przeszkodą).
na razie planuję to zrobić przez pomiar prądu pobieranego przez serwo
(zablokowana noga = wiekszy prąd). prąd będzie mierzony przez układ A/
C sterowany przez I2C (np PCF...). chyba że da się coś takiego
zaimplementować w FPGA. potem może serwa da się zastapić jakimiś w
miare małymi, lekkimi i zasilanymi małym napięciem silniczkami. ale to
w przyszłości.
co do ARMow to myslalem trochę nad AT91 lub LPC2000. ale na razie
jakoś nie wiem na który sie zdecydować. czytałem o róznych kłopotach z
programowaniem i wogóle. na szczęście są dostepne tak jak Spartan w
postaci modułów z wyprowadzeniami 2,54mm.
a co ze mozliwością sterowania FPGA przez program napiany w C++
Builderze przez RSa lub USB (suwaki pozwalające na ruch każdego serwa
niezależnie, mozliowść zapisu do plik sekwencji ruchu i pożniejszego
ich odtwarzania).
RoBert
J.F.
Guest
Tue Apr 29, 2008 12:00 pm
On Mon, 28 Apr 2008 22:00:45 -0700 (PDT), RoBert wrote:
Quote:
chodzi mi o robota sześcionoznego.
6 nog to przezytek
http://www.youtube.com/watch?v=W1czBcnX1Ww
Quote:
co do napędu to na razie serwa
modelarskie (6nóg po 3 serwa = 18serw) więc prędkośc ruchu nie będzie
No i tu ci sie moze FPGA przydac - kanalow PWM na procerzo na pewno
zabraknie, bedzie trzeba dodatkowe. Mozna sie zastanowic czy nie
umiescic tam prostego sterownika w sensie ze zadajesz pozycje koncowa
i predkosc dochodzenia ..
Quote:
za duża. chodzi mi raczej o implementację algorytmów umozliwiających
ruch po nierównych podłożach (wykrywanie kolizji nogi z przeszkodą).
na razie planuję to zrobić przez pomiar prądu pobieranego przez serwo
(zablokowana noga = wiekszy prąd).
Nie jest to najlepsza metoda, ale moze starczy.
Quote:
prąd będzie mierzony przez układ A/C sterowany przez I2C (np PCF...).
chyba że da się coś takiego zaimplementować w FPGA.
Analogowki nie. No chyba ze gotowe ADC za drogie, a zrobisz jakies
proste przy pomocy opampa i FPGA.
Ale nawet do gotowych ADC moze sie FPGA przydac - chocby zeby szybko
I2C obsluzyc, czy zwielokrotnic ilosc magistral - bo z 18 kanalami to
mozesz miec problem :-)
Quote:
a co ze mozliwością sterowania FPGA przez program napiany w C++
Builderze przez RSa lub USB (suwaki pozwalające na ruch każdego serwa
niezależnie, mozliowść zapisu do plik sekwencji ruchu i pożniejszego
ich odtwarzania).
Odbiornik prostego komunikatu z RS to w miare prosta sprawa w
FPGA.
J.
RobertP.
Guest
Tue Apr 29, 2008 3:35 pm
On Tue, 29 Apr 2008 09:53:46 +0200, Greg(G.Kasprowicz)
<Grzegorz.Kasprowicz_usunto_@cern.ch> wrote:
Quote:
a tak to za 15$ kupuje PPC ktory ma to wszystko w sobie i dolaczam
taniego
FPGA za 20$ obok.
i wraz ma wiecej zasobow
wychodzi to mniejsze, szybsze, tansze i wygodniejsze, bo nie musisz
czekac
godziny az sie przekompiluje.
wlasciwie nie wiem juz jakie REALNE zalety ma softcore, oprocz tego ze
jest
"trendy"
Generalnie się zgadzam ale są przypadki szczególne (głównie
Dla mnie taki PicoBlaze (wiem, maleńswtwo, ale jednak softcore) w jednym
przypadku okazał się bardzo sensownym zamiennikiem maszyny sekwencyjnej
inicjalizującej system. Było to zadanie nie wymagające wielkiej szybkości,
wymagające natomiast dość rozbudowanych algorytmów, trudnych do
zrealizowania na automacie. A to że można mu podmienić program bez
implementacji całości FPGA zaoszczędziło mi sporo czasu. Zupełnie bez
sensu było natomiast dawanie zewnętrznego mikrokontrolera, który byłby
dodatkowym elementem na płytce używanym tylko podczas startu systemu, tym
bardziej że wyniki inicjalizacji i tak miały być możliwe do odczytu z
rejestrów zaimplementowanych w FPGA.
--
Pozdrawiam
RobertP.
J.F.
Guest
Wed Apr 30, 2008 1:31 pm
On Wed, 30 Apr 2008 04:54:21 -0700 (PDT), RoBert wrote:
Quote:
czyli wynika z tego że ogólnie do tego typu zastosowań nie warto brać
FPGA. na razie próbuje dopiero wdrozyc się w ten temat więc skoro się
za bardzo do tego nie nadają to lepiej od razu zając się ARMami
Jakies PLD to ci prawdopodobnie bedzie niezbedne - ale cos prostego,
towarzyszacego mikroprocesorowi.
Quote:
nie miałem z nimi jeszcze doczynienia więc czy zacznę
się uczyć FPGA czy ARM to praktycznie bez róznicy.
Ciagle nie czujesz roznicy :-)
Logika programowalna co cos calkiem innego niz procesory/komputery.
J.
RoBert
Guest
Wed Apr 30, 2008 2:54 pm
czyli wynika z tego że ogólnie do tego typu zastosowań nie warto brać
FPGA. na razie próbuje dopiero wdrozyc się w ten temat więc skoro się
za bardzo do tego nie nadają to lepiej od razu zając się ARMami (tylko
teraz pytanie które lepsze LPC2000 czy AT91 - do tych widziałem
zestawy uruchomieniowe i na początek nie ma kłopotów z lutowaniem -
www.kamami.pl). nie miałem z nimi jeszcze doczynienia więc czy zacznę
się uczyć FPGA czy ARM to praktycznie bez róznicy. ważne byle sie
później dało na nich coś zrobić.
w każdym razie dzieki za informację.