mikrocontroller.net

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


Autor: Dierk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dierk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Dierk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: Tim O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dierk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Ganz (goose)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Dierk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.