Fragen zum 68k

Muß der Speicherbereich, in dem die Interuptvektoren liegen, zwingend RAM sein oder ginge es auch, z.B. ab $000000 EPROM und daran anschliessend das RAM zu legen? Damit würde sich der Schaltaufwand für ein Minimalsystem verringern, da keine aufwendige ROM-Einblendung für den Resetvektor und SSP erforderlich wäre. Zu -DTACK noch: Reicht 150ns EPROM, wenn ich DTACK gleich mit den Selektsignalen des Adress- dekoders verknüpfe und der 68k mit max. 8 MHz getaktet ist? Beim EPAK68k hat es die ct so gemacht und dort sogar mit 250ns EPROMs benutzt.

--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de 
HTML mails will be forwarded to /dev/null.
Reply to
Peter Heitzer
Loading thread data ...

Peter Heitzer schrieb:

RAM

Der Vektor für Reset muß natürlich zwingend im EPROM sein, damit de r Prozessor überhaupt sein Programm findet.

, da

lich

Dann leg doch das ROM auf die unteren Adressen, beginnend mit $0. Du kannst die Vektoren dann eben nicht mehr im Betrieb ändern, was bedeutet, daß dein BIOS mit fixen Zeigern arbeitet.

ress-

Dann würde ich sagen, das sollte reichen. 90ns nach DTACK sind die Date n gültig, und 187 ns dauert es, bis AS und DS wieder auf "high impedance" sind.

Holger

Reply to
Holger

Deshalb schrieb ich ja ab $000000 EPROM

Ich kann ja am Anfang jeder ISR ein MOVE.L #,A6 JMP (A6) setzen. Dann ist es auch wieder änderbar. Ich kann ja dann das erste KiB im RAM verwenden, damit es mit Ausnahme des Offsets identisch zur originalen Vektortabelle ist. Die Verlängerung der Interruptlatenz ist IMO kein Problem, da die im Worst Case sowieso bis zu ca. 350 Taktzyklen beträgt.

Wenn das BIOS sauber programmiert ist, wäre sogar ein System mit Batterie gepuffertem RAM denkbar, welches das ROM auch gleich beinhaltet. Das Programm muß halt mit einem speziellen Programmer ins NVRAM geschrieben werden. Dann könnte man z.B. -WE des RAMs mit A23 verodern. $000000 .. $7fffff = RAM $800000 .. $ffffff = ROM Man darf nur nicht die ersten 8 Bytes so verändern, daß die CPU bei einem Reset nicht mehr booten kann.

--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de 
HTML mails will be forwarded to /dev/null.
Reply to
Peter Heitzer

Kann man immer noch indem man weiter hinten in den Routinen einen JMP über eine Adresse im RAM erledigt. Ist nur aufwendiger und man muss sicherstellen, daß dort ein gültiger Vektor steht wenn der erste IRQ auftritt.

Oder man verwendet einen 68010, der kann die Vektoren verschieben.

Gerrit

Reply to
Gerrit Heitsch

das wird funktionieren.

Wow, das ist echt viel. Unsere T805 von damals hatten 5-10 Zyklen.

Das geht auch. Wenn Du die alten CMOS Static RAMs mit 32k*8 nimmst (z.B. Hitachi), dann kannst Du einfach eine Knopfzelle nehmen. Die halten bis ca. 1V Vcc den RAM Inhalt (getestet habe ich bis 0,6V) und brauchen dabei nicht messbar Strom. Man spielt also nur gegen die Selbstentladung. Wichtig ist nur, dass \CS die ganze Zeit zuverlässig auf Vcc gehalten wird. Und wenn Du auf Nummer sicher gehen willst, nimmst Du eine 2032 mit 3V.

Aber aufpassen, neuere, schnellere Cache-RAMs haben dann recht viel Eigenverbrauch gehabt. Da geht das alles nicht.

Wenn der Programmer die Pins nie kurz schließt, kannst Du einfach die Batterie mit je einem 100kOhm Widerstand nach Vcc und \CS über den Chip löten und selbigen mit Inhalt transportieren. Einfache aber wirkungsvolle Methode.

Marcel

Reply to
Marcel Müller

Diese RAMs gibts immer noch, inzwischen bis 512KB pro Chip in DIP32. Wenn 70ns schnell genug sind liegt der Preis beim Reichelt bei 3,80 Euro das Stück (628512-70). Brauchen im Standby etwas mehr als die 62256, aber immer noch per Akku oder Batterie machbar.

Gerrit

Reply to
Gerrit Heitsch

Kennst Du Zahlen? Also ich hatte damals reichlich Mühe den Verbrauch bei reduzierter Versorgungsspannung überhaupt zu messen. Ich glaube ich habe dann den Spannungsabfall über 1MOhm (oder waren es sogar 10M?) gemessen. Auf gut deutsch Nanoampere.

Marcel

Reply to
Marcel Müller

Der 68k muß bei einer normalen Exception (kein Addresserror oder Buserror) den aktuellen Befehl noch beenden und das kann dauern. Aus der 68k FAQ:

The following lists the interrupt latency for a given processor and the conditions assumed.

MPU Conditions Latency MC68EC000 MOVEM.L xxx.L,D0-D7/A0-A7

16-bit DIVS xxx.L, Dn data bus interrupt at beginning of MOVEM 378 clks

MC68EC000 MOVEM.L xxx.L,D0-D7/A0-A7

8-bit DIVS xxx.L, Dn data bus interrupt at beginning of MOVEM 574 clks
--
Dipl.-Inform(FH) Peter Heitzer, peter.heitzer@rz.uni-regensburg.de 
HTML mails will be forwarded to /dev/null.
Reply to
Peter Heitzer

Marcel Müller wrote on Mon, 13-07-22 23:52:

Womit? Ich könnte das hier nicht, es sei denn ich nähme den Spannungsbereich selbst als Meßwiderwiderstand.

Reply to
Axel Berger

Ich hab auch nur das Datenblatt gelesen und das redet von bis zu 100µA bei der 'L' Version und 10µA bei der 'LL'-Version.

Gerrit

Reply to
Gerrit Heitsch

Axel snipped-for-privacy@b.maus.de (Axel Berger):

Genau so. :-)

M.

Reply to
Matthias Weingart

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.