Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » BUSRQ » Themenansicht

Autor Thread - Seiten: -1-
000
08.07.2023, 17:40 Uhr
PIC18F2550

Avatar von PIC18F2550

Hallo,

zu dem Thema kann ich nur das finden.



Was mich interressiert:
was passiert bei den großen Befehlen wo in den M Cyclen noch mehrere Takte benötigt werden.
(Keine WAIT Phasen)
Oder wartet er bis zum Ende des M Cyclus mit der Bestätigung.

Danke
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
09.07.2023, 09:45 Uhr
Bert




Zitat:
PIC18F2550 schrieb
Oder wartet er bis zum Ende des M Cyclus mit der Bestätigung.


Ja, das würde ich vermuten.
Ich kann mir auch nicht vorstellen, das ein LDIR-Befehl vom BUSRQ unterbrochen wird, aber nachgemessen habe ich noch nicht...

Grüße,
Bert
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
09.07.2023, 09:51 Uhr
PIC18F2550

Avatar von PIC18F2550

Nach der Doku könnte es sein weil die read und write Cyclen dort als abgeschlossene M cyclen angegeben sind.
Aber konkret wird das für diese Befehle nicht beschrieben.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
09.07.2023, 10:17 Uhr
kaiOr

Avatar von kaiOr

M-Zyklus ist ungleich M1-Zyklus
Auch wenn der M-Zyklus aus 1000 M1-Zyklen besteht wie bei einem LDIR möglich, wird erst auf /BUSREQ geprüft, wenn der nächste Befehl zu holen wäre bzw. der PC sich verändert.

Dieser Beitrag wurde am 09.07.2023 um 10:19 Uhr von kaiOr editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
09.07.2023, 10:50 Uhr
Ordoban



Es geht um den Z80, oder?
Aus dem User-Manual zum LDIR

Quellcode:

This 2-byte instruction transfers a byte of data from the memory location addressed by the
contents of the HL register pair to the memory location addressed by the DE register pair.
Both these register pairs are incremented and the Byte Counter (BC) Register pair is dec-
remented. If decrementing allows the BC to go to 0, the instruction is terminated. If BC is
not 0, the program counter is decremented by two and the instruction is repeated. Inter-
rupts are recognized and two refresh cycles are executed after each data transfer. When the
BC is set to 0 prior to instruction execution, the instruction loops through 64 KB.


Das lese ich so, dass LDIR den Block nicht als Ganzes überträgt, sondern immer nur ein einzelnes Byte. Nach der Übertragung erfolgt ein Rücksprung, so dass es nach außen hin aussieht als wäre das eine Block-Übertragung.
--
Gruß
Stefan
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
09.07.2023, 11:02 Uhr
Ordoban



Oh. Thema verfehlt. Es geht auch um das Verhalten vom BUSRQ bei "normalen" Befehlen.

Zitat:

BUSREQ. Bus Request (input, active Low). Bus Request contains a higher priority than
NMI and is always recognized at the end of the current machine cycle. BUSREQ forces
the CPU address bus, data bus, and control signals MREQ, IORQ, RD, and WR to enter a
high-impedance state so that other devices can control these lines. BUSREQ is normally
wired OR and requires an external pull-up for these applications. Extended BUSREQ peri-
ods due to extensive DMA operations can prevent the CPU from properly refreshing
dynamic RAM.


"Immer am Ende des aktuellen M-Zyklus" ist eigendlich eindeutig.
--
Gruß
Stefan

Dieser Beitrag wurde am 09.07.2023 um 11:04 Uhr von Ordoban editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
09.07.2023, 11:17 Uhr
PIC18F2550

Avatar von PIC18F2550

Also nicht M1 abhängig.
immer T3 im M Cyclus.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
09.07.2023, 13:24 Uhr
Early8Bitz

Avatar von Early8Bitz

Lt. oben abgebildeten Diagramm beginnt die Busfrreigabe nach dem letzten T-State ("Last T-State") eines beliebigen ("Any M Cycle").
Das ist doch eindeutig. Jeder Befehl, der mehr als einen M-Zyklus hat, kann auch mittendrin unterbrochen werden.
Und die Anzahl der Takte (3, 4, 5, mit zusätzlichen Waits oder ohne) des M-Zyklus vor der Busfrreigabe ist auch egal. Der "Last T State" eines M-Zyklus kommt immer an dessen Ende.
Es sei denn, du verdrahtest /WAIT an der CPU fest auf LOW. :-)
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
09.07.2023, 13:40 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
PIC18F2550 schrieb
Also nicht M1 abhängig.
immer T3 im M Cyclus.


Nicht zwangsläufig T3. Es gibt Befehle mit mehreren M-Zyklen,
die haben zwischen 3 und 5 Takte pro M-Zyklus.

Beispiel:
INC (IX+d)

6 M-Zyklen, 23 Takte gesamt, alles zwischen 3 und 5 Takte/M-Zyklus vertreten.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
09.07.2023, 14:03 Uhr
PIC18F2550

Avatar von PIC18F2550

Ok zumindest am Ende jedes M1 Cyclus.
--
42 ist die Antwort auf die "Frage nach dem Leben, dem Universum und dem ganzen Rest"
Aktuelle Projektdokumentationen
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
09.07.2023, 14:12 Uhr
Early8Bitz

Avatar von Early8Bitz


Zitat:
Bert schrieb
Ich kann mir auch nicht vorstellen, das ein LDIR-Befehl vom BUSRQ unterbrochen wird, aber nachgemessen habe ich noch nicht...
Bert


Doch, genau das passiert. Nach jedem M-Zyklus eines beliebigen Befehls wird /BUSRQ vorrangig behandelt.

Bei anliegenden Interruprequests erfolgt die Annahme erst nach dem letzten M-Zyklus eines Befehls.
Allerdings werden auch hier repetierende Befehle wie LDIR, OTIR, CPDR etc. "unterbrochen", aber nur zwischen vollständigen Transferzyklen.
--
Gruß
Ralf

Ist ein alter Schaltkreis ein Schaltgreis?
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek