Robotrontechnik-Forum

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

Robotrontechnik-Forum » Technische Diskussionen » DB Bustreiber Datenrichtung umschalten » Themenansicht

Autor Thread - Seiten: -1-
000
11.03.2011, 11:05 Uhr
Ralph



Bei versch. Recherchen ist mir aufgefallen, das der Datenbustreiber von der CPU meist vom Typ LS74'245 ist.
In den meisten Schaltungen wird das DIR Signal für den '245 mit einer AND Verknüpfung aus /RD und /M1 gebildet.
Ein weitere Variante (z.B. auch im AC1 2010) ist die Verwendung des negierten /WR Signales.
Funktionieren tun beide Varianten. Sind sie aber wirklich gleich gut zu verwenden ? Wer weiß das aus dem Hut ?

Gruß Ralph
--
Es geht alles erst richtig los !

Dieser Beitrag wurde am 11.03.2011 um 11:05 Uhr von Ralph editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
11.03.2011, 11:42 Uhr
holm

Avatar von holm

Das kommt darauf an, /WR taucht später im Zyklus auf als /RD, es kommt also darauf an,
welche Zugriffszeiten Dein Speicher bzw. die Peripherie hat.
Schue Dir die CPU Zyklusdiagramme dazu an.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
11.03.2011, 11:46 Uhr
Ralph



Jo Holm, das ist mir auch schon aufgefallen und ich hab damals deswegen auch /RD und /M1 genommen. Andere Probleme fallen Dir dabei aber adhoc auch nicht auf oder ?
Evl. könnten die Timingprobleme beim AC1 2010 auch daher rühren, oder ?
--
Es geht alles erst richtig los !
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
11.03.2011, 12:18 Uhr
holm

Avatar von holm

Sorry, ich habe die ganze AC1 Geschichte nicht weiter verfolgt weil der AC1 ganuso wie die KC85 nicht mein Hauptinteressengebiet sind.
Aber Probleme in dieser Richtung sind durchaus möglich, teilweise verursacht sowas auch einen Kampf der Bustreiber, das sollte schon durchdacht sein.
Denke daran das auch /IORQ und /RD ein Schreibzyklus ist, die Interruptannahme ist auch interessant, Vektor lesen etc...

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
11.03.2011, 12:55 Uhr
Ralph



Na der AC1 2010 war da nur ein Beispiel Holm. Das hat nicht viel mit meiner grundsätzlichen Überlegung zu tun. Aber wieso ist /IORQ und /RD ein Schreibzyklus? Hab leider grad keinen Zugriff auf mein Z80 Büchlein.

LG Ralph
--
Es geht alles erst richtig los !
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
11.03.2011, 13:24 Uhr
Enrico
Default Group and Edit


Ist es auch nicht.
--
MFG
Enrico
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
11.03.2011, 13:30 Uhr
holm

Avatar von holm

Ne, isses nicht. IORQ sollte schon aktiv sein.

Gruß,

Holm
--
float R,y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;
{s=(c>1?(h=atoi(v[1])):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+
(r=A*A)|++u==n&&putchar(*(((--s%h)?(u<n?--u%6:6):7)+"World! \n"))&&
(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
11.03.2011, 14:24 Uhr
Heiko_P



Zurück zur eigentlichen Frage:

Der Blick ins Zeitdiagramm des U880 [1] zeigt einen kleinen Unterschied. Bei Schreibvorgängen werden von der CPU erst die Daten auf den Datenbus gelegt, danach wird /WR aktiviert. In dieser Zeit arbeitet die CPU gegen den Bustreiber, sofern dieser nicht hochohmig geschaltet und erst mit /WR aktiviert wird (was beim AC1 2010 nach der mir vorliegenden Schaltung aber nicht zutrifft).

Bei der anderen Variante mit /RD und /M1 ist der Bustreiber immer in Schreibrichtung und wird nur zum Lesen in Richtung CPU umgeschaltet, dann sind auch die CPU-Eingänge bereits auf Lesen umgestellt.

Quellenangabe:
[1] Kieser/Meder, Mikroprozessortechnik, Verlag Technik Berlin, 4. Aufl. 1986, Seite 77 ff.

Viele Grüße

Heiko

Dieser Beitrag wurde am 11.03.2011 um 14:25 Uhr von Heiko_P editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
11.03.2011, 16:22 Uhr
Wusel_1



Wie Heiko schon schreib, wurde /RD + /M1 nicht genommen, da der Lesezyklus beim AC1 Zeitprobleme bereitet. Man sollte sich mal die dynamischen Kennwerte des Z80 ansehen. Da der LS245 immer in Lesen aktiv ist, kann es nicht zu diesen Probleme kommen, da /WE zur Umschaltung Zeit hat - die Daten müssen erst anliegen, wogegen beim Lesen gleich auf den Dadenbus zugegriffen wird. Bei den langsamen Speicher spielte das keine große Rolle. Siehe auch in der Quellenangabe von Heiko.
--
Beste Grüße Andreas
______________________________________
DL9UNF ex Y22MF es Y35ZF
JO42VP - DOK: Y43 - LDK: CE

*** wer glaubt, hört auf zu denken ***

Dieser Beitrag wurde am 11.03.2011 um 16:22 Uhr von Wusel_1 editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
11.03.2011, 16:56 Uhr
Ralph




Zitat:
Wusel_1 schrieb
..da der Lesezyklus beim AC1 Zeitprobleme bereitet..

@Wusel_1.. tsss.. bei 2Mhz Timingprobleme ??? das bezweifel ich mal, denn meine beiden AC1 haben die nicht,aber eben auch die /RD&/M1 Verknüpfung.
Übrigens hatte die Frage ansich nichts mit dem AC1 2010 zu tun. Mir war nur aufgefallen das es bei fast ALLEN Industriell genutzten Z80 die /RD & /M1 Verknüpfung gibt und ich wollte die Gründe wissen.

@Heiko_P.. Danke! das war genau die Antwort die ich mir erhofft hatte !

Viele Grüße und viel Spaß beim Basetln noch
--
Es geht alles erst richtig los !
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
11.03.2011, 21:15 Uhr
Wusel_1



Auch bei 2MHz kann es zu Zeitproblemen kommen. Wichtig ist nicht der Takt, sondern der Abstand die Schaltflanke. Wenn die zu Zeitig/Spät kommt, dann gibt es schon Konflikte. Um das zu Umgehen, wird immer /RD + /M1 zusammen genutzt, weil /M1 immer eher als /RD von H nach L schaltet und damit das Lesen auch richtig stattfinden kann. Ich umgehe das immer, das ich dafür lieber die Umschltung mit /WE mache. Das heißt, es ist immer lesen möglich und beim Schreiben schaltet /WE zeitgemäß.
--
Beste Grüße Andreas
______________________________________
DL9UNF ex Y22MF es Y35ZF
JO42VP - DOK: Y43 - LDK: CE

*** wer glaubt, hört auf zu denken ***
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
11.03.2011, 21:32 Uhr
Ralph



Ja Andreas.. Du hast Recht, wenn es um den Zeitpunkt zur Flanke ankommt, da stimm ich Dir voll zu ! Aber was sagst Du zum Beitrag 007 wo Heiko schreibt, das für nen kurzen Moment die CPU und der DB Treiber gegeneinander arbeiten und warum wird dann die Variante die Du gewählt hast nicht oft oder garnicht in der Industrie verwendet ?

Versteh mich nicht falsch ! ich will NICHT meckern, es nur verstehen, bzw. "meine Widersprüche" ausräumen.

Übrigens funktionieren bei mir tatsächlich beide Varianten ohne Probleme. Das hab ich grade probiert.

Gruß Ralph
--
Es geht alles erst richtig los !
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