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
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
@@__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?
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
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.
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.
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 :)
Ś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_ 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 :) :) :)
Ś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.
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
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
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.
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
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?
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
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_ 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. :)
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
@@__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.
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ń).
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
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
@@__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.
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ć
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.