Forum: Mikrocontroller und Digitale Elektronik Mikroprozessorboard


von Hubertus (Gast)


Lesenswert?

tach auch!!
also, zu meiner frage:
ich möchte ein kleines mikroprozessorboard entwickeln. also nichts mit
mikrokontrollern etc., sondern mit einem richtigen prozessor, ram, rom,
pio, sio etc. das ganze will ich dann mit einer seriellen (oder
parallelen) schnittstelle ausstatten, damit man es über PC in assembler
programmieren kann.
doch jetzt kommts:
was brauche ich alles, um ein vollständiges, funktionierendes system
aufbauen zu können?
sowas in der art wie der "Microprofessor" von multitech MPF-1 (kennt
den jemand? :D) würde mir extrem gut gefallen, doch dazu habe ich
leider keine schaltpläne.
als prozessor ist mir als erstes der Z80 eingefallen. ansich wäre der
nicht schlecht, wenn er auch uralt ist. aber es gibt ja inzwischen neue
versionen, die ein paar funktionen mehr haben.
könnt ihr mir evtl. einen anderen prozessor empfehlen? nicht allzu
teuer sollte er allerdings schon sein.
gibts irgendwo im netz schaltpläne o.ä, die sich mit solchen boards
befassen?
und noch eine frage:
der Z80 hat selbst nur 16 adress- und 8 datenleitungen. wie
bewerkstelligt man das, dass man mit diesen paar leitungen z.b. LEDs
oder 7segment-anzeigen ansteuern kann?
soweit ich weiss, dienen die adressleitungen ja dazu, im RAM die
adresse zu wählen, an der der code ausgeführt werden soll. über die
datenleitungen wird logischerweise das entsprechende byte gelesen (oder
geschrieben). doch wo sind die ein- und ausgänge hin??

fragen über fragen... ich hoffe ihr könnt mir da ein wenig weiterhelfen
:)

grüsse & schönen abend!

von Hubert.G (Gast)


Lesenswert?

Wenn du es nicht aus nostalgischen Gründen machen willst oder sonst eine
zwingende Notwendigkeit besteht solltest du einen großen FPGA nehmen und
 das von dir gewünschte dort hinein implementieren, dann bist du am
Letztstand in der Technik.

von Hubertus (Gast)


Lesenswert?

hallo hubert,
ja ich weiss, das mit dem FPGA habe ich mir auch schon überlegt.
aber FPGAs sind doch nicht ganz billig (jedenfalls teurer als ein
prozessor ;)) und ausserdem wollte ich mal mit einem richtigen
mikroprozessor arbeiten. vielleicht auch aus etwas nostalgischen
gründen ;)

weisst du etwas über das thema??
gruss

von A.K. (Gast)


Lesenswert?

Reise in die Vergangenheit?

Wie stellst du dir die Programmierung vor? Mikrocontroller haben
einfach reprogrammierbaren internen Flash-Speicher. In einem
Mikroprozessorsystem der 70/80-er Jahre hiess es hingegen EPROM rein,
EPROM raus, EPROM rein, EPROM raus, ... Oder EPROM-Emulator. Zumindest
solange, bis das Grundsystem und ein einfaches Monitorprogramm
funktionierte.

Ein Kompromiss wäre ein System auf Basis 68HC11. Von-Neumann
Architektur und mit einem vollwertigen externen Bus ausgestattet,
verfügen sie jedoch über eine serielle Bootloader-Technik mit der sich
externer Flash-Speicher programmieren lässt. Das Ergebnis kann ein
System sein, dass ungefähr einem klassischen 6809-System ähnelt - die
integrierten I/O-Komponenten kannst du ja notfalls ignorieren.

von Magnus Müller (Gast)


Lesenswert?

--> der Z80 hat selbst nur 16 adress- und 8 datenleitungen. wie
--> bewerkstelligt man das, dass man mit diesen paar leitungen z.b.
--> LEDs oder 7segment-anzeigen ansteuern kann?

Die Antwort steht in Deinem eigenen Posting ein paar Zeilen weiter
oben:

--> sondern mit einem richtigen prozessor, ram, rom, pio, sio etc.
--> das ganze will ich dann mit einer seriellen (oder parallelen)
--> schnittstelle ausstatten...

Du hängst die LEDs einfach an den PIO (evt. noch mit
Treibertransistoren).

Gruß,
Magnetus

von Hubertus (Gast)


Lesenswert?

nein so meinte ich das nicht.
anstatt eines EPROMS könnte man ja auch ein NV-SRAM verwenden. die dort
enthaltenen daten kann man leicht ändern.
ausserdem würde es micht nicht stören, wenn ich andauernd das eprom
wechseln muss...
sagt mir lieber, was ich im minimum brauche um ein funktionierendes
system aufzubauen ;) oder ob es irgendwo schaltpläne gibt. ich habe
bereits gegoogelt, aber ich finde nichts rechtes...
ausserdem werden ja auch heute noch prozessoren verwendet. ich sehe
eigentlich kein problem ;)
ich stelle mir das so vor:
auf dem board befinden sich prozessor, ram etc. was es noch so braucht.
dann ist da noch eine programmierschnittstelle. dort kann man einen pc
anschleissen, per software (die ich bereits habe) das programm
übertragen, welches dann im SRAM gespeichert wird, auf dem
controller-board die reset-taste betätigen und das programm läuft aus
dem SRAM ab. nichts mit EPROM umstecken ;)

von SIGINT (Gast)


Lesenswert?

Hallo Hubertus,
  das sind ja ne Menge fragen auf einmal. Aber ich versuche mal die
meisten zu beantworten.
Zuerst zum Thema "Welcher Prozessor":
 Ich glaube der Z80 ist schon die richtige Wahl, da er sehr nah an der
x86 Architektur ist und das wissen somit bedingt auch fuer PCs
anwendbar ist. Zudem findet man sehr viel Software fuer den Z80. Ein
anderer Prozessor der auch sehr interesannt ist, ist der 8051 (MCS51).
Er ist besonders interesannt, da er sowohl als Mikroprozessor als auch
Mikrocontroller eingesetzt werden kann. Ausserdem gibt es den 8051 von
diversen Herstellern mit diverser Ausstattung. Die Architektur find ich
allerdings etwas gewoehnungsbeduerftiger als beim Z80.

Was brauch man alles fuer ein Board!!??! Das haengt hauptsaechlich von
dem eingesetzten Prozessor ab. Auf jeden Fall benoetigst du einen
Speicher fuer die Programme und Daten. Also RAM und ROM. Zusaetzlich
benoetigst du noch Ein- und Ausgabebausteine, um irgendwas an das
System anschliessen zu koennen. Manche Prozessoren haben einen
eingebauten IO/Port (z.B. 6510,8051,etc.).. andere aber nicht.
Manche Bausteine passen nur an die geeigneten Prozessor, da sie fuer
diesen entwickelt wurden. Manchmal kann man mit etwas Zusatzhardware
diese einschraenkung umgehen.
Als naechstes benoetigst du noch eine Logikschaltung, die bei den
passenden Adressen die entsprechenden Speicher, oder IO-Bausteine
freigibt. Da schaut man sich am besten mal fertige Boards an. Und zu
guter letzt benoetigt man natuerlich noch einen Takt und die
Spannungsversorgung.

Wie schliesst man Hardware an den Prozessor an??!!?
Das geht entweder ueber den integrierten IO-Port und wenn dieser nicht
vorhanden ist, wie beim Z80, dann ueber extra IO-Bausteine.
Fuer den Z80 gibt es u.a. ein serielles IO-Baustein und ein paralleles
IO-Baustein (SIO und PIO). Diese Bausteine besitzen internen Speicher
uber den die Funktion gesteuert werden kann. Diese Speicherstellen
werden in den normalen Speicherraum eingeblendet oder im extra
IO-Adressraum. Dieses Konzept hat den grossen Vorteil, dass man fast
beliebig viele IO-Ports anschliessen kann.

Kurzes Fazit:
  Schau dir im Netz mal Entwicklungsboards fuer den 8051 und Z80 an...
da sieht man schon die wichtigsten Grundlagen.
Ich hoffe ich konnte etwas helfen.

Gruss,
  SIGINT

von Hubertus (Gast)


Lesenswert?

2magnus müller:
ok, das ist klar.
aber der PIO hängt ja auch an den selben adress- und datenleitungen wie
das RAM ;) dann muss ich dem pio ja irgendwie sagen können welche LED an
sein soll und welchee aus.
ausserdem war das mit dem PIO einfach geraten, weil ich schon mal sowas
gesehen habe ;)

von Hubertus (Gast)


Lesenswert?

