Thread View: pl.misc.elektronika
7 messages
7 total messages
Started by Atlantis
Tue, 02 Sep 2025 15:39
Pamięć SRAM nie działa z Z80182
Author: Atlantis
Date: Tue, 02 Sep 2025 15:39
Date: Tue, 02 Sep 2025 15:39
50 lines
3709 bytes
3709 bytes
Próbuję właśnie uruchomić własną konstrukcję - komputerek pod CP/M (docelowo także MP/M), zbudowany na relatywnie niszowym CPU od Ziloga, Z80182. W wielkim skrócie jest to Z180 z kilkoma dodatkowymi bajerami. https://www.zilog.com/docs/z180/z80182.pdf Na chwilę obecną udało mi się sprawić, że płytka wykonuje kod z flasha. Jestem w stanie pisać do wewnętrznych rejestrów (na oscyloskopie widać wpływ np. po ustawieniu wait-state'ów) i zmieniać stan pinów GPIO. Utknąłem natomiast na próbach skorzystania z RAM-u, przez co nie mogę nawet skorzystać ze stosu. Pamięć SRAM (AS6C4008) korzysta z wbudowanego w układ dekodera adresów, a więc linia /OE jest podłączona do wyjścia /RAMCS. Rejestry konfigurujące dekoder są ustawione poprawnie, bo jeśli próbuje pisać pod adres odpowiadający pamięci RAM, na linii RAMCS pojawia się stan niski. Nie przechodzi natomiast test polegający na zapisaniu wartości (np. 0x55) do komórki w ramie, ponownego odczytu i porównania wartości. Jeśli próbuję korzystać ze stosu (np. używając instrukcji CALL), program się wysypuje. Próbowałem już następujących rzeczy: 1. Ustawiałem różne wartości wait-state'ów dla RAM-u. 2. Tymczasowo podmieniłem kwarc na wolniejszy, obniżając zegar systemowy z 12,5 MHz do 4 MHz. 3. Sprawdziłem na oscyloskopie stany linii w momencie zapisu do RAM-u. Na liniach adresowych i danych stabilne stany pojawiają się przed aktywacją /CS, a ich wartości odpowiadają temu, co chcę zapisać i gdzie. Sygnał /WR pojawia się po /CS i znika razem z nim. 4. Sprawdziłem na oscyloskopie stany linii w momencie odczytu. Linie /CS i /RD pojawiają się właściwie jednocześnie. Stany linii adresowych pasują do tego, co chcę odczytać. Sytuacja z liniami danych jest dziwniejsza - linie, które powinny być w stanie wysokim wyglądają normalnie. Natomiast linie niskie wyglądają w momencie aktywacji CS jak grupa równoległych przebiegów - coś jak linie w stanie wysokiej impedancji (https://www.speccy.pl/forum/index.php?action=dlattach;topic=7902.0;attach=28900;image) 5. Myślałem, że mam do czynienia z uszkodzeniem pamięci, więc spróbowałem innego egzemplarza. Niestety zachowuje się identycznie. Pamięci są z dobrego źródła (TME). Na wszelki wypadek zamówiłem więcej, jednak nie sądzę, żeby to coś mi dało. 6. Testowo spróbowałem użyć pinu MRD (sygnał generowany wewnętrznie jako /MRD = /RD AND /MREQ). Na chwilę obecną kończą mi się pomysły - niby mógłbym jeszcze spróbować podmienić CPU na inny egzemplarz, ale nic nie wskazuje na jego uszkodzenie... Ktoś ma jakiś pomysł co do możliwej przyczyny? Czego jeszcze mógłbym spróbować?
Re: Pamięć SRAM nie działa z Z80182
Author: Atlantis
Date: Wed, 03 Sep 2025 07:25
Date: Wed, 03 Sep 2025 07:25
13 lines
1866 bytes
1866 bytes
Ok, udało mi się ustalić jedną rzecz. Wygląda na to, że wystąpienia problemu z zapisem/odczytem do/z RAM-u jest uzależnione od typu użytego w projekcie flasha. Gdy korzystałem z ST29F040 nie działało wcale, natomiast w przypadku pamięci Hyundai HY29F040 część operacji zapis/odczyt się udaje. Powiedziałbym, że jakieś 50%. Oczywiście w takiej sytuacji nadal nie mogę korzystać ze stosu. Jest to o tyle dziwne, że wcześniej próbowałem już obniżenia zegara systemowego (z 12,5 MHz do 4 MHz) i dodawania wait-state'ów dla operacji na flashu i RAM-ie. Zresztą, nawet przy zegarze 12,4 MHz relatywnie współczesne pamięci powinny zwalniać magistralę na czas, przed kolejną transmisją. Tymczasem wygląda na to, że mam do czynienia z jakimś konfliktem na magistrali...
Re: Pamięć SRAM nie działa z Z80182
Author: J.F
Date: Wed, 03 Sep 2025 09:48
Date: Wed, 03 Sep 2025 09:48
19 lines
2006 bytes
2006 bytes
On Wed, 3 Sep 2025 09:25:01 +0200, Atlantis wrote: > Ok, udało mi się ustalić jedną rzecz. > Wygląda na to, że wystąpienia problemu z zapisem/odczytem do/z RAM-u > jest uzależnione od typu użytego w projekcie flasha. Gdy korzystałem z > ST29F040 nie działało wcale, natomiast w przypadku pamięci Hyundai > HY29F040 część operacji zapis/odczyt się udaje. Powiedziałbym, że jakieś > 50%. Oczywiście w takiej sytuacji nadal nie mogę korzystać ze stosu. > Jest to o tyle dziwne, że wcześniej próbowałem już obniżenia zegara > systemowego (z 12,5 MHz do 4 MHz) i dodawania wait-state'ów dla operacji > na flashu i RAM-ie. > > Zresztą, nawet przy zegarze 12,4 MHz relatywnie współczesne pamięci > powinny zwalniać magistralę na czas, przed kolejną transmisją. Tymczasem > wygląda na to, że mam do czynienia z jakimś konfliktem na magistrali... A dekoder adresów masz prawidłowy? Może flash wysyła dane razem z RAM i wygrywa silniejszy? J.
Re: Pamięć SRAM nie działa z Z80182
Author: Atlantis
Date: Wed, 03 Sep 2025 12:03
Date: Wed, 03 Sep 2025 12:03
23 lines
2394 bytes
2394 bytes
On 3.09.2025 11:48, J.F wrote: > A dekoder adresów masz prawidłowy? > Może flash wysyła dane razem z RAM i wygrywa silniejszy? To normalnie byłoby moim głównym założeniem, ale nie tym razem. Dekoder adresów pamięci jest jednym z peryferiów Z80182. Układ ma dwa piny: /ROMCS i /RAMCS. Za pomocą zestawu trzech rejestrów można ustawiać zakresy adresów: górna granica ROM, dolne granica RAM i górna granica RAM. Jest też bit konfiguracyjny, który pozwala zupełnie wyłączyć obsługę ROM-u. Obowiązuje zasada, że ROM (o ile jest aktywny) ma priorytet nad RAM-em, nie ma więc możliwości, żeby obydwie linie CS były aktywne jednocześnie. Domyślnie, po resecie ROM zajmuje całą przestrzeń adresową. Ja zmodyfikowałem konfigurację w ten sposób, że od 0x0000 do 0x7FFF mamy ROM, a od 0x8000-0xFFFF RAM. I faktycznie po takim ustawieniu adresów pojawia się aktywność na linii /RAMCS, gdy próbuję operować na adresie powyżej 0x8000. Bardziej zastanawiam się czy przypadkiem którejś pamięci (raczej flashowi) uwolnienie magistrali nie zajmuje za dużo czasu po deaktywacji linii CS i koleje urządzenie trafia na ciągle aktywne linie danych. Z drugiej strony to tylko 12,5 MHz...
Re: Pamięć SRAM nie działa z Z80182
Author: J.F
Date: Wed, 03 Sep 2025 15:58
Date: Wed, 03 Sep 2025 15:58
31 lines
2347 bytes
2347 bytes
On Wed, 3 Sep 2025 14:03:11 +0200, Atlantis wrote: > On 3.09.2025 11:48, J.F wrote: >> A dekoder adresów masz prawidłowy? >> Może flash wysyła dane razem z RAM i wygrywa silniejszy? > > To normalnie byłoby moim głównym założeniem, ale nie tym razem. Dekoder > adresów pamięci jest jednym z peryferiów Z80182. Układ ma dwa piny: > /ROMCS i /RAMCS. Za pomocą zestawu trzech rejestrów można ustawiać > zakresy adresów: górna granica ROM, dolne granica RAM i górna granica > RAM. Jest też bit konfiguracyjny, który pozwala zupełnie wyłączyć > obsługę ROM-u. Obowiązuje zasada, że ROM (o ile jest aktywny) ma > priorytet nad RAM-em, nie ma więc możliwości, żeby obydwie linie CS były > aktywne jednocześnie. Takie sprytne. Ale tak na oko: /CE pamięci trzeba podłączyć do (/RAMCS or /MERQ), no chyba, że RAMCS już zawiera ten /MERQ, /OE pamięci podłączamy do /RD /WE pamięci podłączamy do /WR > Bardziej zastanawiam się czy przypadkiem którejś pamięci (raczej > flashowi) uwolnienie magistrali nie zajmuje za dużo czasu po deaktywacji > linii CS i koleje urządzenie trafia na ciągle aktywne linie danych. Z > drugiej strony to tylko 12,5 MHz... A nawet 4MHz jak pisałeś. J.
Re: Pamięć SRAM nie działa z Z80182
Author: Atlantis
Date: Wed, 03 Sep 2025 16:31
Date: Wed, 03 Sep 2025 16:31
33 lines
2648 bytes
2648 bytes
On 3.09.2025 17:58, J.F wrote: > /CE pamięci trzeba podłączyć do (/RAMCS or /MERQ), no chyba, że RAMCS > już zawiera ten /MERQ, Tak. Sygnały RAMCS i ROMCS są generowane z uwzględnieniem MREQ. Dostępne są też sygnały MRD i MWR, (RD/WR z MREQ) ale z nich nie korzystam, bo dostępne są na multipleksowanych pinach, których potrzebuję do alternatywnych funkcji. Na magistrali systemowej mam standardowe RD/WR. > /OE pamięci podłączamy do /RD > /WE pamięci podłączamy do /WR Tak, dokładnie w ten sposób mam to podłączone. Chyba znalazłem przyczynę, a przynajmniej jedną z przyczyn. Okazuje się, że miałem przerwę na linii ROMCS - najprawdopodobniej niekontaktujący lut na przelotce. I to niekontaktujący w ten sposób, że akurat dał prawidłowy odczyt, gdy robiłem tekst ciągłości multimetrem. Wygląda na to, że linia ROMCS wisząc w powietrzu był interpretowana przez flash jako stan niski, dzięki czemu program się wykonywał. Jednak w momencie korzystania z RAM-u dochodziło do konfliktu na magistrali. Poprawiłem to połączenie i zniknęły "brzydkie" stany z linii danych w momencie korzystania z pamięci RAM - teraz mam już ładne, jednoznaczne stany niskie lub wysokie. Niemniej program korzystający z flasha nadal nie chce działać. Możliwe, że mam jeszcze inny problem. Mam tylko nadzieję, że nie uszkodziłem pamięci...
Re: Pamięć SRAM nie działa z Z80182
Author: Atlantis
Date: Wed, 03 Sep 2025 17:37
Date: Wed, 03 Sep 2025 17:37
9 lines
1677 bytes
1677 bytes
On 3.09.2025 18:31, Atlantis wrote: > Niemniej program korzystający z flasha nadal nie chce działać. Możliwe, > że mam jeszcze inny problem. Mam tylko nadzieję, że nie uszkodziłem > pamięci... Ok, problem ze stosem okazał się mieć banalne podłoże - dałem include w złym miejscu w stosunku do dyrektywy ORG, przez co funkcja do której robiłem CALL z osobnego pliku znajdowała się pod adresem niemającym sensu.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads