Mam do wykonania projekt- analizator stanów logicznych z wizualizacją na PC. Myślałem o wykorzystaniu właśnie układu FPGA. Zrobić generator adresów, i dzięki niemu ładować próbki do pamięci (16-32 kanały i częstotliwość ok 100MHz). Całość spiąć z kompem przez USB i pobierać próbki z pamięci do pliku a później go odczytywać za pomocą softu na PC. Do dyspozycji mam: Xilinx Spartan-3E 500 Starter Kit. Czy to dobry pomysł ewentualnie jakieś rady?
Komunikacje z PC proponowałbym przez mikrokontroler z wbudowanym USB i dostepnymi funkcjami API, zreszta na tej płytce masz chyba jakiegos Cypress-a. Jest kwestia standardów napięć na wejściach i zabezpieczenia wejść która mnoży sie przez ilość kanałów. Kwestia sygnału taktującego próbkowanie, sygnał z generatora sygnału zegarowego(plus mnożenie/dzielenie czestotliwosci) oraz jeden z kanałów jako wejscie sygnału zegarowego. Jako opcję można zrobić wewnętrzny analiztor stanów logicznych w stylu ChipScope Pro czy SignalTap, czyli bez babrania się w wychodzenie na "poziom miedzi". Zależnie od długości "sond" znaczenia nabierają przesłuchy i odbicia. Coś takiego robiłem na Spartan-II, ale nie wiem na ile moje przemyślenia są wciąż aktualne.
Tak naprawdę to projekt ten będzie moim pierwszym z FPGA - może na wyrost ale zawsze jakiś cel, i ewentualnie mam w nim udowodnić jakie problemy można napotkać w przypadku stosowania tego rzędu częstotliwości.
Dobrze by było gdybym otrzymał jak najdłuższy rekord zapisu próbek - ograniczenia pamięci. Kwestia czy dobrze myślę - ewentualnie może jakieś sprawdzone propozycje?
Generalnie jakchiś wielkich cudów to nie ma, ot wielki komparator chodzący na szybkim zegarze. Dysponując taką płytka możesz pokusić sie o przechowywanie pobranych próbek w pamięci SDRAM, ale wtedy najbardziej będzie Cie trzymać szybkość zapisu do pamięci. Pamięć wewnątrz ukłądu napewno będzie szybsza. Siła analizatora stanów logicznych nie tkwi w ilości próbek lecz w łapaniu dokładnie tych przedziałów czasowych o które chodzi.
Troche na wyrost nadmienie że próbki oczywiście zbiera sie do "bufora kołowego" i nadpisuje najstarsze próbki, dzięki czemu masz w każdej chwili zapas starych próbek.
Pamietam że nastawę do wyzwalania analizatora wpisywałem szeregowo z mikrokontrolera już po zaprogramowaniu układu FPGA. Nie pamiętam czy był to już inny endpoint na USB, ale mikrokontroler był w stanie to rozróżnić. Sama zaś sygnalizacja z analizatora do komputera nie doczekałą sie swojego przerwania tylko musiała być co jakiś czas odpytywana.
Jeśli to twój pierwszy projekt FPGA to sugeruje rozwijanie wręcz nadmiarowych modułów do debugowania projektu w sprzęcie, bo to kosztuje tylko zasoby sprzętowe, a zawsze coś nie działa.
Co do szybkości to nie przeskoczysz szybkości komórek IO oraz zapisu do pamięci. Pozostałe czynności można robić równolegle lub wręcz w tak zwanym międzyczasie.
Poza tym problem sformułowany jest dość ogólnie i cieżko coś konkretniejszego napisać. Jakbyś napotkał jakies realne problemy to daj znać.
Generalnie jakichś wielkich cudów to nie ma, ot wielki komparator chodzący
na szybkim zegarze. /.../
az tak proste to nie jest, jesli ma byc z tego jakas korzysc;
zwykle uzytkownik takiego logic analizer chcialby moc zdefiniowac trigger
jako okreslony poziom na 1-3 liniach a reszta "don't care";
i zeby sie dalo zrobic OR lub AND na sygnalach uzytych jako tryger;
do tego jeszcze wykryc zmiane z L na H i odwrotnie;
calkiem sporo fajnej zabawy z samym zaprogramowaniem ukladu wyzwalania
analizatora;
po uwzglednieniu obslugi pamieci i komunikacji ze swiatem zewnetrznym
wychodzi calkiem niebanalny projekt;
[smutne jest to, ze i w quartusie i w ise, o czym juz wspominal g.d, taki analizator
jest wbudowany - wiec pisanie wlasnego analizatora wlasciwie nie ma
zadnego, procz edukacyjnego, sensu]
osobna sprawa to sondy do probkowania - bez specjalnej elektroniki wejsciowej,
przewodow o okreslonej rezystancji, watpie by udalo sie osiagnac czestotliwosc
pracy powyzej 40Mhz;
to jest calkiem osobne i nielatwe zadanie, dla mnie trudniejsze
niz sam analizator ;
do tego jeszcze wykryc zmiane z L na H i odwrotnie;
Mam pytanie, bo nie jestem pewien czy dobrze zrozumialem. Czy chodzi o zmiane ze stanu wysokiego na niski, popularnie zwanych 1 i 0, czy współczesne analizatory pozwalaja wykrywać jakies "słabe" sygnały jak 'L' i 'H' w VHDL-u ? Dziwne pytanie ale jestem tu nowy więc mam prawo.
Czy chodzi o zmiane ze stanu wysokiego na niski, popularnie zwanych
1 i 0, czy współczesne analizatory pozwalaja wykrywać jakies "słabe" sygnały jak 'L' i 'H' w VHDL-u ?
po prostu zmianw wartosci logicznej, z '1' na '0' i odwrotnie;
a przy okazji - mam /w pracy/ taki analizator, co by potrafil wykryc
slabe 'H' czy 'L', ale troche to kosztuje;