Forum: Mikrocontroller und Digitale Elektronik CPU 68k


von Tobias P. (hubertus)


Lesenswert?

grüss euch,
bezüglich der 68000 CPU gab es ja glaube ich schon einen thread oder 
zwei.
da ich aber bis jetzt im internet noch nicht fündig geworden bin nach 
den fragen die ich habe, dachte ich mir, dass ich mal hier fragen kann, 
wo es kompetente leute gibt ;)
ein paar grundlegende fragen zur beschaltung des 68HC000 wenn ich selber 
ein minimales system basteln will:

der pin DTACK sorgt ja dafür, dass die CPU anliegende daten anerkennt. 
wenn dtack nicht aktiviert wird, wird gewartet. ich habe aber keine 
RAMs, die solch ein DTACK-signal erzeugen - wie also generiert man evtl. 
aus vorhandenen signalen z.b. mittels PLD dieses DTACK?

dann: die anschlüsse VMA und VPA - brauche ich die, wenn ich doch nur 
ein mini-system will, dass etwas RAM und drei, vier IO-ports hat?

wozu dienen die Function Codes FC0..FC2? ich sehe keinen sinn darin, 
anhand dieser pins zu erkennen, was die cpu grade macht.

das wären erstmal die grundlegendsten fragen die mich beschäftigen.
bis ejtzt habe ich mich mit 8bit-controllern wie dem SAB-C517A und 
ähnlichen auseinandergesetzt, ein gewisses grundwissen ist also da, 
nicht dass irgendwann noch ein kommentar erscheint wie "Trolle bitte 
nicht füttern" ;)
ich hoffe ihr könnt mir da weiterhelfen.
es grüsst
    tobias

von Marko B. (glagnar)


Lesenswert?

DTACK kannst Du auf GND legen wenn Du keine langsamen Geräte am Bus hast 
- Google mal nach "DTACK grounded".

von Stefan W. (wswbln)


Lesenswert?

Den DTACK erzeugt man sich je nach zugegriffenem Speicher (brauch(t)en 
mal mehr oder weniger Wait-States) abhängig vom Addressbereich meist an 
zentraler Stelle (früher TTL-"Klapperlogik", heute PLD). Zum Abfangen 
unbenutzter Adressbereiche hat man dann auch nach spätestens 255 Takten 
(ein 8-Bit-Zähler halt) eine DTACK (oder wenn vorhanden) ein BERR 
generiert, damit sich die Kiste nicht irreversibel aufhängt, wenn das 
Programm mal aus dem Ruder läuft.

Die FC-Signale kann man (muss aber nicht) mit ausdecodieren um z.B. 
User- und Supervisor-Bereiche komplett zu trennen. Dann können im 
User-Mode laufende Programme machen, was sie wollen, sie bringen das 
Betriebssystem (wenn es entsprechend geschrieben ist ;) nicht zum 
Absturz.

VPA und VMA sind Überbleibsel der 6800-Architektur und wurden bei 
späteren 68K Derivaten wieder weggelassen (ausser VMA, der zum AVEC für 
Vektorinterrupts mutierte - IIRC).

HTH,
Stefan

von drcrazy (Gast)


Lesenswert?

Denke die NKC Usergruppe kann dort helfen.
www.drcrazy.de/nkc
NDR-Klein Computer , auch mit 68k CPU

von Joerg W. (joergwolfram)


Lesenswert?

Obwohl der 68k sehr schön zu programmieren ging, denke ich dass es sich 
nicht mehr lohnt, sich damit zu beschäftigen. Vielleicht findest Du bei

http://www.kmitl.ac.th/~kswichit%20/68k/68k.html

ein paar Infos, wie man die notwendigen Signale erzeugen kann.

Gruß Jörg

von A.K. (Gast)


Lesenswert?

> wozu dienen die Function Codes FC0..FC2

Nur für eine externe MMU von Bedeutung.

> die anschlüsse VMA und VPA - brauche ich die

Für Periphierebausteine der 68xx-Reihe. Siehe auch Interface der 
HD44780-TextLCDs. Und wenn man sich einen externen Interrupt-Controller 
ersparen will.

von Stefan W. (wswbln)


Lesenswert?

@Tobias:
Wenn Du noch ein/zwei Z8536 CIO haben willst (PLCC-Gehäuse), dann 
schick' mir Deine Adresse per PM.
Datenblatt hier: http://www.zilog.com/products/partdetails.asp?id=Z08036
(Es gibt irgendwo auch eine Application Note, wie man die an 68K 
anbindet)

Gruß aus Berlin-Tempelhof,
Stefan

von Thomas (Gast)


Lesenswert?

