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

Oscyloskop z wyświetlaczem VGA oparty na układzie FPGA Intel MAX10 (maXimator)

piotrva 05 Feb 2019 01:44 6993 23
  • Oscyloskop z wyświetlaczem VGA oparty na układzie FPGA Intel MAX10 (maXimator)

    1. Dlaczego powstał ten projekt? Założenia.
    Od paru lat fascynowało mnie zbudowanie własnego oscyloskopu i poznanie pewnych problemów tej tematyki "od podszewki". Pierwsze praktyczne próby realizacji tego tematu podjąłem w czasie studiów, gdy w moje ręce pierwszy raz trafił zestaw maXimator - wyposażony w układ Intel FPGA (dawniej Altera) MAX10 10M08DAF256C8G, który na pokładzie posiada wbudowany przetwornik ADC.

    Założeniami pierwszej, jak i kolejnych wersji projektu była maksymalna prostota, bazowanie na zasobach dostępnych na płytce maXimator http://maximator-fpga.org/ oraz przede wszystkim walory dydaktyczno-edukacyjne - tak abym sam coś wyniósł z projektu, oraz abym mógł zaprezentować pewien prosty model oscyloskopu cyfrowego innym.

    2. Jak zbudowany jest oscyloskop?
    Oscyloskop z wyświetlaczem VGA oparty na układzie FPGA Intel MAX10 (maXimator)
    Podstawowy oscyloskop cyfrowy zaraz za wejściem sygnału posiada odpowiedni układ wejściowy oraz kondycjonujący. Pierwszy z nich ma za zadanie zapewnić odpowiednie parametry wejścia, zaś drugi ma za zadanie tak dopasować sygnał, aby w optymalny sposób wykorzystać zakres pracy przetwornika (w tym zapobiegać aliasingowi). Od razu zdradzę, że tego bloku w swoim oscyloskopie... nie zrealizowałem.

    Następnie sygnał podawany jest na wejście przetwornika, z którego dane cyfrowe kierowane są do pamięci akwizycji. Jak się domyślamy w tych okolicach będzie realizowane także wyzwalanie.

    Później dane są zwykle przetwarzane (np. uśredniane, wyliczanie funkcji matematycznych) i kierowane dalej do pamięci wyświetlania, na podstawie zawartości której generowany jest obraz na ekranie.

    3. Pierwsza wersja oscylo(skopu)grafu
    Pierwsza wersja projektu była bardzo uboga - dane z przetwornika (1 kanał) kierowane były bezpośrednio do pamięci wyświetlacza, zaś wyzwalanie realizowane było za pomocą przycisku. Użytkownik nie miał do wyboru żadnych ustawień. Wyświetlaczem zaś stał się monitor z interfejsem VGA. Przy okazji realizacji tego zalążka obecnej wersji projektu poradziłem sobie z kilkoma wyzwaniami. Po pierwsze z samą obsługą przetwornika ADC w układach MAX10, po drugie z generowaniem obrazu przy braku pamięci RAM (wbudowanej w FPGA) mieszczącej całą ramkę obrazu - zaprojektowałem wtedy system generowania obrazu (wyświetlania linii) "w locie" na podstawie zapisanych w pamięci wyświetlania wartości próbek sygnału oraz także w locie udało mi się nałożyć na taki wykres siatkę. Rozwiązanie takie jednak pozostawiało niedosyt...

    4. Jak zbudowany jest mój projekt?
    Oscyloskop z wyświetlaczem VGA oparty na układzie FPGA Intel MAX10 (maXimator)
    Mój docelowy system postanowiłem oprzeć na systemie mikroprocesorowym z rdzeniem Nios II e. Jest to darmowy soft-procesor, czyli procesor syntezowany w układzie FPGA i udostępniający magistralę Avalon Memory Mapped (Avalon-MM), która umożliwia podpięcie do systemu dowolnych (dostarczonych przez producenta i samodzielnie stworzonych) komponentów.

    Oprócz rdzenia w systemie znalazły się:
    A. Pamięć RAM procesora - stanowiąca pamięć operacyjną oraz pamięć programów. Pamięć ta jest inicjalizowana zawartością stanowiącą kod programu.
    B. Timer - używany do odmierzania czasu w różnych okolicznościach
    C. Porty GPIO - do prostej sygnalizacji pracy systemu za pomocą diod oraz do obsługi 3 przycisków umożliwiających poruszanie się po menu
    D. Moduł UART - mogący służyć do komunikacji z komputerem
    E. Moduł wyświetlacza VGA - przygotowany przeze mnie moduł wysyłający obraz za pomocą interfejsu VGA, wyposażony we własną pamięć RAM
    F. Moduł akwizycji danych, umożliwiający pobieranie danych z 1 lub 2 kanałów, realizujący wyzwalanie i także wyposażony we własną pamięć RAM

    Poniżej omówię budowę 2 ostatnich komponentów

    5. Moduł akwizycji danych
    Oscyloskop z wyświetlaczem VGA oparty na układzie FPGA Intel MAX10 (maXimator)

    Do modułu tego podłączony jest przetwornik ADC układu MAX10, z wykorzystaniem magistrali Avalon Streaming (Avalon-ST). Przetwornik pracuje z maksymalną możliwą prędkością 1MSPS, zaś w przypadku wyboru przez użytkownika innych podstaw czasowych zachodzi decymacja próbek (zatem przy jednym kanale próbujemy 1MSPS, zaś przy 2 dzielimy tę prędkość na 2). Moduł kontroluje przetwornik, w szczególności w trybie 2 kanałów odpowiednio przełącza multiplekser przetwornika, aby pobierać dane naprzemiennie z obu kanałów (tryb CHOP znany ze starszych oscyloskopów). Tu także realizowane jest po stronie cyfrowej wyzwalanie.

    Oscyloskop z wyświetlaczem VGA oparty na układzie FPGA Intel MAX10 (maXimator)
    Wyzwanie z którym spotkałem się na tym etapie to zaszumiony przebieg - proste wykrywanie przejścia przez próg wyzwalania nie dawało zadowalających efektów. Dlatego też wprowadziłem histerezę, dzięki której wyzwalanie jest stabilne. Próbki są zbierane od momentu wyzwolenia aż do zapełnienia pamięci. Nie stosowałem bufora kołowego, dlatego też moment wyzwolenia zawsze znajduje się na początku zebranych danych.

    Konfiguracja pracy tego modułu jak i zebrane dane są dostępne za pośrednictwem magistrali Avalon-MM

    6. Moduł wyświetlania
    Oscyloskop z wyświetlaczem VGA oparty na układzie FPGA Intel MAX10 (maXimator)
    Jak już wspomniałem moduł wyświetlania stanowił wyzwanie z powodu mocno ograniczonej ilości pamięci RAM, i obraz o rozdzielczości 1024x768 generowany jest przez to w locie. Generator sygnałów synchronizacyjnych VGA w trakcie skanowania ramki udostępnia adres aktualnie wyświetlanego piksela. Adres ten jest porównywany z odpowiednimi wartościami przez generatory wykresów, tekstu, poziomu wyzwalania oraz siatki. Jeśli dany moduł stwierdzi (na podstawie danych zawartych w jego pamięci bądź zakodowanych na stałe (siatka), że dany piksel należy do obsługiwanego przez niego obrazu, przesyła informację do multipleksera priorytetowego. On z kolei decyduje o tym, który obraz ma pierwszeństwo (będzie na wierzchu) i podaje dane piksela modułowi VGA.

    Dane wykresów przechowywane są jako wartości próbek do wyświetlenia (3 wykresy: 2 kanały + kanał matematyczny), mapa pikseli (tekst) lub pojedyncza wartość (poziom wyzwalania). Także tu konfiguracja modułu i zapis danych odbywa się za pośrednictwem magistrali Avalon-MM

    7. Jakie funkcje ma oscyloskop, czyli o oprogramowaniu kilka słów
    Oscyloskop z wyświetlaczem VGA oparty na układzie FPGA Intel MAX10 (maXimator) Oscyloskop z wyświetlaczem VGA oparty na układzie FPGA Intel MAX10 (maXimator)
    Sam sprzęt, zaprojektowany w języku VHDL nie robiłby nic ciekawego, gdyby nie oprogramowanie.
    A. System udostępnia możliwość wyboru dowolnego jednego lub 2 kanałów
    B. Wyzwalanie na zboczu narastającym/opadającym z programowanym poziomem i histerezą, z wyborem kanału
    C. Tryby wyzwalania: auto, normal, single
    D. Możliwość zmiany podstawy czasu
    E. Dla każdego kanału zmieniane wzmocnienie i offset (cyfrowy - wszak nie ma układu kondycjonującego) i możliwość wyłączenia
    F. Kanał matematyczny (konfigurowany również jako powyżej) z funkcjami +, -, *, /

    Menu użytkownika wyświetlane jest w górnej linii ekranu w formie tekstowej. Za pomocą jednego przycisku przechodzi się pomiędzy opcjami, a za pomocą 2 kolejnych można zwiększać i zmniejszać dany parametr (wskazywany znakiem >)

    8. Podsumowanie i refleksja.
    Ostatecznie udało mi się zrealizować założenia, które miałem. Wiele nauczyłem się przy tym projekcie, o czym najlepiej chyba świadczy fakt, że gdybym teraz miał taki zrobić to wiele rzeczy zrobiłbym lepiej, co jednak nie umniejsza satysfakcji i zadowolenia z obecnego stanu rzeczy. Co najciekawsze chyba, to fakt, że cały oscyloskop jest realizowany... jednoukładowo, od przetwornika aż po wyświetlacz.

    9. Materiały
    Rzecz jasna udostępniam cały projekt wszystkim zainteresowanym:
    https://gitlab.com/piotrva/maximator-scope
    Informacje o płytce:
    http://maximator-fpga.org/
    Artykuł z opisem w j. angielskim:
    http://pak.info.pl/index.php?menu=artykulSzczegol&idArtykul=4718

    10. Parametry
    Oszałamiające nie są:
    A. Próbkowanie: 1MSPS (1 kanał), 0.5MSPS (2 kanały)
    B. Zakres napięć wejściowych: 0-2.5V
    C. Pasmo: a kto to wie - na wejściach goldpin są przed układem FPGA rezystory i diody zabezpieczające przed zbyt wysokim napięciem - uznałem określanie pasma za nieistotne
    D. Ilość próbek: 1024
    E. Rozdzielczość: 9-bit

    PS. Jakość obrazu jest w rzeczywistości dużo lepsza niż na załączonych "zrzutach" - ich rozmazanie i słaba rozdzielczość są spowodowane kiepskim systemem przechwytywania złożonym z konwertera VGA->S-VIDEO oraz urządzenia do przechwytywania sygnału wideo na USB.

    Cool? Ranking DIY
    About Author
    piotrva
    VIP Meritorious for electroda.pl
    Offline 
    Has specialization in: mikrokontrolery
    piotrva wrote 6404 posts with rating 700, helped 623 times. Live in city Kraków. Been with us since 2008 year.
  • #2
    Steryd3
    Level 33  
    Witam.
    Gratuluję pomysłu i realizacji! Bardzo fajny edukacyjny projekt.

    Mam gdzieś w szufladzie płytkę maXimator więc może kiedyś w wolnej chwili korzystając z udostępnionych źródeł, spróbuje u siebie odtworzyć projekt i trochę się poduczyć.
    Jest to projekt typowo edukacyjny i mimo braku większych walorów praktycznych oceniam go dość wysoko. Właśnie tego typu projekty powinny być doceniane na elektrodzie! Publikowanie setnego minutnika do jajek na AVR lub zasilacza zbudowanego na 4 modułach, które ktoś połączył i ładnie w obudowie pilnikiem wypiłował otwory pod pokrętła i wyświetlacz raczej niewiele wnoszą czytającym. Tu zaś jest jakiś pomysł, jakaś realizacja i co najważniejsze udostępniony cały projekt gdzie ktoś zainteresowany może czegoś się dowiedzieć o układach logiki programowalnej i ich "programowaniu".
  • #3
    piotrva
    VIP Meritorious for electroda.pl
    @Steryd3 Dzięki za miłe słowa i docenienie projektu. I dokładnie jest jak piszesz - wartości praktycznej w tej formie projekt nie ma żadnej, za to pozwala na "zajrzenie do środka" tej klasy urządzeń.
  • #4
    leonow32
    Level 30  
    Jak tylko zobaczyłem tytuł tematu, to od razu wiedziałem, że to robił Piotr Rzeszut, bo nikt inny w tym kraju nie potrafi robić takich rzeczy :)

    Zapomniałeś napisać, jakie są podstawowe parametry, czyli częstotliwość samplowania, pasmo i ilość próbek. Poza tym projekt wymiata za poziom zaawansowania i walory dydaktyczne!
  • #5
    piotrva
    VIP Meritorious for electroda.pl
    @leonow32 E tam nie przesadzaj, jest na naszym forum wiele osób, które ode mnie bardziej wymiatają w tematyce.
    Parametry dodane
  • #6
    tplewa
    Level 39  
    piotrva wrote:
    @leonow32 E tam nie przesadzaj, jest na naszym forum wiele osób, które ode mnie bardziej wymiatają w tematyce.
    Parametry dodane


    Hmmm powiem tak owszem można było zrobić lepiej - ale właśnie po co utrudniać, a tak dzięki udostępnieniu materiałów powstał z tego fajny projekt edukacyjny :)
  • #7
    zbychmg
    Level 31  
    Czytałem artykuł, szkoda, że nie ma fotki z tego urządzenia i chociaż przybliżonego kosztu elementów projektu.
    Może chociaż jakiś schemat, czy typ użytego modułu, algorytm programu.

    Chciałem zrobić coś podobnego i taniego dla początkujących elektroników.
    Coś lepszego od proponowanych oscyloskopów na karcie audio.

    Eksperymentowałem z modułem STM32F103 (koszt ok. 2$).
    Przetwornik 12bit, wykorzystując DMA można również zapisać serię 1000 pomiarów w 1ms
    (czas pomiaru poniżej 1us.) Czyli 1MSa/s
    A tu kolega pokazał mi kompletny działający kit DSO138 z kolorowym LCD 320x240 (można kupić za ok. 60zł) i to dokładnie to co planowałem zrobić.

    Soft do DSO138 jest dostępny jako open source... za dodatkową opłatą można kupić wersję rozbudowaną dla obsługi 2-ch kanałów.

    Można próbować robić płytkę i lutować elementy, ale myślę,że wyjdzie drożęj niż gotowy kit
  • #8
    piotrva
    VIP Meritorious for electroda.pl
    zbychmg wrote:
    szkoda, że nie ma fotki z tego urządzenia

    Nie ma, bo urządzenie nie jest niczym innym poza płytką developerską maXimator.
    zbychmg wrote:
    chociaż przybliżonego kosztu elementów projektu.

    Koszt projektu to monitor (0-N zł), kabel (0-N zł) oraz płytka maXimator (której cenę można sprawdzić u dystrybutorów - obecnie 250 zł)
    zbychmg wrote:
    Może chociaż jakiś schemat, czy typ użytego modułu, algorytm programu.

    Schemat zestawu maXimator jest w internecie - podałem link do strony tego zestawu. Typ użytego modułu - jest nawet w tytule projektu. Oprogramowanie - całe (projekt sprzętowy i software) udostępniam za pomocą serwisu gitlab.
  • #9
    zbychmg
    Level 31  
    Bardzo dziękuję za odpowiedź.
    Linki przeglądałem, ale zwykle autor przedstawia produkt finalny...
    Oscyloskop, to jednak jakiś układ wejściowy, płytka przetworników, wyświetlacz, zasilacz...
    Tak jak pisałem mam kilku młodych elektroników i chciałem ich czymś takim zainteresować.
    Myślałem, że to jest tańsze. Cena kitu DSO138 to 25% tej ceny, a to przy tych samych parametrach i dodatkowo z układem dzielnika wejściowego i kolorowym wyświetlaczem LCD....
    Jeszcze raz bardzo dziękuję za wyjaśnienia.
    Może kiedyś uda się zrobić wersję budżetową...
  • #10
    piotrva
    VIP Meritorious for electroda.pl
    @zbychmg
    To jest produkt finalny - założenia tego projektu były zupełnie inne i chodziło o przedstawienie zupełnie innej części problematyki budowy oscyloskopu.
    piotrva wrote:
    Podstawowy oscyloskop cyfrowy zaraz za wejściem sygnału posiada odpowiedni układ wejściowy oraz kondycjonujący. (...) Od razu zdradzę, że tego bloku w swoim oscyloskopie... nie zrealizowałem.



    zbychmg wrote:
    Oscyloskop, to jednak jakiś układ wejściowy, płytka przetworników, wyświetlacz, zasilacz...

    Oraz układ zbierający i przetwarzający dane, który własnie zaprezentowałem ;) Budowa każdej wspomnianej przez Ciebie części stanowi pewne wyzwanie, ja zaprezentowałem jedną z nich, która z mojego punktu widzenia była najbardziej ciekawa i de facto stanowi funkcjonalnie oscyloskop dla sygnałów z zakresu 0-2.5V ;)

    zbychmg wrote:
    Tak jak pisałem mam kilku młodych elektroników i chciałem ich czymś takim zainteresować.
    Myślałem, że to jest tańsze. Cena kitu DSO138 to 25% tej ceny, a to przy tych samych parametrach i dodatkowo z układem dzielnika wejściowego i kolorowym wyświetlaczem LCD....

    Z tym, że płytka DSO138 to tylko oscyloskop i... koniec. Można polutować, można popatrzyć na schemat i używać - to jest fajny projekt praktyczny. Tu dostajesz w owszem nie najniższej cenie, ale płytkę do nauki szerokiego tematu jakim jest programowanie FPGA, na której możesz m. in. zrobić dydaktyczny oscyloskop, pokazujący co się dzieje (modelowo) z danymi wewnątrz poważnych oscyloskopów. Po prostu mój projekt nie spełnia Twoich oczekiwań, bo to jest projekt czysto dydaktyczny i służący do dydaktyki dosyć specyficznej działki elektroniki.
  • #11
    LChucki
    Level 31  
    @piotrva, temat FPGA/CPLD to dla większości programistów czarna magia. Widząc "program" na FPGA nie mogą sobie uświadomić, że wykonuje się on równocześnie a nie sekwencyjnie. Dla rasowego programisty taki DSO138 zawiera uC i jest zrozumiały, FPGA będzie be bo nie rozumie o co tam chodzi.
    Wychowałem się na GAL więc dla mnie CPLD czy FPGA nie jest tajemnicą. Był okres, gdy nie używałem układów programowalnych bo uC stały się na tyle szybkie i wyposażone, że nie trzeba było sięgać po CPLD/FPGA. Teraz znów sięgam po te układy, bo zbudowanie sensownego oscyloskopu, generatora DDS czy częstościomierza, bez układu programowalnego jest trudne, wręcz niemożliwe choćby ze względu na czas propagacji sygnałów.
  • #12
    0ceanborn
    Level 25  
    Ciekawe czy ktoś kiedyś zrobi kartę oscyloskopową do PC ?
  • #14
    0ceanborn
    Level 25  
    Ale miałem na myśli nie fabryczny sprzęt bo tego jest od groma ale projekt DiY
  • #15
    piotrva
    VIP Meritorious for electroda.pl
    Kiedyś widziałem taki projekt na Elektrodzie - mój tez może ktoś rozwinąć o komunikację USB i oprogramowanie na PC.
  • #16
    0ceanborn
    Level 25  
    Teraz to wszyscy smartfony. Fajnie jakby było takie urządzenie, które by działało ze smartfonem i było małe.
  • #17
    zbychmg
    Level 31  
    A propo Fajnie by było .... No to zakasać rękawy i do roboty....

    Kolega przedstawił to co zrobił, można to rozwinąć, ewentualnie realizować na innym sprzęcie, dlatego pytałem o algorytm.

    Postęp w tej dziedzinie jest tak ogromny, że trudno teraz zrobić coś, czym by się innych "zachwyciło".

    Zwykle zamiast życzliwej zachęty, zwykle spotyka się z krytykanctwem, co zniechęca młodzież do robienia czegokolwiek.

    A żeby zacząć przygodę z elektroniką, potrzeba sporo trochę czasu na przyswojenie pewnej wiedzy, a potem trochę kasy na części i przyrządy pomiarowe, aby tą wiedzę zweryfikować i zacząć robić działające aplikacje. Złapać bakcyla i zamiast tracić czas na "rozrywki" internetowe, których jest multum.... Szukać i wykorzystywać praktycznie wiedzę techniczną

    Dzisiaj nie jest już problemem zdobyć części, kupić niedrogie przyrządy pomiarowe...

    Trzeba mieć nadzieję, że młodzi ambitni zapaleńcy czasem zaglądają na tego typu fora....
  • #18
    piotrva
    VIP Meritorious for electroda.pl
    zbychmg wrote:
    A propo Fajnie by było .... No to zakasać rękawy i do roboty....

    Heh no dokładnie, nic by mnie bardziej nie cieszyło, niż ktoś kto by projekt rozwinął i np. dorobił aplikacją na PC z komunikacją po UART, który już tam jest ;)
    A po UART można podpiąć i moduł BT i będzie gites ;)
  • #19
    Michal2002
    Level 23  
    Ciekawy projekt :)

    Ode mnie plus :)
  • #20
    tplewa
    Level 39  
    LChucki wrote:
    @piotrva, temat FPGA/CPLD to dla większości programistów czarna magia. Widząc "program" na FPGA nie mogą sobie uświadomić, że wykonuje się on równocześnie a nie sekwencyjnie.


    Bo to nie jest program i nie można tak do tego podchodzić to jest opis sprzętu (nazywanie tego programem jest też błędem bo nazwa sugeruje złe podejście)... Pisząc cokolwiek czy to w VHDL, Verilog trzeba o programowaniu uC itp. zapomnieć bo to tylko przeszkadza.
  • #21
    LChucki
    Level 31  
    tplewa wrote:
    LChucki wrote:
    @piotrva, temat FPGA/CPLD to dla większości programistów czarna magia. Widząc "program" na FPGA nie mogą sobie uświadomić, że wykonuje się on równocześnie a nie sekwencyjnie.

    Bo to nie jest program i nie można tak do tego podchodzić to jest opis sprzętu

    Dlatego napisałem "program". To jest po prostu opis funkcji logicznych. Tłumacząc początkującym jak działa "program" w FPGA czy CPLD mówię "wyobraź sobie, że każda linijka "programu" wykonywana jest przez osobny rdzeń, wszystkie operacje w jednym takcie. Przygodę z układami programowalnymi zaczynałem od GAL i CUPL, więc było mi łatwo to zrozumieć.
  • #22
    piotrva
    VIP Meritorious for electroda.pl
    A ja osobom, które uczę mówię, że to co zapisujemy w językach opisu sprzętu to po prostu sposób opisu układu logicznego i należy czytać to jako zbiór bramek i przerzutników, a nie jakikolwiek program i że mają na czas zajęć z czystego projektowania układów cyfrowych zapomnieć o czymś takim jak procesor ;)
  • #23
    tplewa
    Level 39  
    piotrva wrote:
    A ja osobom, które uczę mówię, że to co zapisujemy w językach opisu sprzętu to po prostu sposób opisu układu logicznego i należy czytać to jako zbiór bramek i przerzutników, a nie jakikolwiek program i że mają na czas zajęć z czystego projektowania układów cyfrowych zapomnieć o czymś takim jak procesor ;)


    A no dokładnie... porównywanie tego do procesora czy jakichkolwiek języków programowania w bardziej złożonych projektach tylko namiesza w głowie... Ja na początku zabawy z PAL/GAL potem CPLD też chciałem to porównywać do programowania procków - ale szybko zdałem sobie sprawę że nie ma co porównywać bo to tylko miesza w głowie. Natomiast robienie opisu tak jak "programu" czyli coś się wykonuje nawet równocześnie to też może powodować złe nawyki.

    Ot trzeba zapomnieć o procesorach, a najlepiej zaprojektować sobie kilka układów na 74xx z wcześniej przygotowanego opisu na kartce (założeń jak logika ma działać) - łatwiej tutaj jest chyba osobą które takie układy kiedyś budowały. Tak samo jak miały algebrę Boole'a (i coś z niej rozumiały ;) ) Potem kupić dowolny zestaw z CPLD/FPGA i próbować sobie coś implementować od prostych spraw jak bramki, przerzutniki, zatrzaski, dekodery na 7 segmentowy wyświetlacz itd. do coraz bardziej skomplikowanych. Potem jak się załapie to już leci z górki...
  • #24
    LChucki
    Level 31  
    tplewa wrote:
    a najlepiej zaprojektować sobie kilka układów na 74xx z wcześniej przygotowanego opisu na kartce (założeń jak logika ma działać) - łatwiej tutaj jest chyba osobą które takie układy kiedyś budowały.

    W latach 80 od tego zaczynałem. CPU to dopiero lata 90.