hallo SIGINT,
danke schon mal für die info.
also RAM, ROM, PIO und SIO kann man alle parallel an die Adress- und
datenleitungen des Z80 legen, und über eine entsprechende
logikschaltung kann man den baustein auswählen, der angesprochen werden
soll. ich gehe jetzt mal davon aus, dass jeder baustein sowas wie Chip
Select eingänge hat oder??
also eigentlich ist das ganz gar nicht soooo kompliziert. wenn man z.b.
LEDs anzünden will, wählt man einfach die adresse des PIO aus, gibt über
die datenleitungen die LEDs an, die brennen sollen, und der PIO macht
das dann. war das richtig so?? ;)

danke jedenfalls, dein posting hilft mir sehr viel weiter. :)

von A.K. (Gast)


Lesenswert?

Bevor du den Lötkolben schwingst, solltest du erst einmal eine Idee
haben, wie sowas funktioniert. Drum die Frage: Wie sieht es bei die mir
Assembler-Programmierung von Microcontrollern aus? Das ist nämlich eine
ziemlich gute Voraussetzung für dein Projekt. Immerhin ist ein PIO
nichts anderes als ein paar I/O-Ports eines jener Mikrocontroller, die
dafür keine speziellen Befehle verwenden. Nur befinden sich beim
Controller der gesamte Bus intern, du hingegen sägst das Teil
auseinander und packst den Bus auf das Board.

von Magnus Müller (Gast)


Lesenswert?

--> dann muss ich dem pio ja irgendwie sagen können welche LED an
--> sein soll und welchee aus.

Richtig. Wie du dem PIO das sagst, steht in den Datenblättern des
verwendeten Prozessors (Behfehlssatz) und des PIOs
(Registerbeschreibung).

Gruß,
Magnetus

von Magnus Müller (Gast)


Lesenswert?

--> wenn man z.b. LEDs anzünden will...

Anzünden...? ist vielleicht keine so gute Idee ;o)

von Rahul (Gast)


Lesenswert?

--> wenn man z.b. LEDs anzünden will...

Das stinkt... ;)

von A.K. (Gast)


Lesenswert?

Vielleicht hilft dir das etwas - da hat Benedikt ähnliches gebaut:
http://www.mikrocontroller.net/forum/read-1-185767.html. Allerdings
hatte er einen Logikanalysator parat, das erleichtert die Aufgabe
etwas, wenn (wie bei ihm) Probleme auftreten.

von Magnus Müller (Gast)


Lesenswert?

Ach ja... kleiner Hinweis:

Wenn ich mich nicht irre, gab es in den späten 80ern eine Fernsehreihe
von (Rolf Dieter?) Klein, in der Schritt für Schritt ein modularer
Computer auf Z80-Basis aufgebaut wurde. Vielleicht findet Google was
darüber ("WDR Klein Computer").

Gruß
Magnetus

von Magnus Müller (Gast)


Lesenswert?

Ups... sorry... nicht WDR, sondern NDR !!!

www.google.de/search?hl=de&q=%22ndr+klein+computer%22&meta=

Gruß,
Magnetus

von Sven L. (xumb)


Lesenswert?

Guck mal hier in die Linkliste, da gibts ein paar Links zum Thema:
http://www.mehto.roboterbastler.de/wsnlinks/index.php?action=displaycat&catid=43

Gruß,
Xumb

von A.K. (Gast)


Lesenswert?

Irre - sowas wie Fords Modell T als Bausatz in Originalgrösse.

von Hartmut Gröger (Gast)


Lesenswert?

Hi

Falldu dich für den Z80 entscheiden solltest, empfehle ich dir
folgendes Buch (allerdigs DDR Literatur):

Mikrokontrollertechnik
Autoren: Heiko Kieser/Michael Meder
Verlag : VEB Verlag Technik Berlin

Hat mir damals sehr weitergeholfen.

MfG HG

von Sebastian Heyn (Gast)


Lesenswert?

Dieses Buch gibts leider nirgendswo zu kaufen, da DDR. kennst du ne
bezugsquelle?

von Manos (Gast)


Lesenswert?

Das hier sollte eine grobe Vorstellung geben was Du min. brauchst.
http://www.z80.info/z80_mp.htm

Da kann man dann noch einen 8255 dranklatschen (PIO 3x8Bit
bidirektional), passend dazu noch einen 8251 (SIO - wahrscheinlich
zzgl. MAX232).

Der obige Link ist von dieser Seite:
http://www.z80.info/homebrew.htm

Vielleicht findest Du da noch andere Anregungen...

von Hubertus (Gast)


Lesenswert?

morgen auch,
sry dass ich mich so lange nicht mehr gemeldet hab'. ich musste
gestern weg ;)
vielen dank für eure hilfe. @SIGINT: kann ich evtl. deine email-adresse
haben damit ich dich später evtl.kontaktieren kann?? ;)

@Manos:
ja, genau den 8255 und 8251 wollte ich auch anschliessen.
doch ne kleine frage:
wenn ich die adresse des PIO anwähle, was für ein datenbyte muss ich
den PIO-Baustein senden, damit der bestimmte LEDs (z.b.) die an den
ausgängen angeschlossen sind, aufleuchten lässt?

den aufbau des boards habe ich mir so gedacht:
alle bausteine liegen an den adress- und datenleitungen des Z80.
Die Adressleitungen A13-A15 verwende ich dann für die Auswähl des
entsprechenden bausteins (Chip Select). das ist richtig so oder?
kann so etwas funktionieren?? ;)
mein programm muss ich dann einfach an adresse 0000H speichern und bei
einem Reset des prozessors wird der code ausgeführt.
richtig?? ;)

grüsse & schönen tag!!

von peter dannegger (Gast)


Lesenswert?

Wenn schon Z80 CPU, dann aber auch die Z80 PIO, CTC, SIO, dann hast Du
wenigstens ein ordentliches vektorisiertes Interruptsystem. Der Z80 hat
dafür auch einen IO-Bereich neben dem Speicherbereich.

Die 8255, 8251 sind keine Z80-Bausteine.


Möchte aber auch meine Bedenken anbringen:

1.
Auch bei nur 4MHz ist so ein Design nicht gerade unkritisch im Aufbau.
Ich hatte auch mal mit Z80 experimentiert und massive Störprobleme
gehabt. Falls Du kein erfahrener Layouter bist, rate ich zur 4 Ebenen
Platine d.h. 2 Signallayer mit GND- und VCC-Ebene.

2.
Einen praktischen Nutzeffekt hat das nicht, sondern nur einen reinen
Lerneffekt. Wenn man das dann nur für sich alleine baut, erscheint mir
der Aufwand entschieden zu hoch.

3.
Ich würde eher zum 8051 raten, da hat man schon ein lauffähiges
Minimalsystem (Timer, Ports, UART, RAM, Flash) und kann trotzdem
externen Flash, SRAM, PIO anschließen.
D.h. fertig entwickelte Projekte können durchaus praktisch verwendet
werden, da man sie meistens so umschreiben kann, daß sie ohne externe
Ressourcen auf dem Chip laufen.


Peter

von Wolfram (Gast)


Lesenswert?

4. Du wirst bei den Kosten inklusive Platine bei dem gleichen Preis
rauskommen als wenn du dir ein FPGA-Board holst und im FPGA das ganze
implementierst.
Sollte die erste Platine vor den Baum gehen dann wird es mit Sicherheit
teurer.
Geh mal ins FPGA-Forum da war vor kurzem ein Thread mit einem Z80-Klon
Computer Nachbau.

von Hubertus (Gast)


Lesenswert?

ich möchte das board ja auch nicht einfach so aus spass bauen, denn wie
peter dannegger gesagt hat geht es mir allein um den lerneffekt (und
auch ums basteln ;)). ist halt reines interesse ;)
ich habe noch nicht so wahnsinns erfahrungen mit mikrocontrollern etc.,
deshalb denke ich, ist es sinnvoll, wenn ich zuerst lerne, wie
prozessorene tc. funktionieren und mich erst DANN dem FPGA zuwende.
aber ich denke mal, mit dem Z80 kann man schon recht viel anfangen. ich
muss halt mal bei gelegenheit ein schaltbild entwickeln.
ich werde das dann hier posten um eure meinung dazu zu lesen ;)

gruss

von Karl H. (kbuchegg)


Lesenswert?

> wenn ich die adresse des PIO anwähle, was für ein datenbyte muss ich
> den PIO-Baustein senden, damit der bestimmte LEDs (z.b.) die an den
> ausgängen angeschlossen sind, aufleuchten lässt?

Besorg dir das Datenblatt des 8255.
Der Chip hat 3 komplette 8 Bit Ports an die die Leds angeschlossen
werden können. Dazu muss man den Chip aber programmieren. Der
hat ein Controll-register, über das man dem Chip mitteilt
wie jeder einzelne Ausgabe-Port funktionieren soll (Eingabe
oder Ausgabe). Dann steht für jeden Port eine spezifische
I/O Adresse zur Verfügung an die du einfach das Byte ausgibst
und der Chip schaltet es an die Ausgänge durch (oder eben
anders rum für Eingänge).

Aber ich denke die anderen haben recht: Auch wenn der Aufbau
eines Z80 Sytems keineswegs Raketentechnik ist, so bist
du mit einer Ein-Chip Lösung fürs erste besser bedient.
Einen ATMega hängst du einfach an die Stromversorgung (im
wesentlichen) und er läuft und lässt sich programmieren.
Mit einem Z80 System musst du schon etwas mehr Aufwand treiben.
Das fängt schon mal bei einer Beschaltung für den Quarz an
und hört mit den Chip-Select Logiken (getrennt für Memory und
I/O) auf.

von Hubertus (Gast)


Lesenswert?

ich guck mir mal das 8255-datenblatt an (oder das des original Z80-PIO).
aber eins habe ich jetzt nicht gleich verstanden: warum müssen die
chip-select logiken für memory und io getrennt sein? in den
schaltplänen, die ich bisher gesehen habe, war das auch nicht der fall.

von peter dannegger (Gast)


Lesenswert?

"ich guck mir mal das 8255-datenblatt an"


Laß dir keinen Bären aufbinden, das sind doch Intel Chips.

Wenn es schon ums Lernen geht, dann wenigstens richtig.
D.h. dann sollte das Ganze doch auch interruptfähig sein und das geht
nur mit den Z80-Peripheriechips.


Peter

von Hubertus (Gast)


Lesenswert?

also den 8255 sollte ich nicht mit dem Z80 verwenden?
eher den Z84C20?

von Egon (Gast)


Lesenswert?

Du kannst auch einen 68000er nehmen. Da lernt man noch viel, viel mehr.
User-mode, Supervisor-mode, verschiedene Programm- und Datenbereiche,
Coprozessor und wie man dem Teil auf die Schliche kommt, wenn es bei
irgendeinem Zugriffsfehler alle Beine 'fliegen' läßt.

von Karl H. (kbuchegg)


Lesenswert?

> warum müssen die
> chip-select logiken für memory und io getrennt sein?

Nun. Müssen tun sie nicht.
Aber es wird einfacher.
Der Z80 hat getrennte Adressräume nach Speicher und I/O
und dementsprechend auch getrennte Befehle im Befehlssatz.
Klar kann man eine PIO auch Memory Mapped betreiben. Ob
das Sinn macht ist eine andere Frage.
Kommt drauf an, welche Speicherchips du benutzt. Um mal mit
Zahlen zu hantieren: Sagen wir mal du benutzt 8KB Speicher.
Dann muss die Chip-Select Logik aus den 16Bit Adressleitungen
8 Signale für jeweils einen Speicherchip generieren (8 aus
3 Decoder an die Leitungen A15, A14, A13). Legst du da
jetzt eine PIO rein, dann blockiert die dir eine komplette
8KB Kachel im Speicher. Anstatt 64KByte hast du nur mehr
56KByte, allerdings hast du eine PIO, die sich im Speicher
x-mal wiederholt. Ist also nicht so toll. Daher baut
man solche Peripherie in den I/O Bus ein. Der hat zwar nur
256 mögliche Adressen, aber normalerweise langt das Dicke.
Die Z80 signalisiert mit 2 Pins, ob eine am Adressbus anliegende
Adresse für den Speicher oder für I/O gedacht ist, daher
brauchst du klarerweise auch 2 getrennte Chip-Selekt Logiken:
Die eine, für den Speicher wird hauptsächlich auf den Leitungen
A15, A14, A13, A12 ... arbeiten. Die für den I/O Bus wird die
Adressleitungen A7, A6, A5, ... verwurschten.

von Rahul (Gast)


Lesenswert?

Irgendwo habe ich noch Kopien von E.M.M.A, das war ein EMUF-Projekt IMHO
aus der Elrad, müsste also auch auf der heise-DVD dabei sein.
Das war ein Einplatinen Mikroprozessorboard auf 6502-Basis inklusive
doppelseitigem Layout.
Wenn man nicht mal Messtechnik (Logic Anaylizer etc) für sowas hat, hat
man doch eigentlich auch keinen Lerneffekt, wenn man sich nicht mal das
Bus-Timing etc angucken kann.

Elektor hatte auch mal ein Controller-Board als EMUF.
Der NDR-Klein-Computer bestand sogar aus mehreren Platinen (Bus).
Wenn jemand an solch "altem Zeug" Interesse hat, könnte ich ihm noch
einen Apple ][-Nachbau zukommen lassen...

Vielleicht sollte jemand im Wiki einen Beitrag mit "sinnfreien
Projekten" machen, wo man dann drauf verweisen kann.

von Hans (Gast)


Lesenswert?

also ich würd mir mal den avr einverleiben.. dann einen kleinen arm7 und
wenn du da alles verstanden hast hol dir einen fetteren arm mit sdram
usw...

der 68000 ist zwar nett aber arm ist derzeit einfach verbreiteter...
von der komplexität sind sie ziemlich ähnlich...

von sowas altem wie dem z80 würd ich abstand nehmen.. nicht mehr
zeitgemäß... da kannst gleich einen 80x186 nehmen.. die dinger sind
zwar ok aber wie gesagt... arm bringt bessere leistung pro mA und
nebenbei rennt auch linux wenn man mal so weit sein sollte ;P

im übrigen kostet ein LPC2131FBD64 unter 9e bei RS ! dein Z80 kostet 11
;)... ich persönlich würde aber einen lpc2138 hernehmen.. speicher hat
man nie genug...

das nächste über das du dir gedanken machen solltest ist wie du das
teil programmieren willst... für den z80 wirds sicher compiler geben
aber ich rate dringend zu einem prozessor mit gcc-unterstützung...

von einem 8051 rate ich ab weil die dinger einfach nicht mehr zeitgemäß
sind.. zumindest das zeug was schon ewig am markt ist.. und da ist dann
der springede punkt... avr ist neuer und mitlerweile gibts genug infos
damit man sich jahre lang durchlesen könnte ;)

also meine empfehlung... atmega128 verwenden bis man wirklich erfahrung
hat in embedded programmierung.. sonst ist eine größere architektur
einfach nicht ausreizbar.... und als größere architektur würd ich einen
arm7 nehmen...schau mal bei olimex vorbei.. da gibts neben brauchbaren
boards auch schaltpläne dafür ;)

73

von Egon (Gast)


Lesenswert?

@Hans, Hubertus wollte doch alles separat aufbauen. AVR udn ARM scheiden
damit aus.

Verdück Dich schon mal in die Versenkung, denn gleich gibt es Prügel
wg.:
''von einem 8051 rate ich ab weil die dinger einfach nicht mehr
zeitgemäß sind..  ''

von Hubertus (Gast)


Lesenswert?

@Hans: olimex?! noch nie gehört... hast du einen link??
@karl heinz buchegger: mit den 2 signalen, die anzeigen, ob daten für
I/O oder memory bestimmt sind meinst du sicher den pin "/MREQ". kann
das sein?? ;)

von Hans (Gast)


Lesenswert?

@egon schau dir mal einen 8051er an und vergleich ihn mal mit einem
avr.. der ist einfacher, hat nettere ios und ist auch viel schneller...
was willst du noch mit einer akku-maschine??? vergiss diese
architektur... sie ist tot.. man muss sie nur noch offiziell eingraben
g

@hubertus www.olimex.com

wenn du dich wirklich herumquälen willst hol dir einen atmega mit twi
(oder i2c genannt) und sram interface.. dann kannst sram drantun und
wenn du willst auch einen pio-controller ... und am i2c-bus hängst dann
noch son port-erweiterungsteil dran.. glaub pcf8574 war das.. dann
kannst ja mal vergleichen wie man das früher machte und wie nett das
jetzt geht ;)

ich persönlich würd mich nicht mit alten krücken herumschlagen wenns
neues zeug gibt das man genau so umständlich verwenden kann g

73

von Rahul (Gast)


Lesenswert?

>sie ist tot..

das bezweifle vermutlich nicht nur ich.
8051er gibt es von fast jedem Chiphersteller; AVR gibt's nur von Atmel
(die auch 8051er im Sortiment haben).
IMHO ist das der verbreiteste Controller-Kern überhaupt.

von A.K. (Gast)


Lesenswert?

Es wäre hilfreich, sein Ziel zu kennen. 8051 ist eine typische
Microcontroller-Architektur, aber die vielfältigen und getrennten
Adressräume grenzen ihn sehr deutlich von klassischen Mikroprozessoren
ab (AVR ebenso). Da sind von-Neumann-Architekturen üblich.

von peter dannegger (Gast)


Lesenswert?

"also den 8255 sollte ich nicht mit dem Z80 verwenden?
eher den Z84C20?"

Ganz genau.

Denn ohne Interrupts macht das Programmieren überhaupt keinen Spaß.



Peter

von Hubertus (Gast)


Lesenswert?

@peter: okeee :D stimmt eigentlich schon, die interrupts braucht man
schon.
also, ich brauch einen Z80, dann eprom, sram, pio und sio. alles würd
über die gleichen adressleitungen an die cpu angeschlossen (A0...A15,
D0...D7). dann noch die chip select logik und das system sollte
funktionieren oder?? ;)
der code, der an adresse 0000h steht wird nach dem reset ausgeführt.
gehe ich recht in der annahme??
gruss

von Christoph Kessler (db1uq) (Gast)


Lesenswert?

google mal nach TNC terminal node controller das ist ein Z80-Rechner auf
einer Europakarte, mit Modem-Chip für Packet-radio, und Eprom.
Vielleicht gibts sowas günstig gebraucht.
Ich sehe das auch nur als Nostalgie-Projekt, neue Controller haben
alles auf einem Chip, sind stromsparender und schneller. Ich hab
irgendwo noch den Original-EMUF  mit 6504-Prozessor, 2k Eprom und dem
6532 (I/O mit 128 Byte RAM). EMUF= Einplatinencomputer mit universeller
Festprogrammierung hieß das von der "MC" 1981/82 veröffentlichte
Projekt.

von A.K. (Gast)


Lesenswert?

Wenn Z80-SIO dann auch Z80-CTC für den Baudratentakt. Oder UARTs die
ihren Takt selber erzeugen können (16C550, 88C681, Z85C30).

von arc (Gast)


Lesenswert?


von Hubertus (Gast)


Lesenswert?

danke für den link ;)
aber ich hab noch immer nicht genau verstanden, wie das mit der
programmausführung geht.

von A.K. (Gast)


Lesenswert?

Das siehst du ganz richtig: Nach Reset geht's los bei Addresse 0x0000.
Was immer da steht wird ausgeführt. Auch wenn da garnichts steht.

von Stephan H. (stephan-)


Lesenswert?

@Hubertus, na da hast Du ja was angestellt.......

Was die Z80 angeht, habe jahrelang damit gearbeitet. Viele kleinere
Steuerungsaufgaben damit erschlagen. Allerdings wie Peter sagte eben
nicht ganz einfach. Zumindest vom Aufbau. Die Leitunsgverlegung auf
Platinen macht sich saumäßig !!! Die Pins sind so blöd angeordnet !!
Störungsprobleme hatte ich nie. Aber immer Pull UP´s.
UND.... ohne PIO und Latch lassen sich keine einzelnen Portpins
ansprechen !!!!!

Dann lieber ne 8051 Architektur. Interrupts, Portpins und
 "One Cycle MCU´s" gibts davon auch.

Jo der Code steht ab 0000h. Aber da kommen noch Interrupt Vektoren.
NMI, INT, SIO, CTC,PIO . Auf 0000 steht immer JP Anfang.
Du brauchst aber für SIO,CTC und PIO noch ne Adresslogik. Die macht das
ganze Aufwändiger wenn nicht Adressen mehrfach auftauchen sollen.

Zum AVR sei nur gesagt...schnell..ja aber das wars dann auch.
Umstädliches Porthandling und wenns um Interrupts geht die geordnet
werden müssen (Prioritäten), geht das Lich ganz aus.

Also. machs gut.

PS. habe noch Bücher und (Schaltpläne zB. KC85 ) davon.

von Hubertus (Gast)


Lesenswert?

@stephan: kannst du mich mal per mail kontaktieren??
huby 89 at gmx dot net

wäre nett wenn wir ein bisschen schaltpläne tauschen könnten ;)

von Stephan H. (stephan-)


Lesenswert?

was suchst Du denn??

von Hubertus (Gast)


Lesenswert?

nichts konkretes, ich möchte einfach ein paar richtige schaltpläne sehen
um so die grundsätzliche schaltungstechnik etwas kennen zu lernen ;)

von A.K. (Gast)


Lesenswert?

Kannst natürlich ein bischen schummeln, und an Stelle von PIO/SIO/CTC
den Z84C90 benutzen. Ist nichts anderes als
PIO+SIO+CTC+Dekoder+Taktgenerator in einem PLCC84.

von Stephan H. (stephan-)


Lesenswert?

@A.K.
hier wird doch nicht geschummelt :-)
Da geht doch der ganze Spaß mit der Adresslogik verloren :-(
Hatte ich damals auch überlegt. Bin dann aber doch zu 8051 gewandert
und habs nicht bereut. ( Außer das der z80 Doppelregister hatte. )

von Hubertus (Gast)


Lesenswert?

@stephan: wie siehts jetzt aus?? ;)

von Stephan H. (stephan-)


Lesenswert?

jo, ich melde mich mal heute Abend und suche mal was raus.

von Hubertus (Gast)


Lesenswert?

danke, das ist sehr nett :)

von Karl H. (kbuchegg)


Lesenswert?

> mit den 2 signalen, die anzeigen, ob daten für
> I/O oder memory bestimmt sind meinst du sicher den
> pin "/MREQ". kann das sein?? ;)

Yep. /MREQ und /IOREQ

Da da sagtest du suchst nach Schaltbildern.
Mit google: "z80 PIO SIO CTC Schaltplan"
hab ich zb gefunden:
http://www.hcrs.at/Z80.HTM
(verwendet leider noch eine 8251 als UART). Aber zumindest kannst
du mal studieren was da so auf dich zukommt.

Falls du das Ding hochziehst: Ich hab noch einen 4KByte
BASIC Interpreter in Z80-Assembler irgendwo rumliegen.
Könntest Du haben.

von Hubertus (Gast)


Lesenswert?

@karl heinz: also, /MREQ zeigt an, dass die CPU einen speicherzugriff
machen will (byte lesen, schreiben) und /IOREQ zeigt an, dass die CPU
daten ausgeben will (LEDs einschalten z.b.).
gehe ich recht in der annahme, dass man daten auch mit den befehlen IN
und OUT ausgeben kann? wenn man einen dieser befehle verwendet, dann
müsste theoretisch /IOREQ aktiv sein. bei einem befehl wie JP
allerdings würde /MREQ aktiviert werden oder?? ;)
also kann ich eine logikschaltung machen, die mir jeweils bei /IOREQ
oder /MREQ die IO-bausteine bzw. die speicherbausteine auswählt?? :)

von A.K. (Gast)


Lesenswert?

Z80 hat zwei getrennte Adressbereiche:
I/O-Geräte => IOREQ - nur IN und OUT Befehle.
Programm- und Datenspeicher => MREQ - alles andere.

Üblich: HC139 als Dekoder, eine Hälfte für Speicher (A15:A14), eine für
I/O (A7:A8). Steht so auch in einem der Beispiele oben drin.

von MartinS (Gast)


Lesenswert?

@Karl Heinz Buchegger
Das mit den 8KB Blöcken in deinem Beispiel stimmt nur eingeschränkt.
Mit entsprechender Logik in der auch die anderen Adressleitungen
ausgewertet werden sind es weniger Bytes.

von Manos (Gast)


Lesenswert?

"huby 89 at gmx dot net"
Einfacher zu lesen ist die E-mail Adresse hinter Deinem Namen bei
"Autor:" :)

@Hubertus
"ich habe noch nicht so wahnsinns erfahrungen mit mikrocontrollern
etc., deshalb denke ich, ist es sinnvoll, wenn ich zuerst lerne, wie
prozessorene tc. funktionieren"
...und eben da denke ich, dass es einfacher ist direkt mir einem uC
anzufangen. Wenn es nur darum geht die Funktionsweise zu verstehen muß
ich nichts historisches nachbauen. Ein uC ist von der Funktionsweise
vergleichbar, leichter zu handhaben - und man muß nicht erst in der
Hardware den Fehler suchen wenn es nicht funktioniert...
Der simpleste Versuchsaufbau mit einem uC besteht aus dem uC und zwei
Drähten für die Spannungsversorgung zwischen 1,8V und 5.5V - je nach
Modell (setzt voraus, dass das Programm schon im Flash ist). Da kann
man beim Aufbau der Hardware nicht wirklich viel falsch machen :))

