-
11. Data: 2025-04-23 20:51:39
Temat: Re: Problem z dekoderem adresów
Od: Atlantis <m...@w...com>
On 19.04.2025 09:53, Janusz wrote:
> No to pozostaje ci tylko podłączyć jakiś analizator stanów i analizować
> to adresowanie i na czym się wiesza, może potem na tej podstawie napisać
> kawałek programu żeby sie w kółko kręcił i dał możliwość dokładnego
> zbadania zależności oscylem.
Ok, kilka prób z użyciem oscyloskopu faktycznie wyjaśniło sprawę.
Okazuje się, że miałem do czynienia z mieszanką dwóch przyczyn.
Pierwsza była banalna - zamieniłem miejscami sygnały A15 i SHADOW_ROM na
wejściach 74139, przez do dekoder generował niewłaściwe sekwencje
sygnałów CS dla pamięci, co prowadziło do konfliktu po ustawieniu
SHADOW_ROM w stanie wysokim.
Jednak samo to nie rozwiązało problemu, bo jak się okazuje była jeszcze
druga przyczyna, faktycznie związana z timingami. Układ zaczął działać
dopiero wtedy, gdy zsynchronizowałem sygnał CS portu 74273 (generującego
SHADOW_ROM) z zegarem systemowym, zatrzaskując go w flip-flopie. Było to
relatywnie proste do realizacji, bo tę część logiki miałem
zaimplementowaną w GAL-u.
Teraz zabrałem się za wprowadzanie podobnej modyfikacji w starszej
wersji projektu na 8080. Tym razem wejścia 74139 są podłączone
prawidłowo (sprawdzone wizualnie i za pomocą oscyloskopu) ale układ
również nie działa, wywalając się po skoku do załadowanego CP/M-a.
Podejrzewam, że to też jakaś wersja problemów z timingiem przy pisaniu
do portu. Tym razem port jest zrealizowany na 74S412 (polski klon 8212).
Sterowanie portem odbywa się w następujący sposób:
1. Pin MD podciągnięty do VCC
2. Wejście DS1 podłączone do IO_WR
3. Wejście DS2 podłączone do zanegowanego wyjścia dekodera adresów I/O
(74138)
4. Wejścia DI0..DI7 do magistrali systemowej.
5. Wyjścia DO0..DO7 tam, gdzie są potrzebne. ;)
Zastanawiam się czy i tym razem nie opóźnić trochę sygnału DS2, przez
zatrzaśnięcie go w 7474 sygnałem zegara systemowego.
Tylko dlaczego w ogóle mam ten problem? Czy przypadkiem w 8080 nie
powinienem mieć już stabilnej nowej wartości na liniach danych, gdy na
szynie adresowej pojawia się adres, a linia IO_WR przechodzi w stan niski?
-
12. Data: 2025-04-24 11:10:24
Temat: Re: Problem z dekoderem adresów
Od: Janusz <j...@o...pl>
W dniu 23.04.2025 o 20:51, Atlantis pisze:
> Czy przypadkiem w 8080 nie powinienem mieć już stabilnej nowej wartości
> na liniach danych, gdy na szynie adresowej pojawia się adres, a linia
> IO_WR przechodzi w stan niski?
Myślę że dopiero po ustawieniu io_wr na niski będzie stabilna wartość na
data, wcześniej może być różnie, opóźnij ten DS2 i zobacz co sie stanie.
--
Janusz
-
13. Data: 2025-04-24 16:31:26
Temat: Re: Problem z dekoderem adresów
Od: "J.F" <j...@p...onet.pl>
On Wed, 23 Apr 2025 20:51:39 +0200, Atlantis wrote:
> On 19.04.2025 09:53, Janusz wrote:
>> No to pozostaje ci tylko podłączyć jakiś analizator stanów i analizować
>> to adresowanie i na czym się wiesza, może potem na tej podstawie napisać
>> kawałek programu żeby sie w kółko kręcił i dał możliwość dokładnego
>> zbadania zależności oscylem.
>
> Ok, kilka prób z użyciem oscyloskopu faktycznie wyjaśniło sprawę.
> Okazuje się, że miałem do czynienia z mieszanką dwóch przyczyn.
> Pierwsza była banalna - zamieniłem miejscami sygnały A15 i SHADOW_ROM na
> wejściach 74139, przez do dekoder generował niewłaściwe sekwencje
> sygnałów CS dla pamięci, co prowadziło do konfliktu po ustawieniu
> SHADOW_ROM w stanie wysokim.
>
> Jednak samo to nie rozwiązało problemu, bo jak się okazuje była jeszcze
> druga przyczyna, faktycznie związana z timingami. Układ zaczął działać
> dopiero wtedy, gdy zsynchronizowałem sygnał CS portu 74273 (generującego
> SHADOW_ROM) z zegarem systemowym, zatrzaskując go w flip-flopie. Było to
czekaj ... 74273 nie ma CS.
373 ?
> relatywnie proste do realizacji, bo tę część logiki miałem
> zaimplementowaną w GAL-u.
>
> Teraz zabrałem się za wprowadzanie podobnej modyfikacji w starszej
> wersji projektu na 8080. Tym razem wejścia 74139 są podłączone
> prawidłowo (sprawdzone wizualnie i za pomocą oscyloskopu) ale układ
> również nie działa, wywalając się po skoku do załadowanego CP/M-a.
> Podejrzewam, że to też jakaś wersja problemów z timingiem przy pisaniu
> do portu. Tym razem port jest zrealizowany na 74S412 (polski klon 8212).
>
> Sterowanie portem odbywa się w następujący sposób:
> 1. Pin MD podciągnięty do VCC
> 2. Wejście DS1 podłączone do IO_WR
> 3. Wejście DS2 podłączone do zanegowanego wyjścia dekodera adresów I/O
> (74138)
> 4. Wejścia DI0..DI7 do magistrali systemowej.
> 5. Wyjścia DO0..DO7 tam, gdzie są potrzebne. ;)
>
> Zastanawiam się czy i tym razem nie opóźnić trochę sygnału DS2, przez
> zatrzaśnięcie go w 7474 sygnałem zegara systemowego.
>
> Tylko dlaczego w ogóle mam ten problem? Czy przypadkiem w 8080 nie
> powinienem mieć już stabilnej nowej wartości na liniach danych, gdy na
> szynie adresowej pojawia się adres, a linia IO_WR przechodzi w stan niski?
O ile pamietam, to tak powinno być.
Oscyloskop nie pokazuje?
J.