Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Mobilny dwukanałowy oscyloskop z wykorzystaniem układu FPGA

mongoł2000 11 Apr 2013 10:52 22440 12
Optex
  • Mobilny dwukanałowy oscyloskop z wykorzystaniem układu FPGA
    Witam!
    Opisany tutaj projekt jest moją pracą inżynierską na Politechnice Wrocławskiej dlatego nie będzie to opis bogaty w schematy i pliki źródłowe :)

    Schemat blokowy:

    Mobilny dwukanałowy oscyloskop z wykorzystaniem układu FPGA

    ZASILANIE
    Całe urządzenie zasilane jest z akumulatora Li-ion, który to jest doładowywany przez układ MCP73837, po podłączeniu pod gniazdo USB lub zewnętrzny zasilacz. Proces ładowania jest prezentowany za pośrednictwem dwóch diod (ładuje/naładowany). Stan baterii sprawdzany jest przez ADC w mikrokontrolerze i wyświetlany na ekranie.
    Ważnym wyzwaniem przy tego typu urządzeniach jest wybór odpowiednich przetwornic. Zastosowałem układy z firmy Linear Technology o wysokiej sprawności, niskim poziomie zakłóceń oraz niskiej pulsacji. Wszystkie 5 przetwornic (w tym dwie podwójne) zapewniają odpowiednio napięcia:-5.0V(Analog part), 3.3V(Analog part), 5.0V(Analog part), 1.2V, 2.5V, 3.3V, 5.0V.

    Pracujący oscyloskop pobiera średnio 698mA, więc całkiem sporo, dlatego akumulator nie wystarczał na zbyt długa pracę :)

    TOR ANALOGOWY
    Tor rozpoczyna się serią micro-przekaźników bistabilnych, które regulują tłumienie oraz ustawiają sprzężenie. Następnie sygnał trafia na wzmacniacz ADA4817 z wejściem o dużej wartości rezystancji wejściowej (50GOhm). Wzmacniacz ten pełni rolę bufora, toteż już za nim, tor jest już niskoimpedancyjny i różnicowy. Po drodze zastosowano filtr antyaliasingowy, regulację offsetu na podwójnych potencjometrach cyfrowych (sterowane po I2C). Następnym układem jest wzmacniacz ADA4927, który połączony jest z przetwornikiem A/C.

    Dużo zachodu potrzeba na kompensacje układu dzielnika, zważając na to aby przy każdej zmianie czułości wejściowej mieć te samą rezystancję wejściową (1MOhm) oraz pojemność (13pF).

    Czułość wejściowa może być wybierana od 10mV/div do 5V/div w systemie 1-2-5.

    A oto charakterystyka toru:
    Mobilny dwukanałowy oscyloskop z wykorzystaniem układu FPGA

    AKWIZYCJA DANYCH
    8-bitowy przetwornik cyfrowy AD9481 (250MSPS) pozwolił na pracę w trybie przeplotu, toteż układ FPGA mógł wolniej zbierać informację do pamięci blokowej RAM. Wybranym układem programowalnym był układ z rodziny SPARTAN 3 (XC3S200). W ten części, oprócz samej akwizycji danych, umieszczono obsługę wyczekiwania triggera. Komunikację z jednostką sterującą zapewnia magistrala SPI pracująca z prędkością ok 40Mb/s. "Wsad" pisany od podstaw w VHDL(choć wielkim ułatwieniem są gotowe bloki BRAM oraz DCM w SPARTANACH).

    Jako, że ten układ FPGA nie posiada stałej pamięci konfiguracji (programu) musiałem zastosować zewnętrzną pamięć XCF02, programowana przez interfejs JTAG.

    Pamięć bufora wynosi 4096 próbek(8-bitowych) na kanał.

    JEDNOSTKA STERUJĄCA
    Ta część konstrukcji bazuje na mikrokontrolerze STM32F407VET6. Układ ten odpowiedzialny jest głównie za interfejs graficzny. Prócz tego nadzoruje stan baterii oraz kontroluje działanie przetwornic. Do jego zadań należy też obsługa zdarzeń z ekranu dotykowego oraz enkoderów mechanicznych. Cały program pisany od zera w C :)

    Mając do dyspozycji jednostkę FPU, wykorzystuję ten układ w procesie analizy Fourierowskiej oraz przy interpolacji sygnału dyskretnego przy najmniejszych podstawach czasu.

    Zastosowany ekran LCD o wielkości 3.2 cala można znaleźć pod nazwą HY-32.

    OPROGRAMOWANIE
    * Kursory - zarówno dla czasu, jak i napięcia. Można odczytać wartość względną jak i bezwzględna położenia kursorów.
    Mobilny dwukanałowy oscyloskop z wykorzystaniem układu FPGA

    * Analiza w dziedzinie częstotliwości (FFT) - do wyboru 64,256 lub 1024 próbek. Użytkownik ma do wyboru pięć rodzajów okien tj. Hanninga, Hamminga, Blackmana, Barletty lub prostokątne. Wykorzystano bibliotekę DSPlib od ST.
    Mobilny dwukanałowy oscyloskop z wykorzystaniem układu FPGA

    * Pomiary automatyczne:
    • pomiar napięcia międzyszczytowego – Vpp ,
    • pomiar napięcia maksymalnego – Vmax ,
    • pomiar napięcia maksymalnego – Vmin ,
    • pomiar wartości skutecznej napięcia – VRMS ,
    • pomiar wartości średniej napięcia – VAVG ,
    • pomiar częstotliwości – f ,
    • pomiar okresu sygnały – tp .

    Mobilny dwukanałowy oscyloskop z wykorzystaniem układu FPGA

    * Różne:
    • Autoset
    • Możliwość obejrzenia przebiegu przed wyzwoleniem, jak i daleko po nim (dowolne przeglądanie bufora)
    • Start/Stop
    • Wyzwalanie kanałem 1/2/External
    • Wyzwalnie jedynie zboczami rosnącymi lub malejącym (z braku czasu więcej ni ma :P )
    • Wyzwalanie w trybach AUTO/NORMAL/FORCE/SINGLE

    Nastawy podstawy czasu reguluje się w zakresie od 1ns/div do 5s/div w systemie 1-2-5, używając enkodera mechanicznego (ten na dole - widoczne na pierwszym zdjęciu). Enkodery posiadają również przycisk, a więc używam uch do wyłączenia/włączenia urządzenia oraz przy wyborze kanału dla zmian czułości wejścia (która też jest ustawiana enkoderem, tyle że tym górnym).

    W urządzeniu zastosowałem detekcję kilku usterek, tak aby od razu można było stwierdzić co do wymianki :)
    Oto ekran przykładowego błędu (wystąpił po odłączeniu płytki z częścią analogową - jednostka sterująca nie wykryła potencjometrów cyfrowych w magistrali I2C)
    Mobilny dwukanałowy oscyloskop z wykorzystaniem układu FPGA


    UWAGI
    Efektywna prędkość próbkowania to 125MSPS, choć przy 250 też działa, lecz z powodu jittera, trochę bitów z ADC się traci :/



    Czas wykonania projektu: ok 6 miesięcy z uwzględnieniem wakacyjnej pracy po 8 h, dziewczyny, napraw auta itp...więc realnie może 2 miesiące napierniczania po 12h dziennie.

    Co do kosztów urządzenia to wyszło mi ok 600 PLN, ale biorąc pod uwagę, że przetworniki, przetwornice, potencjometry cyfrowe, przekaźniki, wzmacniacze dostałem jako sample, to cena pewnie by się podwoiła :)

    Cool? Ranking DIY
    About Author
    mongoł2000
    Level 18  
    Offline 
    Has specialization in: mikrokontrolery arm, fpga, projektowanie
    mongoł2000 wrote 622 posts with rating 172, helped 15 times. Live in city Wrocław. Been with us since 2007 year.
  • Optex
  • #2
    drzasiek
    CNC specialists
    Witam.
    Jest mi niezmiernie miło, że są też inni na elektrodzie którzy budują oscyloskopy :)
    Widzę, że miałeś zdecydowanie większy budżet i więcej czasu niż ja, dlatego mogłeś się bardziej pobawić. Z chęcią zobaczyłbym filmik, bo bez tego wogóle nie widać jak to działa. (chociaż mam wrażenie, że widziałem już jakiś czas temu na youtube ten oscyloskop)
    FPGA to jest to na co mi zabrakło czasu. (mam 2 przetworniki ADS4129 - też ze sampli)
    Czyli gdyby nie sample, szacujesz kwotę ok 1200 zł?
  • Optex
  • #3
    bodzio667
    Level 18  
    Widze ze kolega zastosował wyświetlacz 320 x 240 pikseli z zestawu uruchomieniowego STM32

    Mobilny dwukanałowy oscyloskop z wykorzystaniem układu FPGA

    Wiec podejrzewam że sam oscyloskop jest na STM32, a schemat nie rożni się za wiele od zestawu :)
  • #4
    mongoł2000
    Level 18  
    Owszem pracę można oglądnąć w całości po wypożyczeniu w bibliotece. Jednak kodów źródłowych tam nie ma, więc tej konstrukcji nie da się na jej podstawie zbudować. Brak kodów to zalecenie mojego promotora.

    Filmik z chęcią bym zrobił tylko aktualnie nie mam czym, a czasu też mam b.mało ze względu na kilka innych komercyjnych projektów. Myślę jednak, że jeśli ktoś kiedyś widział w akcji oscyloskop cyfrowy to raczej go nie zaskoczę. Bardziej motywująca wydaje mi się idea...że da się coś takiego zrobić o tak dobrych parametrach (u mnie na katedrze twierdzono że jest to mało prawdopodobne).

    Dużą nieprzyjemnością jest pisanie równolegle kodu w dwóch jakże innych językach. Projekt powstawał tak naprawdę w godzinach od 18 do czasami godzin niemal porannych, co tym bardziej spowalniało pracę przez stopień zmęczenia. Ogólnie dla kogoś kto całe życie pisał programy w C/C++/Java itp ...przesiadka na VHDL, przy tak zaawansowanym projekcie, jest naprawdę ciężka. Do tego również doszedł czas na zrobienie i uruchomienie programatora do Xilinxa.

    Koszt,w przypadku detalicznych cen, rzeczywiście wyniósł by coś około 1kPLN, jednak (jako współwłaściciel już firmy z dogadanymi warunkami współpracy z firmami sprzedającymi podzespoły) sądzę iż da się to produkować za cenę około 500PLN.


    Quote:
    Wiec podejrzewam że sam oscyloskop jest na STM32, a schemat nie rożni się za wiele od zestawu Smile


    Jeżeli chodzi Ci o połączenia STM32-> LCD to ta część się nie różni :) Reszta jest zupełnie inna.

    Aktualnie, wraz z kolegą, który zasłynął w Polsce ze swojego oscyloskopu, pracujemy nad wersjami, które będą w sprzedaży, pracując właśnie jako przystawki pod USB. Więc może pójdziemy w ślad firma takich jak ZRK, ZOPAN,Radiotechnika,Unitra-UNIMA. :)
  • #5
    drzasiek
    CNC specialists
    mongoł2000 wrote:

    wraz z kolegą, który zasłynął w Polsce ze swojego oscyloskopu

    Co to za kolega? A właściwie co to za oscyloskop?
    Bo skoro zasłynął w Polsce to prawdopodobnie jest coś na ten temat w sieci.
    Jeśli możesz to podaj jakieś słowa klucz.

    A co do filmiku to dość istotna sprawa bo tylko na jego podstawie można zobaczyć jak to działa - obsługa, dynamika itd. Jakbyś miał chwilkę to nagraj coś krótkiego bo z tych zdjęć niewiele widać.

    Zauważyłem jednak, że na zdjęciach wykres sinusoidy jest poprzerywany?
    Czym to jest spowodowane? Jakieś błędy w próbkowaniu czy bug w sofcie?

    Nie potrzebnie wyświetlacz cały bufor z widmem.. wystarczy połowa, druga połowa jest odbiciem lustrzanym.

    Cy masz regulację napięcia wyzwalania?
    Czy jest pretrigger?
  • #6
    mongoł2000
    Level 18  
    Tak , jak napisałem...zrobię film jak wezmę kamerkę z domu rodzinnego.

    Quote:

    Zauważyłem jednak, że na zdjęciach wykres sinusoidy jest poprzerywany?
    Czym to jest spowodowane? Jakieś błędy w próbkowaniu czy bug w sofcie?


    Funkcję rysowania dopieszczałem kilka razy w celu zwiększenia szybkości i może te zdjęcia są z okresu kiedy nie została dokończona lub wina aparatu w telefonie. Zdjęcia robiłem dawno temu, więc nie pamiętam. Teraz na pewno nie ma takiego efektu.

    Quote:

    Nie potrzebnie wyświetlacz cały bufor z widmem.. wystarczy połowa, druga połowa jest odbiciem lustrzanym.


    FFT robiłem dzień przed prezentacją projektu, a więc zrobiłem to jak najszybciej można było. :)

    Quote:

    Czy masz regulację napięcia wyzwalania?


    Tak, ustawiane w ten sposób, że po kliknięciu na linię wyzwalania(niebieska na zdjęciach) zaczyna migać, a następnie przeciąga się ją do odpowiedniego miejsca.

    Quote:

    Czy jest pretrigger?


    Jeżeli chodzi Ci o obserwacje obszaru przed wyzwoleniem - to tak.
  • #7
    symndz
    Level 16  
    drzasiek wrote:
    Co to za kolega? A właściwie co to za oscyloskop?

    dołączam się do pytania, z próżnej ciekawości urządzenia

    dręczą mnie natomiast małe pytania .. jeden i drugi jest oparty na dość mocnym i podobnym core .. w wypadku jednego mamy wersje bez FPGA i w drugim z FPGA. I teraz pytanie, ile czasu (albo ile czasu zostaje) w obu wypadkach zajmuje procesorom obsługa GUI, przerzut wyliczeń (lub przebiegów z pamięci) do GUI a ile sama obróbka danych już za FPGA (czy za A/C w corze programowo w DSO5)?
    [sprzeg] - [A/C] -[FPGA lub nic] - [bufor danych] -[przerwarzanie (FFT, wielokrotne probkowanie etc.)] - [GUI]
    Robiliście takie estymacje?
  • #8
    rasz
    Level 21  
    Mozesz sobie sciagnac kod DSO Nano i zobaczyc.
  • #9
    mongoł2000
    Level 18  
    Quote:

    dręczą mnie natomiast małe pytania .. jeden i drugi jest oparty na dość mocnym i podobnym core .. w wypadku jednego mamy wersje bez FPGA i w drugim z FPGA. I teraz pytanie, ile czasu (albo ile czasu zostaje) w obu wypadkach zajmuje procesorom obsługa GUI, przerzut wyliczeń (lub przebiegów z pamięci) do GUI a ile sama obróbka danych już za FPGA (czy za A/C w corze programowo w DSO5)?
    [sprzeg] - [A/C] -[FPGA lub nic] - [bufor danych] -[przerwarzanie (FFT, wielokrotne probkowanie etc.)] - [GUI]
    Robiliście takie estymacje?


    Nie obliczałem czasu trwania tych operacji, aczkolwiek mogę powiedzieć, że obsługa wyświetlacza jest trochę cyklożerna (mimo, że do sterowania LCD użyty został blok FSMC, więc o tyle dobrze że nie trzeba banglać pinami). U mnie wyświetlacz odświeżany jest mniej więcej 25 FPS, a czas trwania budowy nowego obrazu, zależy w dużej mierze od zmian, które muszą nastąpić po jakimś zdarzeniu.

    Ogólnie przerzut danych z pamięci do wyświetlacza może niemal nie zajmować czasu, gdy użyjemy DMA i pamięci zewnętrznej dla wyświetlacza(lub odpowiednio wykorzystać wewnętrzną - choć mi jej nie wystarczyło). Bardziej pracochłonne jest przygotowanie w mikrokontrolerze kolejnej ramki obrazu.

    W mikrokontrolerze z przetwarzania sygnałów, wykorzystuje interpolację, FFT, skalowanie sygnału. Czas trwania tych operacji również nie jest stały, zależy od długości bufora itp.

    Sądzę, że w DSO5 STM32 jest bardziej obciążony, ze względu na proces akwizycji i oczekiwania na wyzwolenie. U mnie występuje to w układzie FPGA.
  • #10
    drzasiek
    CNC specialists
    Szczerze mówiąc u mnie uC nie czeka na wyzwolenie.
    W momencie wyzwolenia generowane jest przerwanie z zewnątrz od komparatora analogowego (zewnętrznego) więc to on sobie "czeka" na wyzwolenie. uC posiada stały bufor roboczy w na którym operuje, wyświetla raz znormalizowane wartości.
    Próbkowanie jest wykonywane za pomocą DMA które ładuje sobie wkółko wartości z GPIO do bufora. Więc generalnie uC zajmuje się obliczeniami (w przypadku stwierdzenia wyzwolenia i zapełnienia połowy wartości bufora po wystąpieniu wyzwolenia) oraz wyświetlaniem. Nie mam pojęcia ile taka pętelka zajmuje.
  • #11
    mongoł2000
    Level 18  
    A no to rzeczywiście aż tak nie jest obciążony. Jednak po dodaniu bardziej zaawansowanych czasowych wyzwoleń, obciążenie znacząco by wzrosło.

    Dlaczego nie wykorzystałeś wewnętrznych cyfrowych komparatorów?? Wydaje mi się to lepsze rozwiązanie.