@all
Gibt es eigentlich ARM's sie man auch ohne SMD-Lötkolben verarbeiten
kann?

von Hubertus (Gast)


Lesenswert?

@A.K.: welches beispiel meinst du jetzt?

von Hubertus (Gast)


Lesenswert?

@manos:
ich kenne zwar arms nicht direkt, aber es gibt ja für so SMD-ics auch
fassungen (PLCC und wie sie alle heissen). die gibts auch in
durchkontaktierter technik ;)
und übrigens: das mit der emaila dresse hab ich erst ejtzt gesehen :D

von Rahul (Gast)


Lesenswert?

>Üblich: HC139 als Dekoder, eine Hälfte für Speicher (A15:A14), eine
>für I/O (A7:A8). Steht so auch in einem der Beispiele oben drin.

Wie meinst du das?
Der Z80 (wie auch der 8085) haben getrennte I/O- und RAM-Bereiche.
Somit verdoppelt sich die Menge der adressierbaren Speicherbereichen
(sofern die Adressierung gleichförmig ist).
Bei 8051er (und beim AVR, wenn nötig) ist es ja so, dass der externe
I/O-Bereich mit im externen RAM-Bereich liegt.

von A.K. (Gast)


Lesenswert?

@Hubertus: Sorry, falsche Erinnerung. Stimmt aber trotzdem.

Die eine Hälfte vom HC139: G/=MREQ,A=A14,B=A15. Ergebnis sind 4
Chipselects für ROM/RAM, je 16KB. Q0/ sinnvollerweise an ROM, wegen
Adresse 0. Oder A auf GND, dann sind es 2x 32KB, je nach Bedarf.

Die andere Hälfte: G/=IORQ,A=A6,B=A7. Ergebnis sind 4 Chipselects für
I/O-Bausteine.

OE/ vom ROM+RAM an RD/, WE/ vom RAM an WR/.

Wenn du beim Takt auf Nummer sicher gehen willst: Fertiger Oszillator
doppelter Frequenz und 1/2 HCT74 als Teiler dahinter. Diese
Oszillatoren sind nicht immer ganz symmetrisch.

von A.K. (Gast)


Lesenswert?

@Rahul: Nix doppelt. Offiziell sind es nur 256 I/O-Adressen, also
Adressierung über A0-A7. Mit dem Z80 war zwar auch mehr möglich, weil
indirekte I/O-Befehle nicht nur 8bit C sondern 16bit BC am Adressbus
lieferten, aber das kann ich nicht weiterempfehlen, erst recht keinem
Anfänger.

von Rahul (Gast)


Lesenswert?

@A.K.: Wie beim 8085 also (sind wohl beide miteinander verwandt; siehe
Wikipedia.org...)
Mit der Grösse des Adressraums war ich mir nicht ganz sicher.
Beim 8051 benutzt(e) man gerne Adressdecoder nicht nur um den
Speicherbereich auf mehrere RAM-Bausteine zu verteilen, sondern auch,
um Periferie dahin zu legen, da dieser Controller nur "einen externen
Bus" besitzt.

Der 8085 hat auch IN- und OUT-Befehle.

von Stephan H. (stephan-)


Lesenswert?

ich hoffe nur das Hubertus ne Vorstellung davon hat worauf er sich
einlassen will. Wenn ich an die damaligen TTL Gräber denke......
Da können einige "alte Hasen hier" mal wieder die Kenntnisse
auffrischen.

von A.K. (Gast)


Lesenswert?

Z80 stammt wie 8085 vom 8080 ab, ist daher softwareseitig voll
aufwärtskompatibel mit 8085, hardwareseitig immerhin ähnlich.

von Karl H. (kbuchegg)


Lesenswert?

Was am Z80 toll war im Vergleich zm 8080:
Der hatte den Controller für dynamisches RAM gleich
mit eingebaut. Somit war keine aufwändige Refresh-Logik
notwendig. Und dynamische RAMs (4164, od dgl.) waren
ungleich billiger als statische. Da hat sich viel
verändert in der Zwischenzeit :-)
Kaufte meine ersten 64K (8 Stück 4164) damals für nen
knappen Tausender. Schilling natürlich. So ca. 80 Euronen
nach heutiger Währung.

von Rahul (Gast)


Lesenswert?

640K haben etwas später nen Tausender (DM) gekostet...

von Stephan H. (stephan-)


Lesenswert?

z80 hatte 64 KByte Adressbereich.
von da ab nur noch Bank Switching. Haben wir bis 256 KByte gemacht.
Größere IC´s gabs damals 1988 nicht in DDR.
Jo ,In / Out waren die I/O mit IORQ mit max. 256.
Alles andere  ging über die Speicher Adressierung
mit WR, RD und MREQ. M1 war glaube auch mit im Spiel.

von Stephan H. (stephan-)


Lesenswert?

64k DRam müßte ich noch haben...

von A.K. (Gast)


Lesenswert?

Oops, wird doch komplizierter, vergiss dem Mist mit dem HC139 den ich
oben geschrieben habe. Kannst da kein IORQ/MREQ einkoppeln, gibt das
Timing nicht her, die Chipselects dürfen kein MREQ/IORQ drin haben.

von Hubertus (Gast)


Lesenswert?

@A.K.: wie ist jetzt das zu verstehen?? ;)
@karl heinz: übrigens wär ich interessiert am basic-interpreter ;)

von Rahul (Gast)


Lesenswert?

Ich hätte noch einen Apple ][ mit Z80-Karte abzugeben... (fällt mir
gerade mal wieder ein...)
80Zeichen-Karte wäre auch dabei, Doku auch...

von Stephan H. (stephan-)


Lesenswert?

@A.K. Warum nicht ???? War immer so.
Adressdecoder an den Bus und alles mit IORQ verknüpfelt.
Raus kommt das CS für den Chip ( Pio,CTC usw,)
Kann sein das M1 noch bei war.

von Stephan H. (stephan-)


Lesenswert?

allerdings habe ich dafür lieber mehrfach NAND´s genommen.

von Karl H. (kbuchegg)


Angehängte Dateien:

Lesenswert?

@Hubertus

Sollst du haben

von Stephan H. (stephan-)


Lesenswert?

voll GEIL !!!!!! Back to the Roots !!!!!

von A.K. (Gast)


Lesenswert?

CS muss zig nsec vor IORQ anliegen, der Dekoder darf also nicht mit IORQ
gegated werden.

Ist bei den die Z80-Bausteinen kein Problem, die haben selber einen
IORQ Eingang. Also bei der I/O-Hälfte des HC139: G/=GND, A=A6, B=A7.

Beim Speicher sollte das so funktionieren wie oben beschrieben.

M1 mischt evtl. mit, wenn Interrupts oder DRAM beteiligt sind.

von Stephan H. (stephan-)


Angehängte Dateien:

Lesenswert?

kann sein das IORQ Low aktiv war. dann muß es noch invertiert werden.
Aber so lies sich das CS für Peripherie erzeugen.
Allerdings nicht eindeutig !!!! Adressbereich ist hier mehrfach
vorhanden !!

von Karl H. (kbuchegg)


Angehängte Dateien:

Lesenswert?

Ich vergass.
Um Das Ding zum laufen zu kriegen, musst du 3 Funktionen
selbst schreiben:

CI    Console Input,  liest ein Zeichen von der Konsole
      (was auch immer das sein mag) ein.
ECHO  gibt ein Zeichen auf der Konsole aus
CSTS  Überprüft ob an der Konsole-Input ein Zeichen vorliegt.

Wenn ich mich recht erinnere, musste CI das Zeichen in A
abliefern, während ECHO das auszugebende Zeichen im Register
C erhielt. Und wie war das noch mit CSTS ... Hmm Da musste,
glaub ich das Zero-Flag herhalten.

Ich hab noch eine Version gefunden, bei der ich die Anpassung
an eine 8251 gemacht habe. Liegt bei. Die 8251 liegt an I/O 0x11
aufwärts, während eine 8255 an I/O 0x00 angenommen wird.

Das Basic kann:
26 Variablen (Variablenname = 1 Buchstabe, A - Z).
Dann gabs da auch noch ein Feld. Das war der @ als Variablenname

Kommandos:
LIST RUN NEW BYE END
NEXT LET IFF GOTO GOSUB RETURN REM FOR INPUT PRINT STOP CALL
OUTCHAR OUT O$ (= Stringausgabe) I$ (=Stringeingabe) POKE
TAB BYTE WORD
RND ABS SIZE PEEK INCHAR HEX IN TOP LEN CSTS
TO STEP
und die üblichen arithmetischen Operationen, alles Integer
mit 16 Bit.

von A.K. (Gast)


Lesenswert?

Die Z80 Peripherie hat selber einen IORQ-Eingang, da ist das also
eindeutig.

Interessanter ist der Speicher. Zilog definiert nämlich netterweise
keinen direkten Zusammenhang zwischen MREQ und RD, aber die Holdtime
hängt von RD ab. Mit etwas Pech, ungleicher kapazitiver Last und
heutigem sauschnellem Speicher sind die Daten zu früh wieder weg
(Benedikt - liest du mit?).

M.a.W: Wer sicher sein will, lässt MREQ beim Dekoder weg und baut sich
für den Speicher OE/WE per AND-Gates aus RD/WR plus MREQ zusammen. Und
lässt sich dabei etwas Zeit, nicht schneller als mit LS/HC-Technik.

von Stephan H. (stephan-)


Lesenswert?


von Tobias P. (hubertus)


Lesenswert?

@A.K.: kann man also nicht die RD- und WR-Leitungen der CPU selbst
verwenden um RAM zu adressieren??

@karl heinz: danke für den basic-interpreter ;)