Ich habe hier noch ein Buch "Programmierung des 68000" aus dem 
Sybex-Verlag rumliegen (ISBN 3-88745-060-4).
Mit Grundlagen, Organisation, Ausnahmezuständen, Speicherorganisation, 
Befehlssatz etc.

Interesse?

von Stefan W. (wswbln)


Lesenswert?

> (Es gibt irgendwo auch eine Application Note, wie man die an 68K
> anbindet)

...und die heisst "Interfacing the Z8500 Peripherals to the 68000" aus 
dem Jahre 1982. Ich habe sie aber nirgends im Netz gefunden.

In der c't gab's mal einen Artikel über die CIO: Heft 1, 1987, S 160ff. 
;)

In der Ecke (1987-89) gab es eh' mehrere Projekte mit Mitgliedern der 
68K-Familie (CEPAC, KatCe, ...). Ein Blick in die c't Archiv-DVD 
"1983-1989" lohnt sich...

von Ale (Gast)


Lesenswert?

Ich habe ein Paar MC68EC020 (16 MByte external memory, 32 Bits).
(Und 512kx8 15 ns SRAMs)

Interesse ?

Gruß

von Tobias P. (hubertus)


Lesenswert?

na danke schon mal für die vielen infos, das ist sehr hilfreich.
wenn DTACK auf GND hängt, dann muss mein speicher eine max. zugriffszeit 
haben, die durch

1/fclk

definiert ist, bei 16MHz z.b. 62.5 ns? stimmt das?
im datenblatt steht "if DTACK is recognized during a write cycle, the 
bus cycle is terminated". das heisst doch, dass er einen schreibzyklus 
abbricht wenn DTACK immer aktiv ist?

@stefan wimmer: mit welchem takt wird der 8bit-zähler (z.b.) getaktet, 
wenn ich damit DTACK selber erzeugen will?
was würde mich der spass mit dem Z8536 kosten?

@thomas: dasselbe; ich hätte schon intresse an dem buch. aber umsonst 
ist der tod ;) kosten?

@ale: das ist doch etwas; ich habe bis jetzt keinen gescheiten 
lieferanten gefunden. preis?

vielen dank nochmals für eure hilfe usw.

grüsse & schönen morgen

von A.K. (Gast)


Lesenswert?

> max. zugriffszeit z.b. 62.5 ns? stimmt das?

Nein. Der komplette Speicherzyklus einer 68000 liegt nicht unter 4 
Takten. Der Rest ergibt sich aus dem Datasheet, kann aber ein bischen 
Rechnenarbeit beinhalten (um die nächste Frage vorwegzunehmen: es sind 
nicht 4*62,5ns).

von A.K. (Gast)


Lesenswert?

> das heisst doch, dass er einen schreibzyklus
> abbricht wenn DTACK immer aktiv ist?

"terminated" = beendet
"aborted" = abgebrochen

letzteres gibt es, wenn man statt /DTACK das bus error Signal aktiviert.

von Tobias P. (hubertus)


Lesenswert?

das heisst, bei DTACK auf GND läuft alles normal, aber halt mit 
maximaler geschwindigkeit?
und wie errechne ich die zugriffszeit, die mein RAM höchstens haben 
darf?

von A.K. (Gast)


Lesenswert?

Datasheet suchen, richtige Seite aufschlagen, und ein paar Zahlen 
addieren und subtrahieren.

von Tobias P. (hubertus)


Lesenswert?

aaaha.
mal schauen.... wenn ichs nicht finde melde ich mich wieder.
übrigens: welche werte brauche ich für diese berechnung? ich hab sowas 
noch nie gemacht.

@ale, stefan und thomas: wie sieht's jetzt aus mit büchern, Z8536's und 
dem 68EC020??

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Bevor Du Dir den Kopf über irgendwelche Werte zerbrichst, solltest Du 
Dir mal die Timingdiagramme für die verschiedenen Buszyklen ansehen. 
Dazu solltest Du Dir mal ein Timingdiagramm des von Dir verwendeten 
(oder vorgesehenen) RAMs anschauen, dann sollte schon einiges klarer 
werden.
Dann kannst Du im Timingdiagramm die kritischen Zeitparameter bestimmen 
und die dann im Datenblatt nachschlagen.

Erfolg!

von A.K. (Gast)


Lesenswert?

> ich hab sowas noch nie gemacht.

Da bist du nicht der Erste. Aber speziell jene Leute, die vor der 
WWW-Ära angefangen haben, wundern (ärgern) sich manchmal darüber, warum 
sich heutige Neulinge sich allzu gerne Datasheets laut von anderen 
vorlesen lassen wollen, statt sich mal die Mühe zu machen, sich darin 
selber zurecht zu finden. Letzteres ist übrigens weitaus lehrreicher.

