Komputer 8-bitowy

Komputery retro, konsole do gier itd.

Moderatorzy: gsmok, tszczesn, Romekd, Einherjer, OTLamp

Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Im bardziej się na tym zastanawiam, tym bardziej dochodzę do wniosku że takie szpile są nieuniknione w takim układzie. Chyba po prostu puszczę wszystkie wyjścia z ROMu przez rejestr żeby wyczyścić sygnały.
Awatar użytkownika
TooL46_2
1875...2499 postów
1875...2499 postów
Posty: 2037
Rejestracja: ndz, 20 lipca 2008, 12:06
Lokalizacja: Seattle, WA

Re: Komputer 8-bitowy

Post autor: TooL46_2 »

Jestem pewien, ze widziałeś ale wklejam dla innych którzy mogli nie widzieć: https://www.youtube.com/watch?v=l7rce6IQDWs&t=20s
Pozdr,
-Tomek Drabas
________
‎"One should not pursue goals that are easily achieved. One must develop an instinct for what one can just barely achieve through one's greatest efforts."
—Albert Einstein

tomdrabas.com
Awatar użytkownika
tszczesn
moderator
Posty: 11235
Rejestracja: wt, 12 sierpnia 2003, 09:14
Lokalizacja: Otwock

Re: Komputer 8-bitowy

Post autor: tszczesn »

Nie pokazałeś schematu. Rozumiem, że liczniki połączyłeś szeregowo, taktujesz jest tym generatorem 6MHz wyjścia liczników podajesz na wejścia adresowe pamięci a wyjściem układu są wyjścia pamięci? Wtedy czas ustalania się adresu jest długi, po każdy krok licznika propaguje się po kolei przez wszystkie liczniki, na wejściach adresowych pamięci pojawiają się stany pośrednie, na wyjściach w związku z tym też.

W takiej sytuacji zamiast 4040 użyj liczników synchronicznych z wyjściem i wejściem przeniesienia, np. 161, wtedy liczniki zmienią stan wszystkich wyjść w tym samym momencie, nie będzie stanów nieustalonych. A dla pewności na wyjściu pamięci możesz dać bufor z rejestrem, np '374 taktowany zboczem przeciwnym do liczników, zatrzaskujący ci wyjście pamięci w stanie stabilnym.
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Przepraszam, ostatnio mało sypiam i nie miałem siły zrobić schematu, ale idea działania układu jest taka jak opisałeś.
Problem występuje również przy użyciu liczników synchronicznych (próbowałem z 74LS590), i to bez kaskadowania liczników, nawet jeśli używam tylko jednego.
Doszedłem do wniosku, że przez pojemności połączeń czy samych wejść adresowych pamięci stan poszczególnych bitów adresu nie ustala się w tym samym momencie, stąd wyjścia z pamięci mogą przechodzić przez rozmaite stany pośrednie w czasie ustalania adresu. Ten tok rozumowania znajduje potwierdzenie w samej karcie katalogowej pamięci 28F010 (i zresztą każdej innej), która to karta podaje wymagany minimalny czas między podaniem adresu a odczytem danych.
Na marginesie, mam niejasne i niepoparte praktyką przeczucie, że podobne problemy można też napotkać budując układ realizujący jakąś skomplikowaną funkcję kombinatoryczną z elementów dyskretnych (ale one są szybsze niż ROM, więc może ten problem występuje w mniejszym nasileniu).

Ten wątek https://www.edaboard.com/threads/how-to ... put.29548/ opisuje problem bardziej szczegółowo, proponowanym rozwiązniem jest użycie rejestrów do zatrzaśnięcia poprawnego stanu układu. W moim przypadku liczniki są wyzwalane zboczem opadającym na wejściu zegarowym, mogę więc użyć 74HCT573 żeby zatrzasnąć wyjście na kolejnym zboczu narastającym zegara. Pewnie spróbuję tego rozwiązania w przyszłym tygodniu i dam znać czy działa, jeśli nie to czeka mnie bliższa znajomość z ośmiowejściowymi bramkami NAND.
Awatar użytkownika
tszczesn
moderator
Posty: 11235
Rejestracja: wt, 12 sierpnia 2003, 09:14
Lokalizacja: Otwock

