-
1. Data: 2018-04-30 10:15:50
Temat: Debugowanie systemu na 8080
Od: Atlantis <m...@w...pl>
Skończyłem ostatnio składać prosty system mikroprocesorowy na polskim
MCY7880. Płytka poza procesorem i układem zasilania zawiera także
UCY74S424, UCY74S428, UCY74S405, kilka sztuk UCY74S$12 (bufor szyny
adresowej i fragment dekodera adresów). Do tego pamięci i trochę
drobnicy TTL.
W chwili obecnej podłączona jest wersja minimalistyczna - z podstawek
wyjęty dekoder adresów, linia CS EPROM-u na stałe podłączona do masy.
Sprawdziłem parę razy wszystkie połączenia i wygląda na to, że nie
popełniłem żadnego błędu lutując kynar. Jeszcze przed włożeniem pamięci
EPROM do postawki sprawdziłem najważniejsze linie oscyloskopem i
wszystko zdawało się być w porządku - na liniach adresowych pojawiały
się regularne przebiegi, wskazujące na inkrementację adresu. Regularne
impulsy na liniach CS sugerowały także poprawne działanie dekodera adresów.
Następne zaprogramowałem EPROM prostym programem, stworzonym za pomocą
webowego asemblera (asm80.com).
ORG 00000H
NOP
NOP
NOP
NOP
START:
NOP
NOP
MVI A, 80H
OUT 00H
NOP
NOP
JMP START
Po włożeniu EPROM-u zamilkły górne linie magistrali adresowej, co
wskazuje na to, że faktycznie wykonuje się jakaś pętla.
Rozkaz OUT 00H miał zapisać nową wartość do jednego z UCY74S412, okazało
się jednak, że linia nie została ustawiona.
Zacząłem się więc bliżej przyglądać przebiegom za pomocą prostego
analizatora logicznego. Okazuje się, że:
1) Linia I/OW nie zmienia wcale swojego stanu. A przecież powinna
ustawić się w stanie niskim przy zapisie do IO.
2) Linia MEMR jest aktywna prawie cały czas (co mnie specjalnie nie dziwi).
3) Na linii MEMW co jakieś 20ms pojawiają się dwa impulsy stanu
niskiego. Chyba nie powinno ich tam być? Przecież w moim kodzie nie
występują żadne operacje zapisu do pamięci, nie jest skonfigurowany stos
itp.
Uprzedzając potencjalne odpowiedzi - nie, nie zamieniłem MEMW i I/OW
miejscami. Zresztą wspomniane impulsy występują również po
zakomentowaniu linijki z poleceniem OUT.
Próbowałem zamienić MCY7880 na procesor produkcji NEC. Podmieniłem też
MCY74S428 na inny egzemplarz, ale ne przyniosło to żadnego rezultatu.
Ktoś ma jakiś pomysł odnośnie tego, co może być nie tak? Co mogę
sprawdzić? Może problem jest software'owy i najzwyczajniej w świecie coś
pominąłem?
-
2. Data: 2018-04-30 11:03:30
Temat: Re: Debugowanie systemu na 8080
Od: s...@g...com
W dniu poniedziałek, 30 kwietnia 2018 10:15:54 UTC+2 użytkownik Atlantis napisał:
> Skończyłem ostatnio składać prosty system mikroprocesorowy na polskim
> MCY7880. Płytka poza procesorem i układem zasilania zawiera także
> UCY74S424, UCY74S428, UCY74S405, kilka sztuk UCY74S$12 (bufor szyny
> adresowej i fragment dekodera adresów). Do tego pamięci i trochę
> drobnicy TTL.
>
> W chwili obecnej podłączona jest wersja minimalistyczna - z podstawek
> wyjęty dekoder adresów, linia CS EPROM-u na stałe podłączona do masy.
>
> Sprawdziłem parę razy wszystkie połączenia i wygląda na to, że nie
> popełniłem żadnego błędu lutując kynar. Jeszcze przed włożeniem pamięci
> EPROM do postawki sprawdziłem najważniejsze linie oscyloskopem i
> wszystko zdawało się być w porządku - na liniach adresowych pojawiały
> się regularne przebiegi, wskazujące na inkrementację adresu. Regularne
> impulsy na liniach CS sugerowały także poprawne działanie dekodera adresów.
>
> Następne zaprogramowałem EPROM prostym programem, stworzonym za pomocą
> webowego asemblera (asm80.com).
>
> ORG 00000H
> NOP
> NOP
> NOP
> NOP
> START:
> NOP
> NOP
> MVI A, 80H
> OUT 00H
> NOP
> NOP
> JMP START
>
> Po włożeniu EPROM-u zamilkły górne linie magistrali adresowej, co
> wskazuje na to, że faktycznie wykonuje się jakaś pętla.
>
> Rozkaz OUT 00H miał zapisać nową wartość do jednego z UCY74S412, okazało
> się jednak, że linia nie została ustawiona.
> Zacząłem się więc bliżej przyglądać przebiegom za pomocą prostego
> analizatora logicznego. Okazuje się, że:
> 1) Linia I/OW nie zmienia wcale swojego stanu. A przecież powinna
> ustawić się w stanie niskim przy zapisie do IO.
> 2) Linia MEMR jest aktywna prawie cały czas (co mnie specjalnie nie dziwi).
> 3) Na linii MEMW co jakieś 20ms pojawiają się dwa impulsy stanu
> niskiego. Chyba nie powinno ich tam być? Przecież w moim kodzie nie
> występują żadne operacje zapisu do pamięci, nie jest skonfigurowany stos
> itp.
>
> Uprzedzając potencjalne odpowiedzi - nie, nie zamieniłem MEMW i I/OW
> miejscami. Zresztą wspomniane impulsy występują również po
> zakomentowaniu linijki z poleceniem OUT.
>
> Próbowałem zamienić MCY7880 na procesor produkcji NEC. Podmieniłem też
> MCY74S428 na inny egzemplarz, ale ne przyniosło to żadnego rezultatu.
>
> Ktoś ma jakiś pomysł odnośnie tego, co może być nie tak? Co mogę
> sprawdzić? Może problem jest software'owy i najzwyczajniej w świecie coś
> pominąłem?
==============
1. Kod faktycznie jest duperelny, więc zrób sobie kompilację na piechotę i sprawdź
czy przypadkiem asm80 nie robi jakiegoś błędu. Porównaj swoją kompilację z kodem
wynikowym asm80.
2. Może EPROM źle zaprogramowany, albo z czasem dostępu są jakieś jaja. Sprawdź na
innym EPROMie. Ze starymi epromami bywają różne niespodzianki.
-
3. Data: 2018-04-30 11:06:01
Temat: Re: Debugowanie systemu na 8080
Od: s...@g...com
W dniu poniedziałek, 30 kwietnia 2018 11:03:31 UTC+2 użytkownik s...@g...com
napisał:
> W dniu poniedziałek, 30 kwietnia 2018 10:15:54 UTC+2 użytkownik Atlantis napisał:
> > Skończyłem ostatnio składać prosty system mikroprocesorowy na polskim
> > MCY7880. Płytka poza procesorem i układem zasilania zawiera także
> > UCY74S424, UCY74S428, UCY74S405, kilka sztuk UCY74S$12 (bufor szyny
> > adresowej i fragment dekodera adresów). Do tego pamięci i trochę
> > drobnicy TTL.
> >
> > W chwili obecnej podłączona jest wersja minimalistyczna - z podstawek
> > wyjęty dekoder adresów, linia CS EPROM-u na stałe podłączona do masy.
> >
> > Sprawdziłem parę razy wszystkie połączenia i wygląda na to, że nie
> > popełniłem żadnego błędu lutując kynar. Jeszcze przed włożeniem pamięci
> > EPROM do postawki sprawdziłem najważniejsze linie oscyloskopem i
> > wszystko zdawało się być w porządku - na liniach adresowych pojawiały
> > się regularne przebiegi, wskazujące na inkrementację adresu. Regularne
> > impulsy na liniach CS sugerowały także poprawne działanie dekodera adresów.
> >
> > Następne zaprogramowałem EPROM prostym programem, stworzonym za pomocą
> > webowego asemblera (asm80.com).
> >
> > ORG 00000H
> > NOP
> > NOP
> > NOP
> > NOP
> > START:
> > NOP
> > NOP
> > MVI A, 80H
> > OUT 00H
> > NOP
> > NOP
> > JMP START
> >
> > Po włożeniu EPROM-u zamilkły górne linie magistrali adresowej, co
> > wskazuje na to, że faktycznie wykonuje się jakaś pętla.
> >
> > Rozkaz OUT 00H miał zapisać nową wartość do jednego z UCY74S412, okazało
> > się jednak, że linia nie została ustawiona.
> > Zacząłem się więc bliżej przyglądać przebiegom za pomocą prostego
> > analizatora logicznego. Okazuje się, że:
> > 1) Linia I/OW nie zmienia wcale swojego stanu. A przecież powinna
> > ustawić się w stanie niskim przy zapisie do IO.
> > 2) Linia MEMR jest aktywna prawie cały czas (co mnie specjalnie nie dziwi).
> > 3) Na linii MEMW co jakieś 20ms pojawiają się dwa impulsy stanu
> > niskiego. Chyba nie powinno ich tam być? Przecież w moim kodzie nie
> > występują żadne operacje zapisu do pamięci, nie jest skonfigurowany stos
> > itp.
> >
> > Uprzedzając potencjalne odpowiedzi - nie, nie zamieniłem MEMW i I/OW
> > miejscami. Zresztą wspomniane impulsy występują również po
> > zakomentowaniu linijki z poleceniem OUT.
> >
> > Próbowałem zamienić MCY7880 na procesor produkcji NEC. Podmieniłem też
> > MCY74S428 na inny egzemplarz, ale ne przyniosło to żadnego rezultatu.
> >
> > Ktoś ma jakiś pomysł odnośnie tego, co może być nie tak? Co mogę
> > sprawdzić? Może problem jest software'owy i najzwyczajniej w świecie coś
> > pominąłem?
>
> ==============
>
> 1. Kod faktycznie jest duperelny, więc zrób sobie kompilację na piechotę i sprawdź
czy przypadkiem asm80 nie robi jakiegoś błędu. Porównaj swoją kompilację z kodem
wynikowym asm80.
>
> 2. Może EPROM źle zaprogramowany, albo z czasem dostępu są jakieś jaja. Sprawdź na
innym EPROMie. Ze starymi epromami bywają różne niespodzianki.
================
Aha, po włączeniu zasilania daj dłuższy reset żeby mieć pewność, że PC(Program
Counter) zaczyna kręcić się od zera.
-
4. Data: 2018-04-30 22:21:03
Temat: Re: Debugowanie systemu na 8080
Od: "J.F." <j...@p...onet.pl>
Dnia Mon, 30 Apr 2018 10:15:50 +0200, Atlantis napisał(a):
> Skończyłem ostatnio składać prosty system mikroprocesorowy na polskim
> MCY7880. Płytka poza procesorem i układem zasilania zawiera także
> UCY74S424, UCY74S428, UCY74S405, kilka sztuk UCY74S$12 (bufor szyny
> adresowej i fragment dekodera adresów). Do tego pamięci i trochę
> drobnicy TTL.
> W chwili obecnej podłączona jest wersja minimalistyczna - z podstawek
> wyjęty dekoder adresów, linia CS EPROM-u na stałe podłączona do masy.
>
> Następne zaprogramowałem EPROM prostym programem, stworzonym za pomocą
> webowego asemblera (asm80.com).
>
> ORG 00000H
> NOP
> NOP
> NOP
> NOP
> START:
> NOP
> NOP
> MVI A, 80H
> OUT 00H
> NOP
> NOP
> JMP START
>
> Po włożeniu EPROM-u zamilkły górne linie magistrali adresowej, co
> wskazuje na to, że faktycznie wykonuje się jakaś pętla.
>
> Rozkaz OUT 00H miał zapisać nową wartość do jednego z UCY74S412, okazało
> się jednak, że linia nie została ustawiona.
> Zacząłem się więc bliżej przyglądać przebiegom za pomocą prostego
> analizatora logicznego. Okazuje się, że:
> 1) Linia I/OW nie zmienia wcale swojego stanu. A przecież powinna
> ustawić się w stanie niskim przy zapisie do IO.
> 2) Linia MEMR jest aktywna prawie cały czas (co mnie specjalnie nie dziwi).
> 3) Na linii MEMW co jakieś 20ms pojawiają się dwa impulsy stanu
> niskiego. Chyba nie powinno ich tam być? Przecież w moim kodzie nie
> występują żadne operacje zapisu do pamięci, nie jest skonfigurowany stos
> itp.
Przerwania.
Nie wlaczyles ... ale ma chyba NMI. A do czego podlaczone ?
Linii danych i adresowych nie pomyliles ?
Cuda sie moga dziac, a nie tak latwo wykryc.
No i zwolnij zegar, zobacz co bedzie.
> Ktoś ma jakiś pomysł odnośnie tego, co może być nie tak? Co mogę
> sprawdzić? Może problem jest software'owy i najzwyczajniej w świecie coś
> pominąłem?
Wez mlotek i rozbij, bedziesz mial tydzien wolnego :-)
J.
-
5. Data: 2018-05-01 10:02:41
Temat: Re: Debugowanie systemu na 8080
Od: Atlantis <m...@w...pl>
On 30.04.2018 22:21, J.F. wrote:
> Przerwania.
> Nie wlaczyles ... ale ma chyba NMI. A do czego podlaczone ?
Na razie nie używam przerwań. Wszystkie linie związane z ich obsługą
wiszą w powietrzu, to ponoć nie powinno jednak przeszkadzać, o ile w
kodzie nie włączę obsługi przerwań...
> Linii danych i adresowych nie pomyliles ?
Wielce mało prawdopodobne. Już parę razy zdążyłem sprawdzić połączenia
miernikiem i za każdym razem wychodzi mi ten sam wynik. Szyna danych
"wychodzi" z pinów DBx UCY74S428, szyna adresowa jest podłączona do
procesora przez dwie sztuki UCY74S412, pracujące jako bufory.
> No i zwolnij zegar, zobacz co bedzie.
Teraz i tak nie pracuje na maksymalnej prędkości. Do UCY74S424
podłączony jest obecnie kwarc 12 MHz. Czyli wychodzi na to, że CPU
pracuje z prędkością około 1,3 MHz.
-
6. Data: 2018-05-01 11:03:21
Temat: Re: Debugowanie systemu na 8080
Od: "J.F." <j...@p...onet.pl>
Dnia Tue, 1 May 2018 10:02:41 +0200, Atlantis napisał(a):
> On 30.04.2018 22:21, J.F. wrote:
>> Przerwania.
>> Nie wlaczyles ... ale ma chyba NMI. A do czego podlaczone ?
>
> Na razie nie używam przerwań. Wszystkie linie związane z ich obsługą
> wiszą w powietrzu, to ponoć nie powinno jednak przeszkadzać, o ile w
> kodzie nie włączę obsługi przerwań...
NMI to niemaskowalne.
A wiszacy w powietrzu MOS to nie jest najlepszy pomysl.
W kazdym badz razie te 20ms sugeruje jakies zaklocene z sieci ... albo
celowo doprowadzone przerwanie, np od generatora wideo.
>> Linii danych i adresowych nie pomyliles ?
>
> Wielce mało prawdopodobne. Już parę razy zdążyłem sprawdzić połączenia
> miernikiem i za każdym razem wychodzi mi ten sam wynik. Szyna danych
> "wychodzi" z pinów DBx UCY74S428, szyna adresowa jest podłączona do
> procesora przez dwie sztuki UCY74S412, pracujące jako bufory.
Tylko wiesz - wystarczy kiepska karta katalogowa i juz np D5 wg
programatora trafi na D4 w procesorze.
NOP to akurat 00h, wiec bedzie wykonywany, ale inne rozkazy moga sie
zmienic.
Pozostaja tez zwarcia.
Z dobrym oscyloskopem/analizatorem mozna zobaczyc co na nozkach
procesora jest ... tylko proponuje prostszy program, np
NOP
NOP
JMP 2 ; czyli do samego siebie
>> No i zwolnij zegar, zobacz co bedzie.
>
> Teraz i tak nie pracuje na maksymalnej prędkości. Do UCY74S424
> podłączony jest obecnie kwarc 12 MHz. Czyli wychodzi na to, że CPU
> pracuje z prędkością około 1,3 MHz.
Powinno wystarczyc.
I to widac na oscyloskopie ?
o ile pamietam tam sie uzywalo kwarca 9MHz pracujacego na overtonie
... to moze ten 12 wzbudzil sie na 36 :-)
O ile pamietam, to 8080 jest statyczny - mozesz przyciskiem generowac
kolejne takty i sprawdzac cykl po cyklu co sie dzieje :-)
J.
-
7. Data: 2018-05-01 11:50:10
Temat: Re: Debugowanie systemu na 8080
Od: Atlantis <m...@w...pl>
On 01.05.2018 11:03, J.F. wrote:
> NMI to niemaskowalne.
> A wiszacy w powietrzu MOS to nie jest najlepszy pomysl.
Ok, to co powinienem zrobić z pinami INTx przy CPU i UCY74S428?
> W kazdym badz razie te 20ms sugeruje jakies zaklocene z sieci ... albo
> celowo doprowadzone przerwanie, np od generatora wideo.
Tam (na razie) nie ma żadnego generatora wideo. Układ buduję sam od
podstaw i w tej chwili na płytce jest absolutne minimum: zasilanie,
generator sygnału zegarowego, CPU, kontroler magistrali, bufory szyny
adresowej i EPROM.
BTW zrobiłem test polegający na usunięciu EPROM-u i podciągnięciu linii
danych do masy przez drabinkę rezystorów 4,7k. Analizator logiczny
podłączony do młodszego bajtu szyny adresowej (starszy sprawdzę późnej -
mam tylko ośmiokanałowy analizator) pokazuje ładne przebiegi. Procesor
zdaje się odczytywać instrukcje NOP, zwiększając wartość PC.
> Tylko wiesz - wystarczy kiepska karta katalogowa i juz np D5 wg
> programatora trafi na D4 w procesorze.
> NOP to akurat 00h, wiec bedzie wykonywany, ale inne rozkazy moga sie
> zmienic.
Mój EPROM to M27128A-2FI produkcji ST. Opierałem się na tej nocie:
http://pdf.datasheetcatalog.com/datasheet/SGSThomson
Microelectronics/mXrzxwv.pdf
Do programowania używam chińskiego MiniPro TL866CS, obsługiwanego z
poziomu Windowsa XP odpalonego na wirtualce.
> Pozostaja tez zwarcia.
Starałem się sprawdzić, czy linie danych i adresowe nie są zwarte z
sąsiadującymi liniami - niczego takiego nie zauważyłem.
> o ile pamietam tam sie uzywalo kwarca 9MHz pracujacego na overtonie
> ... to moze ten 12 wzbudzil sie na 36 :-)
Praca na overtonie jeśli mnie pamięć nie myli wymagała trochę innej
konfiguracji UCY74S424 - konieczne było dodanie obwodu rezonansowego. U
mnie zastosowany jest najprostszy układ do pracy na podstawowej
częstotliwości.
> O ile pamietam, to 8080 jest statyczny - mozesz przyciskiem generowac
> kolejne takty i sprawdzac cykl po cyklu co sie dzieje :-)
Takie rozwiązanie przeszłoby w Z80, ale 8080 miał trochę bardziej
skomplikowane taktowanie - wymaga dwóch sygnałów odpowiednio
przesuniętych w fazie. Właśnie do tego służy UCY74S424. :) OIDP pamiętam
praca krokowa w 8080 jest możliwa, ale wymaga dodania paru elementów.
-
8. Data: 2018-05-01 12:33:41
Temat: Re: Debugowanie systemu na 8080
Od: "J.F." <j...@p...onet.pl>
Dnia Tue, 1 May 2018 11:50:10 +0200, Atlantis napisał(a):
> On 01.05.2018 11:03, J.F. wrote:
>> NMI to niemaskowalne.
>> A wiszacy w powietrzu MOS to nie jest najlepszy pomysl.
>
> Ok, to co powinienem zrobić z pinami INTx przy CPU i UCY74S428?
Podciagnac do stanu nieaktywnego.
>> W kazdym badz razie te 20ms sugeruje jakies zaklocene z sieci ... albo
>> celowo doprowadzone przerwanie, np od generatora wideo.
>
> Tam (na razie) nie ma żadnego generatora wideo. Układ buduję sam od
> podstaw i w tej chwili na płytce jest absolutne minimum: zasilanie,
> generator sygnału zegarowego, CPU, kontroler magistrali, bufory szyny
> adresowej i EPROM.
>
> BTW zrobiłem test polegający na usunięciu EPROM-u i podciągnięciu linii
> danych do masy przez drabinkę rezystorów 4,7k.
Dla TTL to jest za duzo.
> Analizator logiczny
> podłączony do młodszego bajtu szyny adresowej (starszy sprawdzę późnej -
> mam tylko ośmiokanałowy analizator) pokazuje ładne przebiegi. Procesor
> zdaje się odczytywać instrukcje NOP, zwiększając wartość PC.
To teraz ustaw opornikami rozkaz OUT :-)
>> o ile pamietam tam sie uzywalo kwarca 9MHz pracujacego na overtonie
>> ... to moze ten 12 wzbudzil sie na 36 :-)
>
> Praca na overtonie jeśli mnie pamięć nie myli wymagała trochę innej
> konfiguracji UCY74S424 - konieczne było dodanie obwodu rezonansowego. U
> mnie zastosowany jest najprostszy układ do pracy na podstawowej
> częstotliwości.
Przypadkowe wzbudzenie grozi.
Masz teraz NOP i licznik adresow - mozesz sprawdzic.
>> O ile pamietam, to 8080 jest statyczny - mozesz przyciskiem generowac
>> kolejne takty i sprawdzac cykl po cyklu co sie dzieje :-)
>
> Takie rozwiązanie przeszłoby w Z80, ale 8080 miał trochę bardziej
> skomplikowane taktowanie - wymaga dwóch sygnałów odpowiednio
> przesuniętych w fazie. Właśnie do tego służy UCY74S424. :) OIDP pamiętam
> praca krokowa w 8080 jest możliwa, ale wymaga dodania paru elementów.
No to palec bedzie bolal od naciskania, ale sie da.
Mozna tez dodac generator kilku impulsow (na atmelku :-)).
J.
-
9. Data: 2018-05-01 13:22:11
Temat: Re: Debugowanie systemu na 8080
Od: Atlantis <m...@w...pl>
On 01.05.2018 12:33, J.F. wrote:
> Dla TTL to jest za duzo.
Jaką wartość sugerujesz?
Niemniej udało mi się przeprowadzić test. Wszystko zdaje się być w
porządku, z jednym wyjątkiem. Linie przyjmują stanu wskazujące na
zliczanie o jeden. Za wyjątkiem A14 i A15 - na tych panuje całkowita
cisza. Próbowałem podmienić bufor szyny adresowej oraz przetestować inny
egzemplarz CPU. Ten sam efekt pojawia się zarówno na MCY7880 z innej
serii, jak i na NEC D8080AFC.
> To teraz ustaw opornikami rozkaz OUT :-)
Dobry pomysł. ;)
> Przypadkowe wzbudzenie grozi.
Nie sądzę - pod ręką mam do dyspozycji jedynie stary analogowy
oscyloskop do 15MHz. Co prawda nie mierzyłem częstotliwości, jednak
szerokość impulsów wydawała się być w porządku.
-
10. Data: 2018-05-01 13:41:03
Temat: Re: Debugowanie systemu na 8080
Od: "J.F." <j...@p...onet.pl>
Dnia Tue, 1 May 2018 13:22:11 +0200, Atlantis napisał(a):
> On 01.05.2018 12:33, J.F. wrote:
>> Dla TTL to jest za duzo.
> Jaką wartość sugerujesz?
200 ohm dla stanu 0.
Ale skoro dziala ... moze nie trzeba.
> Niemniej udało mi się przeprowadzić test. Wszystko zdaje się być w
> porządku, z jednym wyjątkiem. Linie przyjmują stanu wskazujące na
> zliczanie o jeden. Za wyjątkiem A14 i A15 - na tych panuje całkowita
> cisza. Próbowałem podmienić bufor szyny adresowej oraz przetestować inny
> egzemplarz CPU. Ten sam efekt pojawia się zarówno na MCY7880 z innej
> serii, jak i na NEC D8080AFC.
Moze zwarcie na plytce.
A bezposrednio na procesorze sprawdzales ?
Moze podstawka nie kontaktuje.
>> Przypadkowe wzbudzenie grozi.
>
> Nie sądzę - pod ręką mam do dyspozycji jedynie stary analogowy
> oscyloskop do 15MHz. Co prawda nie mierzyłem częstotliwości, jednak
> szerokość impulsów wydawała się być w porządku.
No to widac nie w tym problem.
J.