von Tobias P. (hubertus)


Lesenswert?

okay, ich nehm mir das zu herzen und werd' nicht mehr allzu viel mist 
fragen.

von Tobias P. (hubertus)


Lesenswert?

@A.K.: ich habe jetzt mal das datenblatt durchgeschaut; auf seite 150 
vom M68000 User's Manual von motorola unter parameter 14 (AS and DS read 
width  asserted) kann man 100 ns lesen. ich denke mal, das ist doch die 
minimale zeit, die das READ-signal aktiv ist oder? und wenn ich dann 
einen speicherbaustein mit einer zugriffszeit von z.b. 70 ns o.ä. 
verwende bin ich auf der sicheren seite. oder?

gruss

von A.K. (Gast)


Lesenswert?

Ich hab das Ding hier nicht parat. Normalerweise läuft das für die 
Zugriffszeit ab Adressen so, jedenfalls wenn's nicht direkt drinsteht:

Die Adressen kommen <n> nsec nach irgendeiner Taktflanke (delay).
Die Daten müssen (lesend) rechtzeitig vor irgendeiner Taktflanke da sein 
(setup time).

Zugriffszeit lesend ist dann: Anzahl ganze oder halbe Takte mal 
Zykluszeit, minus address delay, minus data setup time.

von Tobias P. (hubertus)


Lesenswert?

danke, das war's was ich wissen wollte.
das datenblatt ist halt sehr umfangreich, und wenn man (noch) nicht so 
vertraut ist mit der cpu sind einige sachen halt schwer zu finden.

mal noch schauen, was ale stefan und thomas meinen... ;)
jetzt gibts aber erst mittagessen (jedenfalls bald).
guten appetit dann! ;)

von Ale (Gast)


Lesenswert?

@Tobias

2 Euro pro Stück + Porto (via Überweisung) (FPQ100 Gehäuse).
512Kx8 SRAM 15 ns SOJ-36 : 2 Euro pro Stück + Porto


Ich habe das Dattenblat vom MC68020 viele male gelesen, aber habe noch 
nicht ein schaltung gemacht. Ich spiele noch mit den Idee eine zu 
machen.

Gruß

von Stefan W. (wswbln)


Lesenswert?

Tobias Plüss wrote am 16.03.2007 um 08:00 :
> @stefan wimmer: mit welchem takt wird der 8bit-zähler (z.b.) getaktet,
> wenn ich damit DTACK selber erzeugen will?

Na, irgendeinen Systemtakt hast Du doch - oder?


> was würde mich der spass mit dem Z8536 kosten?

...eine e-Mail mit Deiner Postanschrift und ein artiges "Dankeschön" :-)


und am 16.03.2007 um 10:21 :
>ale, stefan und thomas: wie sieht's jetzt aus mit büchern, Z8536's und
dem 68EC020??

Gemach, gemach!  Unsereiner muss tagsüber seine Brötchen verdienen (mit 
Elektronikentwicklung und VHDL-Schreiberei) und kann erst abends wieder 
surfen.


PS: klemmt Deine Shift-Taste oder bist Du einer dieser militanten 
Kleinschreiber?  ;-)

von Tobias P. (hubertus)


Lesenswert?

@Stefan Wimmer:
Nein meine Shift-Taste klemmt nicht; deshalb beachte ich jetzt extra für 
dich die Gross-/Kleinschreibung.
Da ich heute in der Schule war (bin erst im 2. Lehrjahr Elektroniker) 
hatte ich den Tag über genug Zeit, im Internet zu sein, deshalb meine 
vielen Posts ;) (Irgendwie muss man sich ja auch die Zeit evrtreiben...)

Zum DTACK: Ja, ich denke mal, ich kann direkt einen gewöhnlichen 
Quarzoszillator mit z.B. 12 MHz oder 10 MHz an den 68HC000 anschliessen. 
Und mit diesem Takt kann ich dann auch gleich meinen Zähler, der das 
DTACK-Signal erzeugt, betreiben?
noch was: der Zähler darf erst zu zählen beginnen, wenn die CPU auf eine 
Adresse zugreift oder? also immer dann, wenn UDS, LDS oder RW aktiviert 
wurde?

