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
DTACK kannst Du auf GND legen wenn Du keine langsamen Geräte am Bus hast - Google mal nach "DTACK grounded".
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
Denke die NKC Usergruppe kann dort helfen. www.drcrazy.de/nkc NDR-Klein Computer , auch mit 68k CPU
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
> 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.
@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
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?
> (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...
Ich habe ein Paar MC68EC020 (16 MByte external memory, 32 Bits). (Und 512kx8 15 ns SRAMs) Interesse ? Gruß
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
> 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).
> 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.
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?
Datasheet suchen, richtige Seite aufschlagen, und ein paar Zahlen addieren und subtrahieren.
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??
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!
> 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.
@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
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.
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! ;)
@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ß
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? ;-)
@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
@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
@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
@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
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
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.
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.
@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
@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
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?
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
> 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.
@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
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"
@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?
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.
@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?
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.
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
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?
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
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.
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.
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?
> 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.
wie soll ich denn DTACK sonst beschalten, damit es auch aktiviert wird, wenn man auf's RAM zugreift? irgendwie habe ich den faden verloren...
Ich lass dir jetzt mal ein paar Tage Zeit das Handbuch zu studieren - es hat einfach keinen Sinn so.
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??
@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
@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
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.