Forum: Mikrocontroller und Digitale Elektronik Datenfluß am IDE-Controller


von Dierk (Gast)


Lesenswert?

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.

von A.K. (Gast)


Lesenswert?

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.

von Dierk (Gast)


Lesenswert?

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?

von Dierk (Gast)


Lesenswert?

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)

von A.K. (Gast)


Lesenswert?

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.

von Tim O. (Gast)


Lesenswert?

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

von A.K. (Gast)


Lesenswert?

"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.

von Dierk (Gast)


Lesenswert?

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

von Thomas G. (goose)


Lesenswert?

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?

von Dierk (Gast)


Lesenswert?

"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
Noch kein Account? Hier anmelden.