@Ale:
Ja ich habe meinen 68HC000 auch schon lange rumliegen... Das Problem 
ist, dass ich ihn aus einer Maschinensteuerung ausgebaut hab, die ich im 
Elektroschrott in der Firma, bei der ich arbeite, gerettet habe. Deshalb 
weiss ich nicht, ob die CPU noch funktioniert... aber das wird sich 
zeigen wenn ich das erste Board gebastelt habe.
übrigens: die 2 Euro pro Stück 68EC020 + Porto klingen verlockend; 
lieferst du auch in die Schweiz? :D Das Gehäuse FPQ ist zwar etwas 
unpraktisch zum Handlöten (denk' ich mal), aber wird schon  irgendwie 
gehen.

es grüsst
     tobias

von Ale (Gast)


Lesenswert?

@Tobias:

Wenn du bezahlst Porto, ich kann nach Burkinafaso senden ;-).

Die FPQ100 ist @ 0.65 mm pro pin, es geht mit ein klein Lötkolben oder, 
mit ein Heißluftlötkolben.

Gibt Protoplatinen für SMD Bausteine, wenn du möchtest nicht eine 
machen.

Ich habe lust (schon lange) an eine 68k Platine, ich kann ein Schaltplan 
ohne probleme machen, ein CPLD wird viel hilft, ich kann es auch 
programmieren.

Sag mal was für ein Schaltung magst du. Ich habe gesehen en Paar 68901 
(UART) aber ich kann nicht erreichen wo... Rechelt hat es nicht und die 
große C auch nicht... Aber gibt (Vielleicht ein ATMega8 oder so, kann 
als Interface arbeiten..., nicht schlecht).

Ich bin interessiert, ob du hilfe braucht oder möchtest.

Gruß

Ale

von Tobias P. (hubertus)


Lesenswert?

@Ale:
Was ist auch plötzlich mit deiner Sprache passiert? ;)

Jedenfalls.... Das Schema für ein Board mit 68k-CPU kann ich (glaube 
ich) schon zeichnen, sollte gehen. Aber für den PLD wirds schon 
schwieriger... Ich muss mir ja eine gescheite Adressdecodierung basteln. 
Zudem muss ja noch das DTACK-Signal erzeugt werden.
Ich verwende bevorzugt Altera MAX7000S-PLDs, da wir diese in der Firma 
auch einsetzen. Aber da ich mit denen (und auch der Software Quartus II) 
noch nicht sooo vertraut bin, wird es schwieriger, etwas 
funktionierendes zusammenzubasteln.
Aber wenn du einen Schaltplan hast, wäre ich natürlich interessiert 
daran. Ich will zwar mein eigenes Schema usw. zeichnen, aber von einem 
vorhandenen Schaltplan könnte ich vielleicht das eine oder andere 
abkupfern ;)

es grüsst
     Tobias

von Ale (Gast)


Lesenswert?

@Tobias:

Meine Schprache kenntise ist ein bisschen klein, ich weiss, aber mit 
mehr Übung, es geht besser, ich hoffe es, aber wo ich wohnt, gibt zu 
viel Alemmanisch Dialekt, und es hilf nicht :-(, zu viel Fufzig, gucken 
und Zwö.

Hast du die Dattenblat für 68020 gelesen ?, und wie DSACK0/1 
funktionieren ?

Wenn du gehst die 68000 Weg, es ist viel einfacher. Mit 8 MHz Takt, 
Einfach DTACK nach GND, und plötlich, ein Synchronisch 68K (Geht bis 12 
MHz mit schnell SRAM, 70 ns oder schneller).
Gibt Flash mit 70 ns access time, aber vielleicht wurde nicht schlecht 
eine Paare EPROM, aber diese sind langsamer, 100 ns für 32kx8.

Die Schaltplam am http://www.kmitl.ac.th/~kswichit%20/68k/68k.html
klingt gut, aber ich wurde im Prinzip ein normal Text LCD binden mit ein 
HC374 oder 574, ich mag Schnittstelle nicht viel. Du kannst ein einfach 
Address Dekodierung Logik mit ein HC138 machen (Vergisst *AS nicht). Zum 
anfangen, kingt gut:

Ein 68 k, 2 EPROM, 2 RAM, ein *374 mit ein Text-LCD und extra LED für 
debug, Oszillator, Reset (wichtig) und DTACK nach GND, direkt. Je 
Eingänge mit ein 4k7 Wiederstand nach VCC.

Nach du kannst ein CPLD programmieren und mehr funktionalität bilden.

(DIe 68020 kann im 8/16 oder 32 Modus arbeiten)

Ich sende nach ein Schaltplan für ein 020 System mit mehr Kraft.

Gruß

Ale


von Tobias P. (hubertus)


Angehängte Dateien:

Lesenswert?

hallo ale,
leider hatte ich noch keine gute gelegenheit, das datenblatt zum 68020 
zu lesen. deshalb weiss ich leider auch nicht, wie DSACK0/1 
funktioniert... :(
ich war bis jetzt beschäftigt mit dem zeichnen eines schaltplans (für 
den 68HC000). einige sachen habe ich von der website, auf die dein link 
verweist, abgeschaut.
ich setze einen cpld (Altera EPM7064SLC44) zum decodieren der adressen 
ein. der cpld erzeugt mir auch gleich den takt für den UART. allerdings 
habe ich die WE- und OE-eingänge der RAMs bzw. der FLASH-bausteine etwas 
anders beschaltet. ich poste hier mal meinen schaltplan. er ist zwar 
noch nicht ganz fertig... aber wenn du zeit hast, könntest du natürlich 
mal kurz schauen, ob das, was ich gemacht habe auch geht ;)

was ich noch nicht ganz verstanden habe: wie löst man einen interrupt 
aus? ich denke mal, man muss einfach IPL0..2 auf low legen? wenn z.b. 
ein interrupt der priorität 4 ausgelöst werden soll, dann schaltet man 
IPL2 auf 0. und was passiert dann?

also, wie gesagt: guck mal in meinen schaltplan, wenn du zeit hast, das 
wäre toll ;)
es grüsst
    tobias

von A.K. (Gast)


Lesenswert?

Wenn du mehr als einen Interrupt-Level nutzen willst, benötigst du einen 
Prioritäts-Encoder ('147 oder '148).

Mit oder ohne diesen: Wenn wie bei dir die Periphiere selber keine 
Vektoren erzeugt, dann verwendest du einfacherweise die Autovektoren: im 
Interrupt-Ack-Zyklus (FCx=7) VPA aktivieren (womit ich meinem Mist oben 
widerlege und einen weiteren Sinn der FC-leitungen aufzeige).

VPA wirst du auch im Adressraum des 6850 aktivieren müssen. Sonst weiss 
die CPU nicht, dass sie des Zyklus via VMA/E durchführen soll.

An Stelle des 6850 würde ich freilich einen 68681 einsetzen (obacht: 
nicht die XR-Version, sondern die für 68000-Bus - gibt's bei Kessler). 
Erspart mindestens mal den externen Baudratengenerator und liefert noch 
ein paar I/O-Pins für eventuelle Statusanzeigen mit.

Zur Beurteilung wär's nicht schlecht, mehr über den Inhalt vom CPLD zu 
erfahren. Das Logikschema allein kann's ja nicht nicht sein.

Wenn die Zugriffzeit der Speicherbausteine eng wird, dann ersetze in 
deren Adressdekodierung die AS-Leitung durch die passenden FC-Modi. 
Ergibt Zugriffszeit ab Adressen statt ab AS und schon hast du einen 
halben Takt mehr Zeit. Für den Rest sorgt ohnehin xDS.


von A.K. (Gast)


Lesenswert?

PS: OE ist nicht das Gegenteil von WE, tertium datur. Deine Version 
erzwingt AS in der Adressdekodierung. Andersrum wird ein Schuh draus: OE 
aus AS und R/W ableiten, eine einzige OE-Leitung reicht dabei für beide 
Bytes aus.

von Thomas (Gast)


Lesenswert?

@Tobias:
Für das Buch hätt ich sonst 10e inkl. Versand gesagt. Wenns in die 
Schweiz nicht teuer wird.
Wenn du Interesse hast kannst ja mal die Email da lassen, dann müssen 
wir das nicht im Forum verhandeln.

Ich habe aber mal die Seiten aus dem Buch gescannt, vielleicht reichts 
dir ja schon.
Ist nur etwas größer geworden, darum bei Rapidshare:

http://rapidshare.com/files/21615853/eBook_Programmierung_des_68000.pdf.html

von Tobias P. (hubertus)


Lesenswert?

@A.K.: ich meinte irgendwo mal was gelesen zu haben, dass die CPU ein 
nicht angefordertes byte ignoriert (also wenn die cpu z.b. nur das 
high-byte will, und man aber beide bytes liefert, wird das low-byte 
ignoriert). ich war mir nur nicht mehr ganz sicher. nun da du meine 
vermutung aber bestätigt hast, kann ich mein cpld-schema etwas 
vereinfachen... und spare somit einen pin.
ich werde etwas später noch das komplette schema des CPLD schicken. es 
ist ein altera EPM7064SLC44-10 (falls ich das noch ncht erwähnt hatte).
was meinst du, soll weiter noch im CPLD sein? ich habe nur ein schema, 
da ich kein VHDL kann. aber das schema war ja sowieso noch nicht 
fertig...

@Thomas:
klingt nicht schlecht; ich hätte schon intresse an dem buch.
mail mir doch mal:
tobias punkt pluess at gmx dot net
würde mich freuen!

es grüsst
     tobias

von A.K. (Gast)


Lesenswert?

CPLD: VPA beispielsweise fehlt, sowie die DTACK-Erzeugung.

VMAN kommt mir komisch vor - warum nicht gleich ins UART-Select mit 
einbauen?

> dass die CPU ein nicht angefordertes byte ignoriert

Was sollte sie sonst damit machen?

von Tobias P. (hubertus)


Lesenswert?

guten morgen!
@A.K.:
> Was sollte sie sonst damit machen?

es wäre ja möglich, dass die CPU "verwirrt" wird, wenn man daten 
liefert, die sie nicht erwartet hat. man kann ja nie wissen... da wir 
das aber jetzt geklärt haben, habe ich nur noch einen OE-ausgang am 
CPLD.

zu VMAN:
ich habe das von der site kopiert, auf die mich Ale verwiesen hat weiter 
oben. aber du hast recht - ich könnte das ins UART-chip-select mit 
einbauen.

übrigens:
wenn ich ein LC-display verwenden möchte - kann ich das direkt an den 
datenbus hängen? müsste ja theoretisch möglich sein! ansteuern kann man 
es ja dann über Enable, oder? ich muss dann einfach, wenn ich auf den 
adressbereich des lcd zugreifen will, VPA aktivieren. stimmt das?

grüsse & einen guten start in die neue woche!

tobias

von A.K. (Gast)


Lesenswert?

> wenn ich ein LC-display verwenden möchte - kann ich das direkt
> an den datenbus hängen?

Klar. Brauchst natürlich ein separates E in dem die Adressedekodierung 
bereits drin ist. VPA muss wie bei allen auf "E" basierenden 
Periphierebausteinen dabei aktiviert werden.

von Tobias P. (hubertus)


Lesenswert?

@A.K.: okay. ich lege mir also einen adressbereich für das LCD fest. 
dann wird das chip-select für diese adresse mit E oder-verknüpft und 
dieses signal dann auf das lcd geführt - richtig? ich muss dann nur noch 
dafür sorgen, dass wenn auf diese lcd-adresse zugegriffen wird, VPA 
aktiviert wird.

ich glaube, langsam blicke ich durch das gewirr der signalleitungen 
etwas durch. nur interrupts - die kapier' ich nicht, aber ist ja auch 
(noch) nicht nötig. ich habe IPL0..2 fest auf Vcc gehängt.

heute abend werde ich dann das aktuelle schema posten - momentan habe 
ich keinen zugriff darauf, weil es zu hause liegtt und ich im moment in 
der firma sitze.

einen schönen nachmittag wünsche ich allerseits,
gruss
   tobias

von A.K. (Gast)


Lesenswert?

Ungefähr so:
LCD: E-LCD=1 wenn E-CPU=1 UND VMA=0 UND "LCD adressiert"
VPA: VPA=0 wenn FCx=7 ODER "6850 adressiert" ODER "LCD adressiert"

von Tobias P. (hubertus)


Lesenswert?

@A.K.:
ungefähr so hatte ich das auch gedacht, ausser dass ich FC0..2 nicht mit 
einbezogen hätte.
aber etwas ist mir noch unklar:
wenn

E-LCD = E-CPU & VMA & "LCD adressiert" ist,

dann ist ja das E-LCD auf "1" wenn ich das LCD adressiere und ein 
datenbyte ausgebe. es soll doch aber "0" sein, denn der enable-eingang 
eines LCD reagiert doch auf die fallende taktflanke?

von A.K. (Gast)


Lesenswert?

Das "E" vom LCD ist im Prinzip das gleiche E wie bei 6850 und 68000, nur 
fehlt dem LCD das CS-Signal, so dass man es entsprechend gaten muss. Was 
passt dir am E nicht? E vom LCD ist active high, E der 68000 auch.

Die Einbeziehung von FCx=7 sorgt für Interrupt-Autovektoren. Wenn dir 
ein einziger Interrupt-Level ausreicht, kannst du dir dann eine der 3 
IPLs als IRQ-Leitung aussuchen und die anderen inaktiv lassen. Ohne die 
FCs hängt der Interrupt-Acknowledge-Zyklus im Wald.

von Tobias P. (hubertus)


Lesenswert?

@A.K.:
mein LCD hat einen chip-select eingang (ich verwende das EA DOGM163W.A).
das heisst ich brauche diese decodierung nicht oder? ich kann E-CPU und 
E-LCD verbinden und muss dann nur noch das Chip Select decodieren.
zu den interrupt autovektoren:
wie funktioniert das mit autovektoren?
normalerweise liefert ja das peripheriegerät, das einen INT anfordert, 
auch gleich noch die passende vektornummer. wie funktioniert das bei 
autovektoren?

von A.K. (Gast)


Lesenswert?

Klar, wenn das Ding ein CS hat, kann direkt das E-Signal der CPU 
verwendet werden.

Ein 6850 liefert keine Vektoren, ein 68681 schon. Willst du den 6850 mit 
Interrupts verwenden, muss der Vektor irgendwo her kommen. Ist beim 
Int-Ack-Zyklus VPA aktiv, sucht sich die CPU den Vektor selber aus. Rest 
siehe Handbuch.

von Tobias P. (hubertus)


Angehängte Dateien:

Lesenswert?

hallo A.K.,
sry dass ich mich so lange nicht gemeldet habe.
ich war am arbeiten...
ich habe jetzt mal mein schema weitergezeichnet. noch nicht 100%ig 
fertig, aber der grösste teil schon. den 6850 habe ich jetzt durch den 
68681 ersetzt.

nun habe ich auch das CPLD-schema aktualisiert. das sollte jetzt mit dem 
anderen schema übereinstimmen...
DTACK habe ich vorläufig mit GND verbunden. ich wollte den pin einfach 
mal im PLD haben, falls ich DTACK doch brauchen sollte muss ich dann nur 
den PLD ändern und nicht meine leiterplatte.

gruss
 tobias

von A.K. (Gast)


Lesenswert?

So ist's nun auch wieder nix, der 68681 hat ja sein eigenes DTACK. Was 
meist du wohl wozu das gut ist... Und versuch endlich mal zu verstehen, 
wozu DTACK gut ist, sonst bleibt das bloss Bildflug. Ausserdem gilt: 
entweder DTACK=0 oder VPA=0, aber nie beides.

Alle Peripherie die auf "E" basiert muss VMA berücksichtigen. Der Grund 
dafür lässt sich auch wieder in den Busdiagrammen vom Datasheet 
bewundern.

Das User Manual der 68000er (MC68000UM) hast du aber schon mal 
durchgeblättert?

von Tobias P. (hubertus)


Lesenswert?

Guten Morgen,
@A.K.:
ja, das 68000 User's Manual habe ich (heruntergeladen von Freescale).

Nun muss ich also folgendes tun:
Immer wenn das LCD aktiviert wird, muss VPA aktiviert werden. Auf das 
LCD darf erst dann zugegriffen werden, wenn VMA aktiviert ist - sehe ich 
das richtig?

Dann zu DTACK: ich meinte gelesen zu haben, dass man es fest auf GND 
hängen kann?
Wenn dem nicht so ist, dann muss ich also dafür sorgen, dass DTACK 1 
wird, wenn VPA 0 wird. Also etwa so:

DTACK = (nicht VPA) oder "DTACK vom 68681"

und

VPA = "LCD adressiert"

Kann der rest, den ich gezeichnet habe, so ungefähr funktionieren?

Grüsse
   Tobias

von A.K. (Gast)


Lesenswert?

VPA/VMA: ja.

DTACK=GND: geht unter bestimmten Umständen: Nämlich dann, wenn man weder 
Peripherie verwendet, die DTACK selbst erzeugt (68681), noch welche die 
kein DTACK verträgt (LCD,6850).#

> dann muss ich also dafür sorgen, dass DTACK 1
> wird, wenn VPA 0 wird

Und was wird aus dem DTACK vom 68681? Kurzschluss? Ignorieren?

Nö, das ist ein grundfalscher Ansatz. Andersrum: DTACK aktivieren, wenn 
jene Kunden adressiert sind, die es benötigen (ROM, RAM, Ports ohne 
DTACK wie 373/541). Und einen Monoflop ins CPLD, das nach zig Takten 
Buszyklus ohne DTACK diesen mit BERR abbricht.

von A.K. (Gast)


Lesenswert?

Apropos DTACK: aktivieren heisst hier Open Collector, oder Tristate, 
wenn nicht zuständig. Denn wenn aus dem CPLD DTACK=1 kommt und aus dem 
68681 DTACK=0...

Auch hier wäre mal wieder etwas Lektüre sinnvoll, du beweist eins ums 
andere Mal, dass du keine Vorstellung von den zwei Buszyklen der 
68000-CPU zu haben scheinst (68xxx-Modus und 68xx-Modus). Und das steht 
m.E. recht deutlich und ausführlich im Manual beschrieben.

von Tobias P. (hubertus)


Lesenswert?

ja. du hast recht... aber das manual ist so umfangreich, dass man als 
nicht-profi kaum weiss, wo man was finden soll.
wenn DTACK ja open collector ist, kann ich das ja ohne weitere 
vorkehrungen zusammenhängen... nur noch mit einem pullup versehen.

ich muss dann DTACK so beschalten, dass es aktiviert wird, wenn ich auf 
den uart zugreife oder wenn ich auf andere peripherie zugreife. nach zig 
takten soll berr aktiviert werden. richtig?

von A.K. (Gast)


Lesenswert?

> wenn DTACK ja open collector ist

DTACK ist ein wie eine Datenleitung bei Lesen: Wer adressiert ist, 
aktiviert sie. Erst high, dann irgendwann low. Jeder nicht adressierte 
Baustein lässt sie offen.

Man kann ggf. den gleichen Effekt mit Open Collector erzielen, deshalb 
meine Erwähnung davon.

> ich muss dann DTACK so beschalten, dass es aktiviert wird,
> wenn ich auf den uart zugreife

Herrje, ist das so schwierig? Nein, grad die UART sorgt schon selber 
dafür, aber das RAM nicht. Und BERR bricht Versuche ab, auf 
Speicherbereiche zuzugreifen wo niemand sitzt und daher niemand DTACK 
oder VPA liefert.

von Tobias P. (hubertus)


Lesenswert?

wie soll ich denn DTACK sonst beschalten, damit es auch aktiviert wird, 
wenn man auf's RAM zugreift?
irgendwie habe ich den faden verloren...

von A.K. (Gast)


Lesenswert?

Ich lass dir jetzt mal ein paar Tage Zeit das Handbuch zu studieren - es 
hat einfach keinen Sinn so.

von Tobias P. (hubertus)


Lesenswert?

sry dass ich dich bis jetzt so geärgert habe mit meiner fragerei. das 
handbuch habe ich schon mehrmals studiert - zwar nicht das ganze, aber 
"Signal Description" sowie "8/16 Bit Bus Operation", was ja auch - 
glaube ich - die relevanten teile sind.
ich melde mich wieder wenn ich mein zeug fertig gezeichnet und das 
manual studiert habe.
geht das so in ordnung??

von Tobias P. (hubertus)


Lesenswert?

@Thomas: wirst du jetzt dein buch verscherbeln? :D ich könnte zum M68000 
User's Manual gut noch etwas lektüre brauchen.

gruss & schönen abend

von Tobias P. (hubertus)


Lesenswert?

@A.K.:
ich habe jetzt das datenblatt des 68000 nochmal studiert.
und nun habe ich das CPLD-schema nochmals überarbeitet...

folgendes:
DTACK liegt immer auf 0, ausser wenn das LCD angewählt wird (das ja auf 
E basiert) oder wenn der UART aktiv ist (der ja sein DTACK selber 
macht). ich habe den PLD-ausgang als tristate ausgeführt und extern mit 
einem pullup versehen, so kann sowohl der UART DTACK aktivieren, als 
auch der PLD.

BERR liegt immer auf high. wenn die cpu jedoch auf einen adressbereich 
zugreift, den ich nicht bestückt habe, wird berr auf low geschaltet.

FC0..2 habe ich NAND-verknüpft, sodass ich für den UART ein 
INTACK-signal habe.

VPA wird aktiviert, wenn auf das LCD zugegriffen wird, sonst ist es auf 
1.

das solte so jetzt mehr oder weniger stimmen oder? ein buch habe ich mir 
auch gekauft, aber es ist noch nicht da.

ein schaltplan folgt noch....

gruss & schönen abend
   tobias

von Tobias P. (hubertus)


Lesenswert?

@Ale:
wie siehts aus, kannst du einen deiner 68EC020-Chips entbehren?
Ich habe mein CPU-Board jetzt fertig gezeichnet; Schema ist erhältlich 
bei intresse (mail schicken an tobias punkt pluess @ gmx dot net).
das problem ist: da ich nur einen einzigen 68000 chip habe, gibt's 
keinen ersatz wenn ich den verheize. ansonsten hätte ich dann aber immer 
noch den 68020.
übrigens: über DSACK0/1 und die weiteren signale kann ich die ein paar 
auskünfte geben; in der firma verwenden wir neben dem MC68302 und dem 
MC68332 auch den 68020. und ich konnte glücklicherweise ein paar bücher 
ausleihen, in denen vom MC68000 bis zum MC68332 alle beschrieben werden, 
auch incl. Schemata für Minimalsysteme. Mit ausführlichen beschreibungen 
zu den einzelnen signalen usw.
würde mich freuen wenn du dich mal per mail melden könntest (ich habe ja 
deine adresse leider nicht).
gruss tobias

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.