Re: Komputer 8-bitowy

Post autor: tszczesn »

jethrotull pisze: czw, 16 grudnia 2021, 13:29 Na marginesie, mam niejasne i niepoparte praktyką przeczucie, że podobne problemy można też napotkać budując układ realizujący jakąś skomplikowaną funkcję kombinatoryczną z elementów dyskretnych (ale one są szybsze niż ROM, więc może ten problem występuje w mniejszym nasileniu).
Owszem, o nosi to nazwę wyścigów. Odpowiednio projektując układ można ten efekt usunąć, ale już nie pamiętam jak. Dlatego dobrym rozwiązaniem są układy synchroniczne, (gdzie wejścia zegarowe nie są sterowane z układów kombinacyjnych) - czas między zboczami zegara daje czas na ustabilizowanie się układu.
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Otóż to, niestety w moim przypadku muszę taktować licznik Y a także resetować oba licznika za pomocą sygnałów pochodzących z wyjść ROMu (czyli kombinacyjnych). Mam nadzieję że dodanie rejestrów "uzdrowi" ten układ.
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Moje próby użycia rejestru do wyczyszczenia przebiegów spełzły na niczym. Może ktoś będzie potrafił mnie oświecić i powiedzieć na co ja właściwie patrzę:
registeredVGA.png
Sygnały od góry do dołu to: wejście na zatrzask '573 (zatrzaskiwany zboczem narastającym), odpowiadające wyjście z tegoż zatrzasku, sygnał zegarowy na wejściu LE zatrzasku.

Jak widać na "markerach" (pionowe linie oznaczone 0 i 1), przepisywanie stanu z wejścia na wyjście nie następuje w momencie pojawienia się zbocza narastającego na wejściu LE zatrzasku, a jakieś 300ns później.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
Tomasz Gumny
1875...2499 postów
1875...2499 postów
Posty: 2301
Rejestracja: pn, 1 stycznia 2007, 23:18
Lokalizacja: Trzcianka/Poznań

Re: Komputer 8-bitowy

Post autor: Tomasz Gumny »

573 przepisuje D na Q dopóki LE jest H i zatrzaskuje, gdy spadnie na L.
Na zboczu działa 574.
Tomek
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

:oops: no tak, wiedziałem że przegapiam coś bardzo głupiego...
Tak czy owak, to co obserwuję na analizatorze nie ma dla mnie sensu:
- na wyjściu zatrzasku są stany, których w ogóle nie ma na wejściu (zbocze opadające trzeciego pełnego okresu zegara na screenshocie)
- stany nieustalone na wyjściu ROMu pojawiają się nie krótko po zboczach taktujących liczniki, kiedy to zmieniają one stan, tylko kilkaset ns później.
Awatar użytkownika
Tomasz Gumny
1875...2499 postów
1875...2499 postów
Posty: 2301
Rejestracja: pn, 1 stycznia 2007, 23:18
Lokalizacja: Trzcianka/Poznań

Re: Komputer 8-bitowy

Post autor: Tomasz Gumny »

jethrotull pisze:- na wyjściu zatrzasku są stany, których w ogóle nie ma na wejściu (zbocze opadające trzeciego pełnego okresu zegara na screenshocie)
Czy ta szpilka jest powtarzalna? Czy robisz coś z OE? Jaką częstotliwość próbkowania ma analizator?
jethrotull pisze:- stany nieustalone na wyjściu ROMu pojawiają się nie krótko po zboczach taktujących liczniki, kiedy to zmieniają one stan, tylko kilkaset ns później.
A to nie wynika z czasu dostępu do ROM?
Tomek
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Szpilki są semi-powtarzalne, ale nie dokładnie powtarzalne. OE mam włączone na stałe. Analizator ma cześtotliwość 25MHz wobec 1.5MHz częstotliwości zegara. Czas dostępu do pamięci to 120ns, szpilki się pojawiają nawet 300ns po podaniu adresu.
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Zacząłem od zera: włożyłem w płytkę stykową oscylator kwarcowy, jeden licznik synchroniczny '590 i ROM. Kwarcem taktowałem licznik, wyjściami licznika adresowałem ROM. Na wyjściu ROMu obserwowałem znajome szpilki.