von Stephan H. (stephan-)


Lesenswert?

doch das geht !!!!.
Wir haben damals den Zinklair ZX Spectrum nachgebaut. Da war für die
Grafik auch SRAM drauf. Das geht.
Die Schaltung muß ich heute Anbend mal raussuchen. Per Mail !!!

von A.K. (Gast)


Lesenswert?

Man darf eines nicht vergessen: Heutige RAMs sind viel schneller als
damalige und das hat nicht nur Vorteile. Vor allem wenn es sich um
übrig gebliebene Cache-RAMs handeln sollte.

von Stephan H. (stephan-)


Lesenswert?

@A.K.
ist korrekt. Cache´s gehen viel zu schnell. Das waren U224 SRAM mit
1kx4. Aber jeder normale 61/65512 sollte gehen .
Im absoluten Notfall muß ein Latch her.

Aber das wäre vor allem eine unerlaubte Arbeitserleichterung. Ich
dachte er wollte "richtig" einsteigen. Dazu gehören doch DRAM und
Refresh Logik mit Multiplexern etc.pp. :-/

von A.K. (Gast)


Lesenswert?

Einen sauberen Prozessorbus zu konstruieren, ist wie man sieht nicht
ganz einfach.

In den ersten Generationen haben das alle irgendwie vergeigt, jeder
davon hat gewisse Konstruktionsfehler. Bei den "80"er Typen,
insbesondere Z80, kämpft man damit, dass die Art des Zugriffs, also ob
Lesen oder Schreiben und ob Speicher oder I/O, nicht schon mit den
Adressen vorliegt, sondern erst mit den Strobes. Bei den "68"ern
fehlt andererseits die Information, ob überhaupt ein Zyklus
stattfindet. Erst mit der nächsten Generation (8088,68000) wurden die
Busse sauberer definiert.

von Tobias P. (hubertus)


Angehängte Dateien:

Lesenswert?

also sry ich war wieder mal kurz weg ;) deshalb hat meine antwort etwas
auf sich warten lassen.
also, in der schule habe ich ein Z80 board gesehen, dass die da frher
verwendet hatten zu lernzwecken (ein MPF-1). ich hab mir mal die
schaltpläne ausgeliehen, hier ein scan davon (datei ist eine
gewöhnliche Tif-datei; einfach den unterstrich im namen entfernen, um
sie öffnen zu können).
der PIO ist auf dem unteren teil zu erkennen, sämtliche speicher sind
oben. man erkennt auch gut die adresslogik (chip select), die mit
74LS139 aufgebaut ist (trotz einiger proteste, die hier laut wurden
;)). aber mir scheint auch, an der chip select logik könnte man etwas
ändern...
genau so etwas ähnliches wollte ich mir auch bauen.
aber diese schaltung ist ja schon etwas veraltet, deshalb habe ich für
mich privat ein kleines projektchen geplant ;)
grundsätzlich: wäre sowas in der art schon funktionstüchtig??
sicherlich müsste man noch einiges erweitern.
das eprom kann man z.b. durch ein NV-SRAM ersetzen.
die haben das bei dem board auch gemacht, es war ein modernes und
schnelles DS1224Y. die CPU kommt damit allerdings recht gut klar, trotz
der hohen geschwindigkeit des SRAMS.
wenn man dan so ein SRAM drin hat, kann man per PC die assemblierten
programme ab adresse 0000h reinladen und das sollte dann ja eigentl.
funktionieren, nicht?? ;)

grüsse

von A.K. (Gast)


Lesenswert?

Problem dieser Schaltung: CS wird ca 60nsec verzögert (3x LS139), WE vom
RAM aber nicht. Am Ende eines Schreibzugriffs wird also WE ca 60nsec vor
CS inaktiv, aus dem Schreibzugriff wird ein Lesezugriff und die
Datenbusse kollidieren - gemäss Datasheet schaltet ein 6264 den
Datenbus bereits nach 5nsec wieder ein!

Funktionieren wird es trotzdem, wenngleich mit höherem Stromverbrauch
als nötig, weil der "Kurzschluss" zu einem Zeitpunkt erfolgt, zu dem
sich niemand für den Datenbus interessiert.

von A.K. (Gast)


Lesenswert?

PS: Oder auch kein Kurzschluss, weil's beiderseits eher die gleichen
Daten sind. Aber elegant ist das nicht grad.

von Tobias P. (hubertus)


Lesenswert?

aha.
also das erklärt auch warum auf dem board die ics so warm werden ;)
ich würde die adresslogik eh etwas überarbeiten. wenn man die in einem
GAL/PAL unterbringt, ist sie schon wesentlich schneller. ausserdem
würde ich eh weniger RAM/IO bausteine nehmen und würde dann
dementsprechend weniger adressleitungen "verbraten".

wie würdest du die adresslogik anpassen?? ;)

von A.K. (Gast)


Lesenswert?

Versuchweise sollte man mal OE an RD anschliessen.

von Tobias P. (hubertus)


Lesenswert?

ich bin grad dabei, etwas entsprechendes zu zeichnen.
evtl mache ich das mit einem jumper, dass man OE mit RD verbinden kann
oder halt eben nicht. ;)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Naja, so einfach wirst Du die Daten per PC nicht in das SRAM
hineinbekommen. Schließlich hat so ein SRAM weder eine serielle, noch
eine PC-geeignete parallele Schnittstelle.

Du benötigst schon etwas "Mithilfe" des Z80 - in der Regel wird das
mit einem im ROM befindlichen Monitorprogramm erledigt, das über die
serielle Schnittstelle Daten entgegennimmt und in einen definierten
RAM-Bereich schreibt, um auf ein definiertes Kommando hin die
Startadresse dieses Codes aufzurufen.

Um das Rad nicht neu erfinden zu müssen, empfiehlt sich für die
Datenübertragung zwischen PC und Monitorprogramm die Verwendung eines
etablierten Hex-Download-Protokolles wie Intel-Hex oder Motorola S19.

Damit das ganze funktioniert, muss aber nach einem Reset zwingend das
Monitorprogramm aufgerufen werden, was erfordert, daß der Resetvektor
fest auf das ROM-residente Monitorprogramm verweist ... also muss bei
Adresse $0000 halt das EPROM mit dem Monitorprogramm liegen.

Damit man eine Chance hat, Reset- und Interruptvektoren zu ändern, muss
ein Hardwaretrick verwendet werden: Die Adressdecoderlogik kann ein SRAM
an den gleichen Adressen einblenden wie das (EP)ROM, tut dies aber nicht
nach dem Reset, sondern erst, wenn ein bestimmtes I/O-Register
beschrieben wird. Vorher liegt dieses RAM an anderer Stelle im
Adressraum, damit das Monitorprogramm die vom PC empfangenen Daten
hineinschreiben kann.
Damit wird die Adressdecoderlogik etwas aufwendiger als nur ein simpler
'139, aber das sollte durchaus noch zu schaffen sein.

Solche Systeme lassen sich übrigens noch durchaus beherrschbar auf
Lochrasterplatinen in Fädeltechnik bauen, wenn man als erstes die
Stromversorgungsleitungen aus massivem Draht verlegt und nicht mit
Abblockkondensatoren geizt, die so nah wie möglich an den
Stromversorgungspins anzubringen sind.
Hier sind SMD-Keramikkondensatoren sehr praktisch, die können gut auf
der Lötseite der Platine untergebracht werden.
Den Rest (Adress-, Daten- und Steuerbus) verdrahtet man dann mit
lötbarem CuL-Draht.

