Komputer 8-bitowy
Moderatorzy: gsmok, tszczesn, Romekd, Einherjer, OTLamp
-
- 3125...6249 postów
- Posty: 4013
- Rejestracja: sob, 3 czerwca 2006, 21:51
- Lokalizacja: Poznań
Re: Komputer 8-bitowy
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.
-
- 1875...2499 postów
- Posty: 2037
- Rejestracja: ndz, 20 lipca 2008, 12:06
- Lokalizacja: Seattle, WA
Re: Komputer 8-bitowy
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
-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
-
- moderator
- Posty: 11235
- Rejestracja: wt, 12 sierpnia 2003, 09:14
- Lokalizacja: Otwock
Re: Komputer 8-bitowy
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.
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.
-
- 3125...6249 postów
- Posty: 4013
- Rejestracja: sob, 3 czerwca 2006, 21:51
- Lokalizacja: Poznań
Re: Komputer 8-bitowy
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.
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.
-
- moderator
- Posty: 11235
- Rejestracja: wt, 12 sierpnia 2003, 09:14
- Lokalizacja: Otwock
Re: Komputer 8-bitowy
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.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).
-
- 3125...6249 postów
- Posty: 4013
- Rejestracja: sob, 3 czerwca 2006, 21:51
- Lokalizacja: Poznań
Re: Komputer 8-bitowy
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.
-
- 3125...6249 postów
- Posty: 4013
- Rejestracja: sob, 3 czerwca 2006, 21:51
- Lokalizacja: Poznań
Re: Komputer 8-bitowy
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ę:
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.
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.
-
- 1875...2499 postów
- Posty: 2301
- Rejestracja: pn, 1 stycznia 2007, 23:18
- Lokalizacja: Trzcianka/Poznań
Re: Komputer 8-bitowy
573 przepisuje D na Q dopóki LE jest H i zatrzaskuje, gdy spadnie na L.
Na zboczu działa 574.
Na zboczu działa 574.
Tomek
-
- 3125...6249 postów
- Posty: 4013
- Rejestracja: sob, 3 czerwca 2006, 21:51
- Lokalizacja: Poznań
Re: Komputer 8-bitowy

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.
-
- 1875...2499 postów
- Posty: 2301
- Rejestracja: pn, 1 stycznia 2007, 23:18
- Lokalizacja: Trzcianka/Poznań
Re: Komputer 8-bitowy
Czy ta szpilka jest powtarzalna? Czy robisz coś z OE? Jaką częstotliwość próbkowania ma analizator?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)
A to nie wynika z czasu dostępu do ROM?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.
Tomek
-
- 3125...6249 postów
- Posty: 4013
- Rejestracja: sob, 3 czerwca 2006, 21:51
- Lokalizacja: Poznań
Re: Komputer 8-bitowy
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.
-
- 3125...6249 postów
- Posty: 4013
- Rejestracja: sob, 3 czerwca 2006, 21:51
- Lokalizacja: Poznań
Re: Komputer 8-bitowy
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.
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.
-
- 3125...6249 postów
- Posty: 4013
- Rejestracja: sob, 3 czerwca 2006, 21:51
- Lokalizacja: Poznań
Re: Komputer 8-bitowy
Chciałbym się podzielić długo wyczekiwanym sukcesem: oto poprawny sygnał VGA wygenerowany za pomocą pamięci ROM:
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.
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.
-
- 3125...6249 postów
- Posty: 4013
- Rejestracja: sob, 3 czerwca 2006, 21:51
- Lokalizacja: Poznań
Re: Komputer 8-bitowy
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.
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.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
-
- 1875...2499 postów
- Posty: 2123
- Rejestracja: pn, 10 sierpnia 2009, 17:47
- Lokalizacja: Gdańsk
Re: Komputer 8-bitowy
https://www.epanorama.net/circuits/vga2 ... lntsc.html
Konwerter VGA - PAL/NTSC
Nie wiem jak jest z obecnie z dostępnością AD722 .
Konwerter VGA - PAL/NTSC
Nie wiem jak jest z obecnie z dostępnością AD722 .