Następnie dodałem 74LS74, który jest przerzutnikiem D wyzwalanym zboczem. Dodałem inwerter żeby wyzwalać przerzutnik zboczem opadającym (licznik jest wyzwalany rosnącym), i podłączyłem wejście przerzutnika do wyjścia ROMu. Wreszcie wszytsko działa poprawnie, szpilki poznikały z sygnału wyjściowego.

Teraz muszę tylko od dorzucić drugi licznik (do liczenia współrzędnej Y) i mieć nadzieję, że nadal wszystko będzie działać. Dziękuję wszystkim za porady i wsparcie.
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Chciałbym się podzielić długo wyczekiwanym sukcesem: oto poprawny sygnał VGA wygenerowany za pomocą pamięci ROM:
VGA signal.png
Od góry: synchronizacja pionowa, synchronizacja pozioma, blanking, i dane obrazu.

Przy okazji wyjaśnię powody moich niepowodzeń: otóż zastosowałem pierwotnie liczniki CD4040, które są wyjątkowo wolne (przynajmniej przy napięciu zasilania 5V) i nie chcą zliczać nawet przy częstotliwości 6MHz. Obecnie, zastąpiłem je licznikami 74HCT4040, które są funkcjonalnie identyczne, ale zliczają poprawnie nawet przy 25MHz, czyli mojej docelowej częstotliwości roboczej (wystarczyłoby mi 12.5MHz, bo będę miał rozdzielczość tylko 320x240, ale nie mogłem znaleźć takiego kwarcu).

Lista części jest krótka:
- 74HCT4040 x2
- 74LS374
- 28F010

Zamieszczę schemat jak dodam pamięć obrazu (obecnie obraz - tylko jeden zahardkodowany - jest generowany przez tę samą pamięć co sygnały synchronizacji) i generator znaków. Ten ostatni wydaje mi się dość ciekawy w zamyśle: otóż zamiast używać typowego rozwiązania z rejestrem przesuwnym, będę wypluwał dane obrazu bezpośrednio z ROMu generatora znaków, używając tylko jednego bitu danych. To mi pozwoli oszczędzić na rejestrze i logice jego ładowania, kosztem ośmiokrotnego zwiększenia wielkości ROMu koniecznego do generowania znaków - ale to nie problem bo najmniejsze pamięci jakie mam i tak mają 32KB.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
jethrotull
3125...6249 postów
3125...6249 postów
Posty: 4013
Rejestracja: sob, 3 czerwca 2006, 21:51
Lokalizacja: Poznań

Re: Komputer 8-bitowy

Post autor: jethrotull »

Działa nie tylko na analizatorze logicznym.
Musiałem iśc do pracy żeby przetestować, okazuje się że mój telewizor nie ma wejścia VGA a monitora nie posiadam. Pewnie skończy się tak, że zamiast karty VGA zbuduję kartę PAL.
IMG_20220110_114409804.jpg
IMG_20220110_114414108.jpg
IMG_20220110_114417534.jpg
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
CHOPIN66
1875...2499 postów
1875...2499 postów
Posty: 2123
Rejestracja: pn, 10 sierpnia 2009, 17:47
Lokalizacja: Gdańsk

Re: Komputer 8-bitowy

Post autor: CHOPIN66 »

https://www.epanorama.net/circuits/vga2 ... lntsc.html
Konwerter VGA - PAL/NTSC
Nie wiem jak jest z obecnie z dostępnością AD722 .