Wenn man nur logisch zusammengehörende Leitungen parallel verlegt, also
nur Leitungen, die eh' alle gleichzeitig ihren Pegel verändern, und
andere etwas auseinanderhält bzw. nach Möglichkeit rechtwinklig
verlegt, dann lassen sich mit dieser Technik auch noch recht hohe
Frequenzen in den Griff bekommen, die schon erhebliche Anforderungen an
ein geätztes Platinenlayout stellen.
Ich kenne ein Extrembeispiel, einen mit 25 MHz getakteten 68020 auf
einer Euro-Lochrasterkarte mit 512 kByte zero-Waitstate-SRAM, den
jemand komplett gefädelt hat.
Bei so komplexen Schaltungen empfiehlt sich allerdings der Einsatz von
GALs oder ähnlichen kleinen PLDs für die Adressdecoderlogik ...

Für mit nur 4 MHz getaktete Z80 sehe ich jedenfalls noch keine großen
Probleme.

von Tobias P. (hubertus)


Lesenswert?

hallo rufus,
ja das mit dem monitorprogramm habe ich mir auch schon überlegt.
das lasse ich vorerst noch aus, ich mach einfach mal ein board, das nur
RAM hat. dem EPROM wende ich mich später zu. meine programme führe ich
dann halt im NV-SRAM aus. ich dachte mir, ich kann das programm zuerst
über pc ins RAM laden, danach das ram auf den sockel montieren und das
system reseten. wenns nicht klappt, ram raus, neu programmiert, und
neuer versuch.
dann kann ich so ein funktionierendes monitorprogramm basteln, das dann
auf eprom bannen und dauerhaft auf dem print montieren.

von A.K. (Gast)


Lesenswert?

"Damit man eine Chance hat, Reset- und Interruptvektoren zu ändern,
muss ein Hardwaretrick verwendet werden"

Kann man mit Hardware machen, wurde auch meist so gemacht. Aber muss
das sein - zumal bei einem einfachen System?

Das ROM mit den Einsprungstellen kann man auch lassen wo es ist, der
Reset-Code testet dann erst einmal ob Bootloader/Monitorprogramm
gemeint ist (Schalter oder Steuerleitung der Seriellen) und wenn nicht
springt er an den Anfang vom RAM.

INT/NMI ähnlich: Erster und einziger Befehl der ROM-Adresse: Sprung an
entsprechende Stelle vom RAM.

Und schon sieht die Hardware wieder einfacher aus..

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

"ich dachte mir, ich kann das programm zuerst
über pc ins RAM laden"

Wie stellst Du Dir das vor?

von A.K. (Gast)


Lesenswert?

"ich mach einfach mal ein board, das nur RAM hat"

Woher kriegt das RAM sein Programm?

Alternative: Plane gleich noch einen Microcontroller als
Bootloader/Debugger ein. Mega8 oder so, hängt an allen wesentlichen
Adress/Daten/Steuerleitungen (tristate). Der legt dann die Z80 lahm,
lädt das Programm ins RAM und gibt dann der Z80 einen Tritt (Reset).

Falls jemandem das zu modern erscheint: Etliche Generationen von Gross-
und Minicomputern der 60er bis 80er haben so ähnlich gearbeitet.

von Tobias P. (hubertus)


Lesenswert?

mit einem programmiergerät das ich mal gebastelt hab ;)

von A.K. (Gast)


Lesenswert?

RAM raus/rein/raus/rein/... oder wie? Oder ist das ein EPROM-Emulator?

von Tobias P. (hubertus)


Lesenswert?

@A.K.: gute idee, sowas kann man natürlich auch machen.
ich hab noch ein paar AT89C55WD hier rumliegen... sollte gehen ;)

von Tobias P. (hubertus)


Lesenswert?

ich meinte den microcontroller der als bootloader funktioniert ;)

von A.K. (Gast)


Lesenswert?

Den Mikro kann mal übrigens auch als Taktgenerator verwenden, so der
einen Timerausgang hat, der ggf. 4MHz liefern kann. So kann man dann
zwecks Debugging die Z80 Zyklus für Zyklus einzeln laufen lassen. Mit
LEDs an den Bussen sieht das dann auch noch richtig schön aus.

von Stephan H. (stephan-)


Lesenswert?

@Hubert, der Postmann hat 2x geklingelt......

von Stephan H. (stephan-)


Lesenswert?

@all
der Eprom EMU wäre die Lösung aller Sorgen. Ein normales SRAM an den
Bus
65256 oder sowas mit 120 oder 150n und los gehts.
Den EMU kann ja nen "4Flash" machen. Ist der kleinste EMU den ich
kenne und günstig ist er auch. Das wärs doch dann ..... oder ????

von Egon (Gast)


Lesenswert?

Ich bin ja mal gespannt, wieviele Antworten hier noch erscheinen, bevor
endlich jemand deutlich sagt, dass das Vorhaben doch mehr oder weniger
Unfug ist. Alle Antworter sind doch letztlich froh darüber, einzelne
Bausteine nicht mehr verdrahten zu müssen, sondern die 'Hauptaufgabe'
mit zunächst einem Chip zu erledigen. Was damals ein Apfel oder ein PET
war ist heute ein MEGA128 und dazu noch deutlich leistungsfähiger.
Kein Koch käme auf die Idee, sich sein Besteck aus Holz zu schnitzen.

von Karl H. (kbuchegg)


Lesenswert?

> dazu noch deutlich leistungsfähiger

... und wesentlich billiger.

von Stephan H. (stephan-)


Lesenswert?

@Egon,
gaanz oben war die Reden von Atmel & Co. Er will es so wie wir von der
Pike auf erlernen. Auf diskreter Ebene sozusagen.
Dann laß ihn doch, denn dümmer wird er davon auf keinen Fall. Im
Gegensatz zu Ihm gibt ea hier auch Leute die zB. ein Grafik LCD
betreiben wollen und nicht mal wissen was Binärzahlen sind.
Das halte ich für viel bedenklicher. Außerdem hat er doch heute
wesentlich bessere Möglichkeiten mit dem Z80 als wir damals....

von Egon (Gast)


Lesenswert?

@Stephan
Natürlich lasse ich ihn, gib alles nur keinen Sinn. Der Nächste will
sich dann einen 4-Bit Adder mit Transistoren aufbauen: bitte schön.

Hat vielleicht jemand den Artikel in ELEKTONIK 9/2006 gelesen:
elektronische Wasserwaage ?
Da wurde gezeigt, wie elegant man mit einer dicken FPGA-Flunder eine
Puls-Pausen-Messung machen kann und dabei noch einen Inverter spart. Im
FPGA wurde ein 8051 gleich mit reingepackt. Sehr interessant und
lehrreich und das beste Beispiel dafür, keinen FPGA einzusetzen.
Kann man auch viel dabei lernen. Bringt aber nichts !
Ein denkender Mensch macht das mit einem Winzprozessor, an dem noch ein
flankenempfindliches Beinchen frei ist, auch wenn er nichts babei lernt
:-)

von Stephan H. (stephan-)


Lesenswert?

@Egon,

jo hab ich. Allerdings sit ne richtige billiger. Das Kehrstück zu dem
hier eigentlich. Aber interessant...inkl. LCD Symbole

von Stephan H. (stephan-)


Lesenswert?

ps.: woher kriege ich die "Elktronik" eigentlich ???
Habe kein Abo und bezahle auch nichts !!! KAm eines Tages und so ist es
bis geute inkl. Automotive

von Egon (Gast)


Lesenswert?

@Stephan

Habe Probleme mit Deinem Text :-)

von Stephan H. (stephan-)


Lesenswert?

@Egon, was ich meinte ist das die "Elektronik"  eines Tages in meinem
Briefkasten war und auch heute immer noch zugestellt wird. Ich habe
aber nie ein Abo gemacht !!! Ich erhalte auch keine Rechnung für die
Zeitschrift. Fällt Dir was ein wie man dazu kommt ?? Ich war mal bei
denen auf der Webseite vor Jahren......aber deswegn bekommt man doch
die Zeitschrift nicht jahrelang umsonst ????

von Egon (Gast)


Lesenswert?

@Stephan, ich meinte den 1. Text :-)

Die "Elektronik" bekomme ich auch doppelt: 1. als Abo, 2. als
Werbung. Die suchen sich irgendwo gewerbliche Adressen zusammen, um
damit bei Ihren Werbekunden höhere Auflagen vorzulegen, was die
Inserate verteuert. Aus dem gleichen Verlag kommen auch
'Design&Elektronik' und 'Markt&Technik', die ich auch jahrelang
bekommen hatte und eines Tages nicht mehr. Das Abo ist recht teuer,
aber ich fürchte, wenn ich dies kündige auch eines Tages das
Werbeexemplar wegfallen wird. Es gibt weitere Anbieter mit
Freiexemplaren (Vogel-Verlag z.B.).

