Hi Leute! Ich hab mal ne kurze Frage.. und zwar: ich will mir nen kleinen Gameboy basteln, will aber keinen Mikrocontroller verwenden sondern ne richtige CPU (unter richtige CPU versteh 8086 ähnliche Prozis, mit externem RAM, Programmspeicher etc.). Fragt mich nicht warum ich das will ^^ vermutlich will ich das ganze nur noch nen Stück "low leveler" machen, weiß ich aber selber nicht so genau :P Aufjedenfall hab ich mich jetzt gefragt wie ich mit so einer CPU "mit der Außenwelt" kommunizieren kann? Bei den AVRs kann ich ja jeden Pin einzeln ansprechen, Spannung draufgeben und so, aber mit ner CPU? Da kann ich ja dann nur über den Daten- und Adressbus kommunizieren, oder? Und dann hat mich noch die Existenz der Mnemonics in und out im x86 Befehlssatz irritiert, da war dann doch die Rede von Ports! Achso *laut überleg*arbeitet dann der Adressbus mit den Ports zusammen? verwirrt bin Naja.. ich hoffe mal ihr habt verstanden was ich will und könnt mir eventuell sogar helfen ^^ Mit freundlichen Grüßen, André
Man kann auch an einen AVR externes RAM ranpappen und einen Programmspeicher hat er auch. Gut, externer Programmspeicher gibts bei den AVRs nicht so wirklich, aber dafür gibts ja genügend andere MCs die das können. Externe I/O kann man z.B. einfach in den Adressraum der CPU einblenden, z.B. indem man einen Latch an die Datenleitungen anschließt und das Chipselect über Logik so ansteuert, daß es nur bei einer bestimmten Adresse angesteuert wird. Wenn ich mich recht erinnere, dann hat man bei x86 für die Ports einfach ein weiteres Pin, womit man programmtechnisch einen zweiten Adressraum hat und elektronisch die Adress- und Datenleitungen doppelt benutzen kann. Markus
Hi In den "Ur"-PCs waren z.B. PIOs (8255) zur prallelen Ausgabe eingebaut (ursprünglich für den 8080 entwickelt). Als serielle Schnittstelle könnten TL 16C550 (Reichelt) gehen. Du kannst ja auch versuchen ,dir ein paar alte Steckkarten mit ISA-Bus zu besorgen. MfG HG
An was für eine x86 hast Du da gedacht? Kategorie 186 - kein Problem, aber wahrscheinlich etwas unspannend. Alles ab spätestens Pentium wird dir freilich ne lange Nase drehen. Aus beliebig vielen Gründen, einer davon ist die Tatsache dass Du diese Frage stellt.
@markus aaah, wie ich gedacht hab. die ports und und der adressbus bilden sozusagen ein array oder? der port wäre dann der index? dann hätte ich also zugriff auf 65536 adressbusgröße-große bereiche? und das ist dann auch die einzige möglichkeit mit der aussenwelt zu kommunizeren? @A.K ne is klar ^^ eigentlich gehts mir nur ums grundprinzip.. wenn überhaupt wöllte ich aber maxiaml nen 386 nehmen. @hartmut danke, aber dann wär ja das "low levelige" dahin :P
Programm/Daten einerseits und I/O andererseits sind zwei getrennte Adressräume. 1MB (anno 8088) und 64KB gross. Sind die MRD/MWR Leitungen aktiv, ist es ein Programm/Datenzugriff, sind IORD/IOWR aktiv, ist es ein I/O-Zugriff.
ok dass das getrennte adressräume ist war mir auch klar ^^ aber alles läuft über den selben adress und datenbus? und die überlegung mit den ports trifft doch so ungefähr zu oder?
Es gab da mal vor Urzeiten ein Buch, mit einer Platine drin, für ein x86-Derivat. Erschien im Markt-und-Technik-Verlag. Die verwendete CPU war eine Weiterentwicklung, mit einigen eingebauten Sachen, die normalerweise extern dazugebaut werden mussten. Übrigens, es gibt noch heute von Intel, Cyrix, IBM etc. 386er-Derivate, mit On-Board-Sachen. Sind sozusagen uCs. Die Teile haben sogar Speicher drin etc. Einfach mal bei Intel schauen. "INTEL 386EX". Nur so, als kleine Randinfo. Stephan.
Ich habe deine Anmerkungen über Ports und Arrays und "65536 adressbusgröße-große bereiche" schlicht nicht verstanden.
oh, sry.. also ich hab mir das so vorgestellt: über die ports kann ich nochmal das ziel des adressbuses einstellen. port1 führt den adressbus zu controllerX, port2 zu controllerY. so dass ich dann 2^16=655536 (soviel ports gibts) verschiedene geräte mit dem adressbus ansprechen kann. ah und danke @stephan, werd mich mal schlau machen :)
Ein 16C450/550 UART benötigt einen Block aus 16 Adressen. Du kannst davon also maximal 4096 Stück anschliessen, 4 Bit vom Adressbus für das Gerät und 12 Bit für die Auswahl eines der 4096.
Du hast nur einen einzigen Adress- und Datenbus für den externen Speicher und für die I/O. Über MRD/MWR und IORD/IOWR kannst Du feststellen, was die CPU denn gerade möchte. Es gibt aber keine extra I/O-Pins wie bei den AVRs. Und wenn es Low Level sein soll, dann ist wohl immernoch http://mycpu.mikrocontroller.net/ ungeschlagen. Markus
Und die Unterscheidung in Port oder Memory-Zugriff brauchst Du je nach Situation auch nicht, da Du die Hardware auch Memory-Mapped einbinden kannst. Aber wie weiter oben geschrieben, wenn Du solche Fragen stellst wird es nicht ganz einfach werden so etwas zu entwickeln...
wie schon einige erwähnt haben, gibt es zwei Möglichkeiten IO-Mapped mit den x86-Befehlen INP bzw. OUTP, welche dan die speziellen Pins (s. Spezifikation x86 jeweils..) benutzen oder MemoryMapped mit den bekannten MOVXYZ-Befehlen welche wiederum andere physikalische Pins benutzen. --> dies gilt bei den klassischen X86-er. Bei anderen Prozessoren kann es dennoch spezielle Ports geben die du in deinem Programm benutzen kanst, denn die sind im Core schon als IO-Mapped Device eingebunden. Aber es stellt sich die Frage warum das du Dir wirklich antun willst -welchen Prozessor soll eingesetzt werden? Leider versteh ich nicht, was du wirklich willst??? Sehr vage.. Gameboy mit X86er? Mit näherer Beschreibung und Wünsche kann Dir dieses Forum mehr helfen als mit dieser sehr allgemeinen Frage. Mit Lesen einschlägiger Bücher und Spezifikation kann man sich diese selbst beantworten :-)). gruss hans
neneee, eigentlich will ich ja gar keinen gameboy machen ^^, ich will mich bloß jetzt mit µC beschäftigen und habe mir dann gedacht man könnten nen gameboy auch mit nem "normalen cpu" machen und hab mich dann gefragt wie das dann halt abläuft, aber wie ich gedacht habe halt nur über adress und datenbus.. aber wenn ich dich richtig verstanden habe sagst du nun wieder es gibt doch verschiedene pins für i/o und speicher? habe gedacht die teilen sich die leitungen? ach apropos gameboy, hat einer von euch ne ahnung wie ich das gameboydisplay anspreche? ich habe leider keinen controller auf der platine gefunden und weiß auch nicht was das für ein lcd ist.. ich habe zwar schon eine seite gefunden auf der es heißt es wäre ein LH5028 oder S890623, aber ich glaube das hat sich auf den gameboy color bezogen und ich habe leider sowieso keine datenblätter darüber gefunden!
@Andre' schau dir doch einfach mal die Spezifikation eines x86-Proz. durch -- da wirste die Anwort hinsichtlich den Pins bestimmt finden, es sind Pins die geteilt und Pins die für die eine oder andere Variante verwendet werden. Es ist mühsam diese Tatsachen über dieses Forum zu diskutieren....wenn's dich wirklich interessiert zieh bei Intel die Specs runter :-)). gruss hans
das ding über meinem e gibts nebem sz, vielleicht brauchsts ja nochmal :p aber ok, mach ich ^^ müsste die noch rumliegen haben hab mir die mal schicken lassen wegem instruction-set gut aufjedenfall mal danke für eure bemühungen! andré
Hier mal die Pinbelegung von einem 8086: http://www.csee.umbc.edu/~plusquel/310/slides/8086_chipset.html
Ich würde einen ARM microcontroller nehmen anstatt so eine alte CPU. Vorteile sind ganz klar die geschwindigkeit (bis zu 200 mips und mehr - sollte für einen gameboy reichen ;)) und die hardware wie zB usb. Ich würde einen kleinen USB bootloader machen mit dem man, wenn der handheld mit den PC verbunden ist ein neues spiel laden kann (dazu reicht u.U. sogar schon der interne speicher aus, ansonsten verbindet man einen externen über den speicher bus). Dann hast du das problem mit den speicher nicht, denn irgendwie musst du den speicher deines handhelds ja auch beschreiben - entweder über einen eeprom writer, dann musst du den speicher immer wieder aus den sockel nehmen oder über speicherkarten, dann müsstest du aber auch ein kleines schreibgerät haben.
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.