Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Farnell IoTFarnell IoT
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Co do dość szybkiego zbierania danych?

30 Mar 2018 01:24 1794 26
  • Electronics specialist
    Dane z 2, albo 4 12-bitowych ADC, po 65Msps; przez kilka, może kilkanaście us. Rozważam takie możliwości:
    * pamięć FIFO: 74V215 (512 słów 18-bitowych, 133MHz), albo 74V245 (4096 słów); to wystarczy na 1 ADC (albo z trudem na 2);
    * pamięć SRAM 100MHz 16 bitów, to na pewno tylko na 1 ADC;
    * FPGA - jakiej trzeba użyć, żeby zdążyła?
    * STM32 - czy da się użyć DMA tak, by nadążyć z transferem danych, i jaki musi mieć zegar?
    Podejrzewam, że najtaniej może wyjść na FPGA, chociaż jakby tak się dało zdążyć na niezbyt drogim STM32... i tak będzie użyty do obróbki danych.
    Niestety z not katalogowych trudno wyczytać, jaką szybkość daje się osiągnąć (zarówno dla FPGA, jak i dla STM32), a ja się na tym nie znam.
    Czy Twoje urządzenia IoT są bezpieczne? [Webinar 22.06.2021, g.9.00]. Zarejestruj się za darmo
  • Farnell IoTFarnell IoT
  • MCUs specialist
    _jta_ wrote:
    * FPGA - jakiej trzeba użyć, żeby zdążyła?

    Równie dobrze możesz użyć CPLD. Praktycznie każde CPLD czy FPGA się nada, 65 MHz to nie jest jakiś wyjątkowo wysoki zegar dla takich układów (zwykle producent podaje zegary rzędu kilkuset MHz).

    _jta_ wrote:
    * STM32 - czy da się użyć DMA tak, by nadążyć z transferem danych, i jaki musi mieć zegar?

    Moim zdaniem nie ma szans, no chyba że STM32H7 @ 400 MHz, albo jakby mocno się nakombinować to może i STM32F7 @ 216 MHz, ale dużo zależy od prędkości szyn na których działa DMA, porty, pamięć itd. Obstawiam że tak czy siak same porty GPIO nie wyrobią się z taką prędkością.

    _jta_ wrote:
    Dane z 2, albo 4 12-bitowych ADC, po 65Msps; przez kilka, może kilkanaście us.

    Bardziej istotną informacją byłoby to, ile dokładnie próbek chcesz zebrać.
  • Electronics specialist
    Ilość próbek jeszcze nie jest dokładnie określona, więcej oznacza większy zakres możliwości zastosowania, około 500 na ADC raczej będzie trochę za mało, około 1000 na ADC będzie zadowalające - czyli przydałoby się móc zapisać z 8kB danych (możliwość zapisania ze 2X więcej będzie użyteczna - to pozwoli zachować gotowość do dalszego zbierania danych po wystąpieniu zdarzenia, które zaklasyfikuje się do zapisania - dopiero dwa zdarzenia w małym odstępie czasu spowodują "czas martwy"). CPLD chyba nie mają takiej pamięci, a jeśli mają, to pewnie ceny są bardzo wygórowane?

    ALTERA Cyclone II EP2C5T to jedna z najtańszych FPGA, dostępnych jako development board, jakie widzę - i ma prawie 120kb (czyli 15kB, wystarczy z zapasem) do wykorzystania bez redukcji możliwości logiki, to powinno wystarczyć aż nadto; najszybsza wersja ma chodzić na 250MHz, ale pewnie tanio będzie najwolniejsza - czy zdąży z zapisywaniem danych do wewnętrznej pamięci RAM? No i muszę policzyć, czy pinów I/O wystarczy na 4 ADC (pewnie do dyspozycji będzie poniżej 80).

    Pewnie nieco większe możliwości (więcej pinów I/O, i mam wrażenie, że dużo szybszy zegar, do około 1GHz) mają Spartan 3 (XC3S50AN) i Spartan 6 (XC6SLX9, albo XC6SLX16), też są łatwo i tanio dostępne jako development board (i wszystkie 3 w podobnej cenie na AliExpress), więc jeśli możliwości tej Altery byłyby za małe (choćby ze względu na ilość dostępnych pinów I/O), to byłyby następne w kolejce.

    Czy masz jakieś konkretne informacje co do możliwości tych układów?

    Co do możliwości użytkowych, to chyba ani FIFO, ani pamięć SRAM nie da możliwości zbierania dalszych danych podczas przesyłania zebranej porcji do zapisania (FIFO, bo się zapełni, a SRAM, bo nie nadąży robić odczytów w przerwach między zapisami); układy PLD (CPLD, jakby jakiś się nadawał, albo FPGA) pewnie dadzą taką możliwość (tylko jest ograniczenie miejsca, jakkolwiek jest development board ze Spartan-em i sporą pamięcią SDRAM, w cenie niewiele wyższej od samych pamięci SRAM, a nawet od 4 FIFO).

    Dane mają przychodzić "paczkami" (jak w sygnale pojawia się impuls, to chcemy zapisywać jego kształt; czasem impulsy pojawiają się na kilku wejściach naraz), nie jest przewidywalne, kiedy się pojawią (pochodzą z rozpadów jąder atomowych, bądź promieniowania kosmicznego). Trzeba dane z ADC zapamiętywać "chwilowo" w jakimś buforze (w sposób ciągły), a po wykryciu, że był impuls, przesłać je do dalszej analizy.
  • Farnell IoTFarnell IoT
  • Level 4  
    Nasuwa mi się myśl - jeśli ważne jest, by te ADC były taktowane symultanicznie i jednocześnie zbierały dane, to
    z tego co wiem SMT32F7 ma 3 ADC które mogą pracować w trybie równoległym. W pierwszym poście pisałeś
    coś o 4 ADC. Tu już by trzeba użyć kanałów poszczególnych ADC i wówczas chyba nie da się tego zrobić symultanicznie i pojawią się przesunięcia fazy. Jak się mylę, niech mnie ktoś poprawi...
  • Level 1  
  • User removed account  
  • User removed account  
  • Electronics specialist
    A, nawet kiedyś znałem Pawła Klimczewskiego (pablo), który prowadzi taki wykład, także w tym roku. Oraz mam paru dobrych znajomych w zakładzie, który coś na FPGA projektował do eksperymentów w CERN-ie i w DESY. Wystarczyło wpisać odpowiednie zapytanie do Google - jednak świat jest mały. ;) Poza tym widzę, że były ze 3 inne projekty z FPGA osób, z którymi nie mam tak bliskiej znajomości - no cóż, u nas samych profesorów jest ze dwustu...

    Jak na razie na najbardziej sensowne wyglądają rozwiązania: kilka AD9226 + FPGA + STM32 (a może "malinka"? STM32 jest albo niewiele tańszy, ale z dużo mniejszymi możliwościami komunikacji i przetwarzania, albo droższy od najtańszej "malinki"); albo kilka LPC4370 + cokolwiek na magazyn zebranych danych (one mają nawet Ethernet).
  • User removed account  
  • User removed account  
  • Electronics specialist
    ADC 65MS/s z wyjściami szeregowymi wymagałoby taktowania 1GHz, więc pewnie co wolniejsze FPGA (np. z zegarem 250MHz) nie dałyby rady. Pytanie, czy najtańsze FPGA (CycloneII EP2C5T, link w #3) nadążą z przyjmowaniem danych np. z 4ADC, czy trzeba czegoś szybszego (i na ile)? Ale są i CycloneIV EP4CE6E niewiele droższe.

    Na pewno istotne jest to, żeby użyć gotowych płytek produkowanych masowo, i to raczej open-hardware - żeby, jak uznamy, że potrzebujemy więcej takich torów pomiarowych, nie okazało się, że już takich płytek nie ma, bo jedyny producent zmienił branżę, i trzeba przerabiać projekt na coś, co aktualnie jest dostępne.
  • User removed account  
  • Level 14  
    Hej,
    _jta_ wrote:
    ADC 65MS/s z wyjściami szeregowymi wymagałoby taktowania 1GHz, więc pewnie co wolniejsze FPGA (np. z zegarem 250MHz) nie dałyby rady.

    Trzeba pamiętać o tym, że wiele układów FPGA ma wbudowane transceivery właśnie do obsługi tego typu transmisji, które mogą dokonywać deserializacji bardzo szybkich danych szeregowych. W ogóle takie zastosowanie, które opisujesz, czyli przechwytywanie szybkich danych z ADC do bufora pamięciowego, a następnie ich "wolne" wysyłanie do PC jest jednym z bardziej typowych zastosowań FPGA, tak mi się wydaje. Większość projektów związanych z FPGA które wykonywałem, dotyczyły właśnie tego zagadnienia i prawda jest taka, że układy FPGA doskonale się do tego nadają.
    Inna sprawa jest taka, że wiązanie maksymalnej szybkości układu FPGA z zegarem go taktującym, a już tym bardziej specyfikacją producenta jest w mojej ocenie błędem. Producenci podają np. , że układ działa z częstotliwością zegara taktującego 350+ MHz, co praktyce jest prawie niemożliwe do uzyskania w przypadku bardziej złożonych projektów. Maksymalna szybkość działania układu w zdecydowanej większości przypadków zależy od projektu struktury logicznej. Aby uzyskać duże szybkości działania trzeba posiadać pewną biegłość projektowania w obrębie układów FPGA. Oczywiście w jednych rodzinach uzyskanie X MHz jest łatwiejsze a w innych trudniejsze.

    _jta_ wrote:
    Pytanie, czy najtańsze FPGA (CycloneII EP2C5T, link w #3) nadążą z przyjmowaniem danych np. z 4ADC, czy trzeba czegoś szybszego (i na ile)?

    Można to pewnie szacować na podstawie danych katalogowych i dostępnych zasobów, ale aby się upewnić, że to się wyrobi czasowo, możesz wykonać projekt FPGA i syntezer zwróci Ci informację o maksymalnych częstotliwościach. W razie potrzeby przeniesienie projektu na inny układ nie powinno być dużą pracą.
  • User removed account  
  • User removed account  
  • User removed account  
  • User removed account  
  • User removed account  
  • User removed account  
  • User removed account  
  • User removed account  
  • Electronics specialist
    Z budżetem bywa różnie, czasem są duże pieniądze (jak jakiś ważny decydent nabierze przekonania, że te badania są ważne, tak było choćby z "zimną syntezą", dziś duża część sprzętu i materiałów, jakie mamy, pochodzi z tamtego czasu; za to wyposażenie sali dydaktycznej zawdzięczamy powrotowi koncepcji budowania elektrowni atomowej i potrzebie kształcenia kadr do jej obsługi), zwykle ich nie ma. O ile mi wiadomo, te badania mają służyć leczeniu, więc pewnie finansowanie jest takie, jak służby zdrowia, czyli mierne.

    Poleciłem zamówić kartę LPC-Link2 (z LPC4370) i spróbuję coś na tym zrobić. Jest szansa, że to będzie bardziej użyteczne od Tukana, który ponoć kosztuje 12 000 zł, i trzeba go zamawiać kilka miesięcy wcześniej. Ale może też będziemy próbowali robić coś na FPGA. I tu mam pytania: do Virtex-ów jest program do projektowania z wyliczaniem opóźnień propagacji sygnału, czy do tańszych FPGA też? Jest darmowy, czy płatny? Działa tylko pod Windows, czy także pod Wine, albo i wprost pod Linux-em?
  • User removed account