Was mich bei dem von mir angeführten (Werbe)beitrag so gestört hat,
war, wie ein erfahrener PLD-Designer so tat, als nähme man mal eben
irgendeine Anwendung und packe sie in einen dicken, teuren Baustein,
wobei der Wunschbaustein sogar bezeichnender Weise überhaupt nicht
lieferbar war. Und das unter der Vorgabe, wir wollen etwas lernen.

Hinzu kommt, dass die von ihm verwendete Entwicklungsumgebung sauteuer
ist. Er hat dann in der vorgegebenen Zeit von vier Wochen (mit
horrendem Aufwand) das realisiert, was ein erfahrener µPler innerhalb
eines Tages mit einem kleinen AVR geschafft hätte.

Darum meine ich, man sollte Geschichten nicht immer wieder bei Adam und
Eva anfangen, auch wenn man viel lernen könnte.

von Stephan H. (stephan-)


Lesenswert?

jo ist wohl war. Aber die Artikel beziehen sich ja fast immer auf Prof.
Werkzeuge. Meßtechnik oder Bauteil.......nur vom Feinsten.
Ist für mich rein informativ.
Bin nur ElektronikFacharbeiter sagten wir früher.
Aber das Equipment was dort mancher hat...... schön wärs schon.

von Tobias P. (hubertus)


Angehängte Dateien:

Lesenswert?

tag auch,
danke für eure tahlreichen antworten.
ich war heute im geschäft und konnte leider nicht dauernd hier
rumsurfen drum hat meine antowrt etwas warten lassen ;)
ich hab mal in der mittagspause kurz ein schema gezeichnet. ich habe
allerdings nur die adress- und datenleitungen angeschlossen, weil ich
für den rest keine zeit mehr hatte ;) ich habe ein paar teile der
schaltung von websites abgeguckt.
was meint ihr dazu?? (siehe anhang).
könnte funktionieren oder?? ;)

(IC1 ist der Z80; IC2 ist ein EPROM; IC3 RAM, IC4 dient als PIO).

grüsse

von Uwe (Gast)


Lesenswert?

@Hubertus

Hallo,

ich hab vor ca. 1 1/2 Jahren eine komplette Z180 basierende
Prozessorkarte entworfen und aufgebaut. Hab mir damit aus
nostalgischen
Gründen ein CP/M-System gebaut. Falls es Dir was bringt kann ich Dir
den
Schaltplan mal zumailen. Habe diesen in EAGLE gemacht. Auf der Karte
befinden sich Boot-EPROM, 256KB Speicher und Leitungstreiber mit der
dazu nötigen Logik. Der Z180 ist ein erweiterter Z80. Aber vom
Anschluss
Schema und der Funktion der Daten- , Adress- und Steuerleitungen mit
dem
Z80 identisch.
Zum Thema Layout und Störungen kann ich sagen, das ich diese Karte
komplett in Fädeltechnik aufgebaut habe und jedem einzelnen IC seinen
eigenen Stützkondensator spendiert hab. Die Karte läuft mit 16MHz,
bzw.
8MHz Prozessortakt und die Signale sehen auf dem Oszilloskop
einwandfrei aus. Als zweite Karte hätte ich noch eine mit IDE-Port für
Festplatten, einem Floppy-Controller und einem Dallas Uhrenchip.
Verbunden werden diese Karten per ECB-Bus.
Die Ein- Ausgabe geschieht im Augenblick per serieller Schnittstelle
und einem Terminalprogramm auf einem Notebook.
Aber eine Terminalkarte mit einem LCD-Display ist in Arbeit.

Gruß
         Uwe

von Pieter (Gast)


Angehängte Dateien:

Lesenswert?

moin moin,

@Hubertus,

wenns denn Z80 sein soll, das von Uwe hört sich gut an.
Such auch mal nach KC85, das ist ein Z80 System. Auch wegen Software
zum Z80.
Der Kieser/Meder als Z80-Bibel steht immernoch bei mir im Regal.

Meinen 1. Z80 habe ich so um 1984 gebaut. Beim aufräumen ist mir jetzt
die 1.RAM-Disk (1986) in die Hände gefallen. Reines IC-Grab, 64 x U2164
sind mal grade 512KB, das macht heute 1 x 62512.
Bei eBay gibt es ab und zu das Triccy-DATA von Neuhaus, da ist ein Z182
drinne.

Das Signalspiel ist nur am Anfang interessant, habe höchst selten was
mit Oszi nachgesehen.

Anbei mal die Schaltung meines Testboards für 80C51. Die Leiterplatte
dazu ist fertig und geht die nächsten Tage in Auftrag.


Mit Gruß
Pieter

von TebiFlex (Gast)


Lesenswert?

@Hubertus

Die Erzeugung der CE-Signale für den Eprom und den Ram ist verkehrt.
V1/1 muß durch ein OR ersetzt werden. A15=L, MERQ=L => Eprom CE=L.
V2/1 muß auch durch ein OR ersetzt werden und an den Eingang 2 muß NOT
A15 gelegt werden. A15=H, MERQ=L => RAM CE=L.
An der PIO muß noch IORQ, RD, WR und CLK beschaltet werden. M1 sollte
für eine korrekte Interruptabarbeitung auch verbunden werden. Wenn die
PIO der erste Baustein in der Interruptkette ist sollte IEI auf H
liegen, ansonsten an IEO des vorhergehenden und damit höher
priorisierten Baustein (z.B. ein CTC).

Viele Grüße
TobiFlex

von Karl H. (kbuchegg)


Angehängte Dateien:

Lesenswert?

Die Älteren werden sich vielleicht noch an die
Zeitschrift 'mc' erinnern.
So wurde selbiges im Jahre 1982 gelöst (Anhang).

Entschuldigung für die Dateigröße. Aber das ist ein Scan
von einer 25 Jahre alten Kopie. ANsonsten hätte man da nichts
mehr lesen können.

von Uwe (Gast)


Lesenswert?

@Peter

Danke (Grins).
Bin mir zwar nicht sicher ob solch eine große Schaltung für Hubertus
gleich das richtige ist, aber die Stammsignale eines Z80 sind dort auch
vorhanden und gut ersichtlich.
Die Sache mit dem Oszi hab ich nur erwähnt, weil weiter oben von
Signalqualität geschrieben wurde und doch ne ganze Menge IC´s darauf
verlötet sind.

@Hubertus

Falls Du Interesse hast, ich habe bei mir im Keller eine Mappe gefunden
die eine komplette Bauanleitung für einen Z80 Rechner enthält. Stammt
meines Wissens sogar von Rolf Dieter Klein. Hab damals das komplette
Buch kopiert. Würde diese abgeben, hab ja mittlerweile (fast) alles im
Kopf.

Gruß

          Uwe

von Tobias P. (hubertus)


Lesenswert?

tag zusammen,
danke für eure posts ;)

@Uwe: klar, wenn du mir das teil mal mailst hilfts mir auf ejden fall
;) wär nett!!

@TebiFlex:
danke für die info, ich werd das gleich anpassen.

grüsse & schönen abend euch allen!

von Günther Schock (Gast)


Lesenswert?

@Uwe
Auch ich habe ein LCD-Terminal für einen Z180 gebaut. Bei Interesse
bitte melden. Heuzutage würde ich einen Z80-Rechner aber nicht mehr mit
-zig Peripheriebausteinen oder gar dynamischen RAM's aufbauen, denn das
ist selbst für einen Profi nicht ohne. Ein Z180 oder 84C015 mit einem
großem statischen RAM, eine EPROM, dazu vielleicht noch ein
Floppy-Controler oder eine PIO, und man hat einen kompletten Rechner
fertig. Die Steuersignale kann man doch mit einem kleinen CPLD machen
z.B. ein ispLSI2032 oder sowas.

von Uwe (Gast)


Lesenswert?

@Günther

Würde mich sehr interessieren wie Du das LCD-Terminal gemacht hast.
Hast Du Schaltpläne oä?
Meine Prozessorkarte arbeitet mit statischen RAMs. Hab dazu die
Cache-chip aus einem 486er Board verwendet. Das sind 8 Chips zu je
32KB. Zusammen sind das die 256Kb die auf der Karte drauf sind. Die
Logik hab ich mit "diskreten" Chips gebaut. Hab davon ne Menge
rumliegen und die wollten mal verbaut werden. ;-)

Gruß

von Tobias P. (hubertus)


Lesenswert?

@Günther: ja, ich stimme Uwe zu ;)
wie siehts aus?? ;)

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.