Zbudowałem własny programator do GAL i PALCE. Co to za układy?

Поделиться
HTML-код
  • Опубликовано: 28 авг 2024

Комментарии • 77

  • @__MINT_
    @__MINT_  Год назад +6

    Tak w ramach dopowiedzenia do filmu: GAL - Generic Array Logic
    PALCE - Programmable Array Logic CMOS Erasable
    Można je wymazać i zaprogramować min. 100 razy.
    Na tych scalakach możecie tworzyć nie tylko układy typu stan - odpowiedź, ale też zatrzaski. Wejście zegara jest wspólne dla wszystkich makrocel (pin 1), a w WinCUPLu zamiast "Q = ..." wystarczy napisać "Q.D = ...", i wtedy stan danego wyjścia będzie mógł zmienić się tylko po podaniu impulsu na pin 1. W przypadku układów 16V8 oraz 20V8 odpowiednio piny 11 i 13 stają się wtedy wejściem OE. Sam protokół komunikacji z układem przypomina trochę SPI, mamy wejście zegara i danych. Dodatkowo jest jeszcze pin Vpp, coś a'la CAS i RAS (kto zetknął się z pamięcią DRAM ten zna), różni się to w zależności od układu. Sprawa z weryfikacją wygląda inaczej, dla GALi odczyt jest szeregowy, ale dla PALCE już pseudorównoległy. Niby mamy dane na wszystkich wyjściach, ale adres podaje się szeregowo, w dodatku dla PALCE22V10 z każdego wyjścia odczytuje się inną ilość bitów. W zdobycznej dokumentacji nie było to dokładnie opisane, więc co do ilości bitów i kolejności musiałem się domyślać, wstukując dane z palca i szukając zależności pomiędzy tym co wstukałem a tym, co odczytałem. Oprócz tego nie były podane lokacje bitów konfiguracyjnych, i musiałem zgadnąć ich położenie sprawdzając, po wyzerowaniu którego bitu zachowanie układu się zmienia, i w jaki sposób się zmienia, a do sprawdzenia były 64 bity. Mrówcza robota, ale dałem radę, i cieszę się jak sięgam pamięcią wstecz i uświadamiam sobie, że mam to już za sobą. W przypadku GALi mogłem je programować swoim XGecu T48, i wykorzystałem to aby analizatorem stanów podejrzeć, jak wygląda programowanie. Wyszło na jaw, że programator ma w dupie czas impulsu wymazywania i programowania, i zamiast najpierw odczytać te czasy z układu katuje scalaki impulsem wymazywania 800ms, a zapisującym 100ms, mimo że niektórym scalakom wystarczy 10ms. Mało tego, podawane napięcia Vpp to 16V i 14.5V dla 22V10, podczas gdy napięcie też wypadałoby odczytać z rejestru i obniżyć w razie potrzeby. Przy weryfikacji z napięciem trzeba zjechać do 12V, ale XGecu oczywiście tego nie robi, w przeciwieństwie do mojego programatora, który jeszcze informuje nas o dobranych parametrach na podstawie odczytu z rejestru. Napięcie Vpp dla PALCE wynosi 9.25V lub 9V dla 22V10, tutaj już nie sprawdzę co robi XGecu, bo on tych układów nie obsługuje

    • @__MINT_
      @__MINT_  Год назад +1

      Byłbym zapomniał, użyty kabel USB koniecznie musi być albo krótki, albo dobrej jakości. Inaczej napięcie spada za nisko przy pełnym Vpp z przetwornicy i wywala błąd

    • @stoczwarty
      @stoczwarty Год назад

      @@__MINT_ I dlatego nie mogłeś zastosować diody zabezpieczającej USB przed "cofnięciem" się napięcia do komputera. Zmierzyłeś może jaka jest graniczna wartość napięcia przy obciążeniu tak aby jeszcze wszystko działało?

    • @__MINT_
      @__MINT_  Год назад +1

      W kodzie wartość graniczna to 4.4V ze specyfikacji USB, a programowane układy w nocie mają podane 4,5V. Sam uC może działać poniżej 3V, ale przetwornica raczej nie dałaby rady wytworzyć 16V przy takim napięciu. Pamiętaj, że monitorowanie napięcia zasilania działa tylko z uC w wersji SMD

    • @stoczwarty
      @stoczwarty Год назад

      @@__MINT_ Faktycznie jest to na granicy.

    • @Arvitles
      @Arvitles Год назад

      Zbudował byś przetwornice royera i pokazał na filmie?

  • @Excray80
    @Excray80 Год назад +3

    Super fajny materiał. Po prostu pakiet od A do Z. Wszystko opisane, wytłumaczone i podane na tacy. DZIĘKUJĘ!!!

  • @BartekEVH
    @BartekEVH Год назад +5

    Wariat!! 😆 Szacun!!

    • @__MINT_
      @__MINT_  Год назад +3

      Wariat, dzięki któremu inni nie muszą zostawać wariatami ;)

    • @stoczwarty
      @stoczwarty Год назад +1

      @@__MINT_ Na prawdę rozwaliłeś system. I to dosłownie.

    • @TymexComputing
      @TymexComputing Год назад +1

      @@__MINT_ Hahaha - to jest bardzo dobre i nigdy wcześniej niesłyszane przeze mnie powiedzenie :) - ale coś kojarzę że było podobne :)

  • @lampyelektronowe
    @lampyelektronowe Год назад +1

    Świetny film dobrze wytłumaczone!!!

  • @mariuszp1561
    @mariuszp1561 Год назад

    Szacunek za projekt ! Dobra ilość wiedzy i praktyki. Brawo. 😊

  • @ciekaweurzadzenia
    @ciekaweurzadzenia Год назад +2

    Super projekt

  • @piotrolszowski8389
    @piotrolszowski8389 6 месяцев назад

    Gdzieś w życiu minąłem się z Galami. Dziś poniekąd dzięki temu kanałowi i nie tylko, mogę powiedzieć że to miłość od pierwszego zaprogramowania 🙂. Z racji tego ,że mam kompa z LPT i programator JTAG na tan port, działam na ispGAL22lv10. Kupiłem nawet kilka książek, starych książek, gdzie jest choć kilka kartek poświęconych galom i cupl'owi.

    • @__MINT_
      @__MINT_  6 месяцев назад +1

      Miło to słyszeć!

  • @ytmsz98
    @ytmsz98 Год назад

    18:30 Jak ja nienawidziłem tego WinCUPL'a na studiach, to tego się nie da opisać. Tak poza tym.. Nie wiem, kim Ty jesteś, ale bardzo pracowity z Ciebie człowiek, gratuluję tych wszystkich osiągnięć. Bardzo miło się ogląda Twoje filmy. Niesamowite.

  • @bazejwolinski5131
    @bazejwolinski5131 Год назад

    Niesamowity projekt :D Z tą dokumentacją to mnie zabiłeś😆😆

  • @TymexComputing
    @TymexComputing Год назад +1

    No prawdziwy zuch - :) - indonezja to wschodząca gwiazda nie warto się zrażać :). Podoba mi się szczególnie obudowa w kształcie domku z kominem i wytrzymały port Typ B zamiast tam jakiegoś taniego micro usb (czy to może nie domek ale dłoń uciętym palcem?) oraz to że dla przekory a pewnie z oszczędności towaru, prostoty naprawy użyto na płytce jednak układów logiki dyskretnej zamiast kombinowanej PLC :) - no dobra, bootstraping by nie zadziałał jak każdy miałby w domu sobie zaprogramować PLC programator bez programatora - zwłaszcza jak nie ma na rynku takiego.
    Trzeba teraz wydrukować 100 takich płytek, 30 obudów, 10 dolutować komponenty i i wystawić ofertę i sfinalizować skapitalizować wynalazek :)

  • @przemekbundy
    @przemekbundy Год назад

    dzięki za materiał.
    ulżyło mi...

  • @pieczonemaekotki6923
    @pieczonemaekotki6923 Год назад

    Jak miło widzieć drugiego człowieka, stosującego starożytne wcięcia Whitesmith, serdecznie pozdrawiam.

  • @kafka0021
    @kafka0021 Год назад

    Fajnie Ci te płytki wychodzą

  • @dzikidzik2648
    @dzikidzik2648 Год назад +2

    Świetny projekt. Programowanie galów to bajka. Pewnie wykorzystam je w przyszłości. Cena też rozsądna. A te gale są jednorazowego zapisu? Chiński programator TL866 ma w bazie te układy i też nim można je programować. Wielki szacun za szybkość z jaką się rozwijasz. Pamiętam jak naprawiałeś zasilacze, a teraz lecisz z takim grubym tematem. Boję się co będzie za 5 lat :) Ty i elektron to mega wysoki poziom.

    • @__MINT_
      @__MINT_  Год назад +2

      Nieee, GALe i PALCE można zaprogramować min. 100 razy, spokojnie wystarczy żeby metodą prób i błędów wgrać właściwy wsad. OTP do piachu!

    • @stoczwarty
      @stoczwarty Год назад

      @@__MINT_ Nie wiem jeszcze jak PALCE, ale te gale, które obsługuje Twój programator są w chinach dość tanie. Do mnie przyszła pierwsza dostawa 10 sztuk więc nie ma strachu, że po 100 wgraniach przestanie działać. Jak przestanę to wezmę następny :) :) :)

  • @stoczwarty
    @stoczwarty Год назад

    Świetna robota. Ja chciałem zrobić płytkę w weekend jak miałem czasu, ale w piątek na szybko robiłem sobie wydruki do matryc i pomyliłem kierunki (odbicia nie dałem). A wydawało mi się, że to sprawdzałem. No i wydrukowałem sobie matryce odwrotnie. Jutro w pracy sobie wydrukuję już poprawnie, ale nie wiem czy w tygodniu będę mieć czas się bawić w robienie płytki więc pewnie skończy się tak, że się tym zajmę w następny weekend. Natomiast świetną robotę zrobiłeś z pokazaniem tych czasów reakcji. To idealnie pokazuje dlaczego stosuje się dziś takie matryce bramek o wielkiej skali integracji zamiast procesorów. One nie tylko mają szybsze realne czasy przełączania, ale mogą robić równolegle w tym samym czasie to co procesorowi zajmuje powiedzmy jeden wątek. A ile będziesz mieć rdzeni w procesorze i wątków? Kilka, kilkanaście, może kilkadziesiąt w jakiś RISCach. A na FPGA można jednocześnie wykonywać przynajmniej kilkaset operacji logicznych w tym samym czasie. I to dosłownie w tym samym czasie czyli szybciej niż procesor na dwóch wątkach jednego rdzenia.

    • @__MINT_
      @__MINT_  Год назад +1

      Taki właśnie był zamysł, chciałem pokazać jaką przewagę programowalna logika ma nad prockami, a sam przy okazji zobaczyłem te czasy w praktyce

    • @__MINT_
      @__MINT_  Год назад +1

      Też raz mi się zdarzyło nie dać odbicia, ale kapnąłem się dopiero po wytrawianiu, teraz płytka leży i się kurzy jako przestroga, do czego może doprowadzić rutyna

    • @stoczwarty
      @stoczwarty Год назад

      @@__MINT_ Ja się zorientowałem na szczęście przed trawieniem, ale już po wywołaniu obrazu ścieżek :)

    • @stoczwarty
      @stoczwarty Год назад

      @@__MINT_ Wyło rewelacyjnie.

  • @dominikkrauze6812
    @dominikkrauze6812 Год назад

    Nie wiem co powiedzieć. Zatkało mnie....Mega!

  • @cyklop1977
    @cyklop1977 Год назад

    Zawsze mnie te gal-e interesowały bo często z nimi spotykam się przy retro komputerach 286/386/486 , karty vga isa itp

  • @melon0909
    @melon0909 Год назад

    Super materiał. Nie chcesz zrobić może zrobić programatora KBC? Kupiłbym, ale ceny są przesadzone.

    • @__MINT_
      @__MINT_  Год назад

      KBC? A co to za wynalazek

  • @satanistik666
    @satanistik666 Год назад

    Z tego co pamiętam to pinnode to węzły- jeżeli funkcja jest skomplikowana to czasem można użyć cel które normalnie obsługują wyjście jako wewnetrzny element struktury - w tedy są tam sygnały pośrednie, zwykle nie wyprowadzone z układu, ale tracimy wyjścia. Np w sterowaniu krokowca miałem 4 wyjścia licznika i 4 wyjścia licznik AND PWM.

    • @__MINT_
      @__MINT_  Год назад

      Dzięki za info, coś mi świtało ale nie byłem pewnien. Jak robiłem prescaler zegara do karty dźwiękowej to 6 wyjść działało jako licznik, mimo użycia pinnode sygnały dalej wychodziły z układu. Pewnie kwestia tego że GAL16V8 nie ma niezależnych OE w trybie zatrzasku

  • @kafka0021
    @kafka0021 Год назад

    Masz trochę tego sprzętu,mega

  • @Cyklonus
    @Cyklonus Год назад

    👍👍

  • @michasj9
    @michasj9 Год назад

    Czy na takich układach będzie możliwe zbudowanie niskopoziomowego (sprzętowego) emulatora konsoli Nintendo NES? Tak, żeby konsola była w pełni zgodna z oryginałem, czyli:
    -obsługiwała prawie wszystkie oryginalne kartridże i mappery (minimum 99% wszystkich gier),
    -generowała sygnał wizji i fonii w sposób identyczny, co oryginalna konsola (będzie potrzebna modulacja PWM i filtry dolnoprzepustowe,
    -obsługiwała oryginalne akcesoria (np. zapper, ROB, Family Basic i prawie wszystkie inne rozszerzenia - także minimum 99% wszystkich rozszerzeń).

    • @__MINT_
      @__MINT_  Год назад +1

      Każdy procek i jego peryferia są oparte na tranzystorach tworzących dyskretną logikę, a skoro układy z filmu są w stanie zastąpić zwykłe układy dyskretnej logiki, to odpowiedź brzmi tak. Ale ile tych scalaków byś potrzebował, i ile czasu byś musiał poświęcić na ich programowanie i projektowanie układu, to inna sprawa

  • @eR-MIK
    @eR-MIK Год назад

    Kawał dobrej nikomu niepotrzebnej roboty. Już w latach 90 były projekty programatorów GAL do samodzielnej budowy. Wystarczyło poszukac.

    • @__MINT_
      @__MINT_  Год назад +1

      A co z PALCE? To głównie dla nich robiłem programator, obsługę GALi miałem i bez niego. Z resztą to, czego się nauczyłem, to moje, a programatora z przejrzystym interfejsem którego nie trzeba instalować nie widziałem

  • @rafirafal
    @rafirafal Год назад +1

    Czy na takim ukladzie da sie zrealizowac przebieg prostokatny ktorego wypelnienie bedzie zalezalo od tego do ktorego wejscia ukladu podamy sygnal logicznej jedynki?
    Ps. Jakiej stacji lutowniczej uzywasz?

    • @__MINT_
      @__MINT_  Год назад +2

      Można, ale z niewielką rozdzielczością, i musisz podać zewnętrzne taktowanie, tylko wersja 22V10 pozwala na zrobienie generatora na kwarcu, podczas gdy inne wyjścia będą pracowały jako zatrzaski. W 16V8 i 20V8 albo wszystkie są zatrzaskami, albo żadne. A moja stacja to Yihua 8786D

  • @ostrygracz
    @ostrygracz Год назад

    Zacznij nas uczyć jak naprawiać różne rzeczy. To będzie syto :)

    • @__MINT_
      @__MINT_  Год назад +1

      Era napraw już była, głównie zasilaczy, zerknij na stare filmy

  • @eR-MIK
    @eR-MIK Год назад

    Atmega8 to żółw a na dodatek nie obsługuje zdarzeń. Zrób test na STM32 używając nie przerwań ale zdarzeń

    • @__MINT_
      @__MINT_  Год назад

      ATmega32, 8 jest w programatorze. Zawsze można dać coś mocniejszego o czasie reakcji zbliżonym do PLD, ale tu chodziło o pokazanie przewagi nad uC. Jakbym wjechał z FPGA to STM też nie ma szans

    • @eR-MIK
      @eR-MIK Год назад

      @@__MINT_ AVR Xmega też mają programowane bloki logiczne. Program można napisać albo zrobić to dobrze. Przykładowo WS2812 czy 1-Wire można sterować "machając pinem" albo używając UART. Oba rozwiązania zadziałają tyle, że pierwsze obciąża CPU w 100% a z UART może być prawie 0% gdy skorzysta się z DMA.

  • @mariuszkajstura6635
    @mariuszkajstura6635 Год назад

    Hmm, jak napisałeś program na tą ATmegę ? Korzystasz z pętli zamkniętej czy z przerwania ? Spróbuj porównać czasy reakcji ATmegi wykorzystującej do monitorowania wejścia pętlę, a potem przerwanie ? ...

    • @__MINT_
      @__MINT_  Год назад +1

      Pętla zamknięta, przerwaniem nigdy nie uzyskasz takich czasów, 300ns to raptem 6 cykli zegara

    • @__MINT_
      @__MINT_  Год назад +1

      Kod jest w 13:12

    • @mariuszkajstura6635
      @mariuszkajstura6635 Год назад

      @@__MINT_ Masz racje, same wejście w przerwanie to ok 5 cykli( przyjęcie przerwania i odłożenie na stosie adresu powrotu ), jeden cykl przy 16MHz zegara to 62,5ns. 62,5ns x 5 = 312,5ns a to dopiero początek przy przerwaniu zostaje do tego jeszcze obsłużenie tego przerwania. Tak z ciekawości zapytałem. ;)
      Ps. Gratuluje fajnego oscyloskopu. :)

    • @__MINT_
      @__MINT_  Год назад +1

      Zegar mam 20MHz, te 300ns czasu reakcji to i tak najlepszy z możliwych wyników, bo w praktyce w tej pętli będzie coś jeszcze, a nie tylko sprawdzanie stanu pinu. Ostatnio mierzyłem czas obsługiwania przerwania w innym projekcie, ten sam uC ale zegar 24MHz, chodziło o przyjęcie bajtu poprzez SPI i dorzucenie go do bufora, czas reakcji miałem chyba 800ns, a wykonanie kodu zajmowało 1us, to taka ciekawostka

    • @mariuszkajstura6635
      @mariuszkajstura6635 Год назад +1

      @@__MINT_ Dzięki za film i info, mam zamiar trochę poćwiczyć z GAL'em głównie testowanie zachowań bramek wysterowanie przebiegiem trójkątnym i poobserwowanie na oscyloskopie jak one przełączają wyjścia. Tak z ciekawości ;)
      Ps. Projekt jest super, fajnie że masz jeszcze ochotę coś publikować. Gratuluje samozaparcia w pokonywaniu napotykanych przeszkód do wyznaczonego celu, czasem "ośli upór" góruje nad inteligencją. Nabywane po wyboistej drodze umiejętności z czasem okazują się cenniejsze i trwalsze od złota.

  • @eR-MIK
    @eR-MIK Год назад

    Dlaczego nie użyłeś podstawki ZIF?

    • @__MINT_
      @__MINT_  Год назад

      Taki był plan, ale podstawka precyzyjna wystarczyła. Nie zużywa się, układ się nie klinuje, programator jest mniejszy i tańszy. A na płycie jest tyle miejsca, że podstawkę ZIF można w razie czego zmieścić

  • @bartobirtobartobirto00
    @bartobirtobartobirto00 Год назад

    jakiej lutownicy i jakiego hota aira używasz?

  • @NANO-SERWIS.MAREK-DASZKE
    @NANO-SERWIS.MAREK-DASZKE Год назад

    Gdzie kupić teraz Gal-e ??
    Jakaś masakra.

    • @__MINT_
      @__MINT_  Год назад

      Na allegro jakieś były, tak poza tym to nie szukałem, ale cienko z nimi

    • @timwip7787
      @timwip7787 Месяц назад

      Atf16v - spokojnie w TME

    • @__MINT_
      @__MINT_  Месяц назад

      Niedawno dodałem obsługę ATF, więc bez zawahania można kupować

  • @ShigeruWarioMiyamoto
    @ShigeruWarioMiyamoto 7 месяцев назад

    Ziomek, masz łeb jak sklep, tacy geniusze jak ty albo krzysiobal to rzadko kiedy występują w naturze.

  • @piotrolszowski8389
    @piotrolszowski8389 7 месяцев назад

    Jak opisać w CUPLu bufor 3 stanowy np ten z SN74244 ?

    • @__MINT_
      @__MINT_  7 месяцев назад +1

      PIN [19..12] = [Q7..Q0];
      PIN[2..9] = [I0..I7];
      PIN 1 = N_OE;
      [Q0..Q7].OE = N_OE;
      [Q0..Q7] = [I0..I7];
      Mogę się mylić, dawno w tym nie pisałem

    • @__MINT_
      @__MINT_  7 месяцев назад +1

      To dla 16V8, żeby wieć wyjścia aktywne z N_OE na stanie niskim, wystarczy zamienić tamtą linijkę na [Q0..Q7].OE = !N_OE

    • @piotrolszowski8389
      @piotrolszowski8389 7 месяцев назад

      Dzięki wielkie. Działa na 22v10 👍👍👍

    • @piotrolszowski8389
      @piotrolszowski8389 7 месяцев назад

      Ciekaw jestem czy przy wyłączonych wyjściach na 100% jest tam stan wysokiej impedancji.
      LEDy do wyjść gala podłączone są anodą przez rezystry. Przy stanie wysokim świecą, przy niskim nie,wiadomo. Jak wyłączę "bufory",diody delikatnie się świecą. Wyczytałem w nocie, że w 22v10 są aktywne pullapy ,więc chyba jest ten trzeci stan.

  • @The2ml
    @The2ml Месяц назад

    Możesz podać konkretne typy tranzystorów?

    • @__MINT_
      @__MINT_  Месяц назад

      Których tranzystorów?

    • @The2ml
      @The2ml Месяц назад

      @@__MINT_ n-mos oraz p-mos

    • @__MINT_
      @__MINT_  Месяц назад

      Sam nie wiem, co to za tranzystory, jakieś SMD z wylutu. Tam nie potrzeba konkretnych parametrów