Wie kann man rausfinden in welche Richtung der Datenfluß an den bidirektionalen I/O des IDE-Controllers (also zwischen Mainboard und Festplatte) jeweils gerade geht? Ich denke mal, diese Ein-bzw. Ausgänge müssen von der Logik her jedesmal umgeschaltet werden, irgendwie muß der Festplattencontroller bzw. der IDE-Controller auf dem Mainboard "wissen" wie die Daten gerade fließen oder? D.h. die Datenflußrichtung müsste prinzipiell erkennbar sein? Ich möchte in den Datenfluß eine Schaltung setzen, die nach beiden Seiten den Fluß wiedergibt, d.h. von Seiten des Mainboards und der Festplatte als "transparent" erscheint.
Schlichte Antwort: IOR=0 liest, IOW=0 schreibt. IOR=IOW=1 ist tristate und IOR=IOW=0 Blödsinn. So jedenfalls war der ISA-Bus definiert, nach dessen Muster die IDE-Schnittstelle arbeitet. Ja nach Transferrate könnte aber der Teufel im Detail stecken. Im Timing diverser beschleunigter Transfermodi nämlich. Dürfte egal sein, wenn ein Microcontroller in gemächlichem Tempo rangeht, aber beim PC. Genaue Antwort darauf gibt wohl nur die Dokumentation dieser Modi.
Hallo, offenbar findet in den schnelleren Modi (ATA-100 usw) jedesmal ein Datentransfer statt, wenn das jeweilige Strobe toggelt... http://www.interfacebus.com/Design_Connector_IDE.html Ich möchte zwei bidirectionale Bustreiber dazwischen schalten, von denen jeweils nur einer dauerhaft enabled ist (die Datenein- und Ausgänge der Festplatte sollen so per Knopfdruck elektronisch mit verschiedenen Adaptern verbunden werden, jeweils bevor der Rechner hochfährt) d.h. muß ich einfach nur die beiden Strobes beobachten, und wenn einer der Strobes toggelt schalte ich den enableten Bustreiber um... umschalten muß ich ihn ja, denn er läßt den Datenfluß immer nur in eine Richtung zu. Ich nehme an es sollte nicht vorkommen daß beide Strobes gleichzeitig toggeln oder? Die ganze Schalterei sollte wohl unter 10 ns passieren (wenn ich mich nicht verlesen habe toggeln die Strobes alle 30 ns bei ATA >= 100 d.h. alle 30 ns werden Daten übertragen) - machbar?
Nachtrag: die beiden IOR und IOW Pins werden doch ausschließlich vom IDE-Controller (auf der Festplatte) geschaltet. Von der PC-Seite (BUS) kann also die Flußrichtung der Datenein- und Ausgänge nicht umgeschaltet werden... D.h. wenn der PC auf die Festplatte zugreifen will, bleiben nur drei Pins Pin 27 | -IOCHRDY | -> | A10 | Pin 31 | INTRQ | -> | D7 Pin 32 | -IOCS16 | -> | D2 um dem IDE-Controller der Festplatte zu signalisieren, das von der PC-Seite Daten (Kommandos etc.) für den Controller bereitliegen, richtig? Das heißt wenn eines dieser Pins toggelt, dann fängt der IDE-Controller an, mit dem IOR Strobe vom BUS Daten zu lesen? (hab ich mir jetzt so zusammengereimt, weiß nicht ob's stimmt) Weil wenn es anders funktioniert müsste ja der IDE-Controller auf der Festplatte dauernd lesend den BUS pollen, um herauszufinden ob für ihn Signale (Kommandos u.ä.) anliegen das kann nicht Sinn der Sache sein!? (möglicherweise hört sich das jetzt lächerlich an, sorry für meine mangelhaften ATA Kenntnisse)
Dieses Timing klingt etwas nach 74AC oder ähnlich rabiatem Gerät. Obacht damit, diese Biester sind hinsichtlich Layout, Pufferung etc arg sensibel. Bei ATA100 bist Du in einem Bereich, in dem die Charakteristik der Leitung und der Leitungstreiber gut zueinander passen müssen, sonst gibt's bloss Klingeln auf der Leitung. Nicht zufällig wurde mit den 74ACs zum ersten Mal seit langer Zeit ein neues Pinout definiert (74AC11xxx), mit mehreren VCC/GND in der Mitte statt je einem aussen. Siehe http://www.mikrocontroller.net/forum/read-1-176063.html#176233.
Lese er folgende Webseite ^^ http://server.barrymichels.com/ide/ Sicherlich ist das nicht ganz genau dein Ansatz, aber es steht vieles (altes, aber gutes) über das IDE-Interface drin. Am AVR erreicht das 8255-Interface übrigens bessere Transferraten, ist bei mir zur Zeit immer noch PIO0 - reicht für nen MP3-Player vollkommen. Gruss, Tim
"die beiden IOR und IOW Pins werden doch ausschließlich vom IDE-Controller (auf der Festplatte) geschaltet." Andersrum. Sie werden ausschliesslich vom IDE-Host-Adapter (Mainboard) geschaltet. Daher bestimmt dieser das Timing, nicht das Interface auf der Platte. Nur bei SCSI kontrolliert die Platte die Transfer-Zyklen. IDE hat sich aus dem ISA-Bus entwickelt und erinnert nach wie vor an eine Schrupfversion von ebendiesem, mit weitaus weniger Adressleitungen. Die Ähnlichkeit verblasst bei Ultra-Modi etwas, aber das Prinzip bleibt.
Ok, danke! Habe inzwischen einen alten CT-Artikel vom November 1990 herausgekramt, in dem das IDE-Interface (AT, PIO2) beschrieben ist. Hat sich seitdem im Pin-Out was geändert? (Abgesehen von kürzeren Strobe-Perioden von 120 ns auf 30 ns und Übertragung bei jedem Strobeübergang High -> Low und Low -> High bei ATA-7) Die Datenübertragung (Datenfluß der birektionalen I/O Pins) wird allein durch IOR und IOW Pins gesteuert, egal ob nun DMA Mode oder PIO Mode, richtig so? D.h. die wenn ich anhand dieser beiden Pins die Richtung von meinem im IDE-Kabel zwischengeschalteten Bustreiber umschalten will (welche für Mainboard und Controller transparent erscheinen sollen), muß ich beide Pins logisch auswerten und je nach dem bei welchem gerade getoggelt wird den Bustreiber entsprechend umschalten... wenn IOR getoggelt wird, muß der (bidirektionale) Bustreiber von Festplatte zu Mainboard geschaltet werden, wenn IOW getoggelt wird jedoch von Mainboard zu Festplatte.... hm, werd mal drüber nachdenken wie und mit welchen Logikbausteinen ich das schalte Grüße, Dierk
An dem Pinout der IDE-Schnittstelle hat sich nie was geändert sondern immer nur die Art der Ansteuerung. Richtig, immer /IOW und /IOR beachten reicht dir. Bedenke auch, daß so ein Bustreiber Latenzzeiten hat, das verkompliziert die Sachlage in den schnelleren Betriebsarten. Die Strobe-Impulse sind dann tlw. nur noch so lang wie so ein Treiberbaustein überhaupt Latenz hat, ankommen sollte aber immer alles im gleichen Zeitfenster. Selbst mit den AC-Typen ist nicht garantiert daß alles reibungslos klappt. <zitat> Ich möchte zwei bidirectionale Bustreiber dazwischen schalten, von denen jeweils nur einer dauerhaft enabled ist (die Datenein- und Ausgänge der Festplatte sollen so per Knopfdruck elektronisch mit verschiedenen Adaptern verbunden werden, jeweils bevor der Rechner hochfährt) </zitat> Was willst du eigentlich mit der Schaltung erreichen - eine Verlängerung der Leitungslänge, ein Loggen der laufenden Daten oder mehr als einen PC an der gleichen Platte?
"Was willst du eigentlich mit der Schaltung erreichen - eine Verlängerung der Leitungslänge, ein Loggen der laufenden Daten oder mehr als einen PC an der gleichen Platte?" Mehr als einen PC an der gleichen Platte es soll ein Umschalter für einen Harddisk-Sat-Receiver werden (so daß ich per USB Zugriff von außen auf die Platte habe, ohne Ausbauen, dazu muß der IDE-USB Adapter eben über diese Bustreiber an die Platte kommen)
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.