Retour

IDE interface X.Fenard

Un interface IDE (CDROM, HD) universel

L'objectif initial est de réaliser un générateur d'annonce vocal en utilisant un lecteur de CDROM.

Afin d'utiliser le micro contrôleur de son choix, l'interface devait utiliser le moins possible d'I/O,

SIX sont seulement nécessaire.

Et avec seulement 3 circuits!! classiques, difficike de faire plus simple!!.

Un testeur CDROM, HD sur port imprimante

Pour la mise au point, les premiers essaies ont été fait en utilisant le port IMPRIMANTE.

Ce montage a été ainsi utilise pour le test de disques durs, lecteur de CDROM.

Cette solution évite l'ouverture du PC.

Evidement puisque tout se fait en série, un peu comme le JTAG,

il n'est pas question d'avoir les performances en vitesse d'une liaison IDE parallèle.

C'est suffisant pour passer des commandes de lecture sur un CDROM,

de tester d'un disque dur: interface IDE, lecture écriture d'un secteur.

Avec un micro contrôleur rapide, en limite , l'interface IDE d'un lecteur mp3.

Et pourquoi pas une super memoire de masse (enregistreur "data logger").

Compact Flash?

Les mémoires compact flash utilisent l'interface IDE.

Cet adaptateur est aussi utilisable, mais aucun essai n'a été faite, il faudrait un adaptateur IDE compact

flash

Le Hard...

Pour commencer, il faut présenter le fonctionnement de ce bus,

rarement décrit, la suite en donnera le motif.

Le transfert des donnés est assuré par deux circuits registre a décalage huits bits, les 74HCT299 (ou LS).

Les registres internes sont lisible et changeable en parallèle par les 8 E/S.

Evidement on peut aussi les charger et les lires en mode décalage série.

Pour l'historique, ce seul circuit assurait la gestion de lecture et d'écriture des données sur

le disque de l'APPLE II. Un contrôleur disque a 2 euros en somme.

Le troisième circuit gere les signaux de contrôle de l'IDE, les adresses et les chips select (CS),

ainsi que le fonctionnement des 74299.

Ce câblage permet soit un mode décalage avec sortie des données, soit un mode chargement parallèle

avec sortie en haute impédance.

On passe dans ce mode uniquement lors de la lecture de l'IDE.

Les signaux CS et ADx peuvent rester positionné sans limite de temps, ils ne sont pris en compte

que lorsque DIOW ou DIOR sont actifs.

Pour finir, la liaison des données entre les 74299 et l'IDE a été "dessiné" afin d'avoir un minimum

de "strap", d'ou un certain désordre dans le bus de données, le logiciel remet tout cela en place.

Cela permet la réalisation d'un circuit imprime simple face avec seulement 11 straps.

Une led s'allume pour indiquer que le montage est sous tension.

Le montage s'alimente en 5 volts (fils rouge sur les cordons d'alimentation), bien vérifier la tension

l'autre c'est le 12 volts!.

Avec une alimentation de PC, un découplage avec deux capacité de 100nF (environ) est suffisant,

sinon l'une sera une chimique de quelques micro farads, ce qu'on a sous la main.

L'implantation...

Commencer par placer les straps. Sur le circuit ,une led a été rajoutée par rapport a la version prototype,

elle indique l'état de DASP.

Information intéressante puisque certains disques ne sont plus jamais " actif".

On commence par percer a 0,8mm, puis pour les connecteurs on agrandi a 1mm.

La ou c'est possible un supplément de cuivre a été ajouté pour améliorer la soudure.

Pour les cordons, le sertissage du HE10 s'effectue en utilisant un petit étaux.

Nomenclature

IC1 74LS299 (ou HCT)

IC2 74LS299 (ou HCT)

IC3 74LS164 (ou HCT ne pas faire de panachage!)

CON1 : Con HE10 2*20 points

CON2: Con HE10 2*5 points

C1,C2: 100nF ou 10uF .

Led1 Led2: Led verte ou rouge

R1,R2: 1kohms

Pour les cordons:

1 cordon IDE femelle (de PC)

1 connecteur HE10 femelle, a sertir.

1 connecteur DB25 mâle.

 

Signaux ATA.

 

Signal name

Connector contact

Conductor

Connector contact

Signal name

 

RESET-

1

1

2

2

Ground

DD7

3

3

4

4

DD8

DD6

5

5

6

6

DD9

DD5

7

7

8

8

DD10

DD4

9

9

10

10

DD11

DD3

11

11

12

12

DD12

DD2

13

13

14

14

DD13

DD1

15

15

16

16

DD14

DD0

17

17

18

18

DD15

Ground

19

19

20

20

(keypin)

DMARQ

21

21

22

22

Ground

DIOW-

23

23

24

24

Ground

DIOR-

25

25

26

26

Ground

IORDY

27

27

28

28

CSEL

DMACK-

29

29

30

30

Ground

INTRQ

31

31

32

32

reserved

DA1

33

33

34

34

PDIAG-

DA0

35

35

36

36

DA2

CS0-

37

37

38

38

CS1-

DASP-

39

39

40

40

Ground

Le SOFT I : La norme...

L'IDE: c'est le nom donné a l'interface cote PC qui permet de relier les disques durs.

Les lecteurs de CDROMs ainsi que les cartes mémoires flash.

Si physiquement cet interface n'a pas changé depuis son apparition vers1990, la norme a évoluée.

Au fil des temps, c'est une véritable bibliothèque de norme qui c'est constituée, la suivante

complétant la précédente.

L'ATA premier reprenait l'organisation physique du disque dur: Cylindres, Tètes, Secteurs.

Malheureusement cela ne permettait que le contrôle des capacités de 512Mo, très vite dépassées

par les produits proposées.

Apres un "certain flottement" ou les constructeurs avaient leurs solutions,

et les cartes mères aussi, l'ATA second apparu.

Une suite, gardant la compatibilité, mais en utilisant un maximum de registres permis de faire

sauter la barrière de l'ATA1 c'est le LBA (en fait il y a eu une barrière intermédiaire a 8Go).

Dans ce mode, on ne connaît plus l'organisation du disque, il n'a que des secteurs: du 0

au 268 435 456 (28 bits) soit une limite de 134Goctets.

Avec les révisions, on arrive déjà a une dizaine de documents.

Ces révisions précisent le fonctionnement, des interprétations différentes engendrant des "bugs",

elles ajoutent aussi des modes de fonctionnement, comme la DMA pour accélérer les transferts.

L'arrivé du CDROM permet la publication de la norme ATAPI, complément de la précédente,

elle organise le support en temps (Minutes, Seconde, Frame ), et crée un nouveau mode de

dialogue avec le PC (l'ATAPI).

A cela, les livres "de couleurs" rouge, jaune, pour définir le contenue et l'organisation des

données en fonction de la destination (musique, CDROM, vidéo).

Toutes ces normes, a l'origine "a divulgation restreinte" et payantes, sont en grande partie

accessible sur le web, bien évidement en anglais, et comme toute norme indigeste!.

Le SOFT II : La norme suite...

Voyons l'essentiel, les fils, le connecteur IDE, son brochage.

Il n'a pas évolué depuis le début. Certaines lignes sont devenue obsolètes,

par exemple CS pour "cable select", ou CSIO16.

Le bus a une taille de 16, on peut transférer des mots (16bits) ou des octets (8 bits): DD15..DD0.

Avec 3 adresses DA0..DA2 et deux CS on dispose de deux blocs de mémoires de huits "cases",

soit un grand total de 16.

Comme le montre la norme ATA2, une bonne partie de CS1 ne sert pas, seulement deux registres!.

Pour CS0 on trouve les deux dénominations : l'ancienne (Cylindre, Tête, Secteur) et LBA.

Tous les registres sont huit bits (DD7..DD0) saut Data, sur 16bits,

il n'y a donc pas de sélection octet/mots, l'adresse définie la taille.

Pour transférer les données (un secteur d'un disque par exemple) on lit/écrit successivement

dans DATA en positionnant CS0, DAx=0 et DIOW (ou DIOR pour une lecture).

C'est le mode PIO, la cadence possible donne les PIOs3,2,1,0.

Si on utilise les lignes DMARQ et DMACK, avec seulement DIOW ou DIOR, on est en mode DMA, ou Ultra DMA.

Evidement dans la norme on a des commandes permettant en utilisant le mode le plus lent de récupérer

les descripteurs (IDENTIFY DEVICE).

Ainsi le bios de la carte mère propose la solution la plus performante.

Il fallait quelquefois la minoré a cause de l'autre disques, ou de la qualité de la nappe

assurant la liaison entre le PC et les disques (longueur par exemple).

Les signaux DASP et CS (câble sélect) servent pas a grand chose, en particulier CS.

 

 

 

Registres ATA

Addresses

Functions

CS0-

CS1-

DA2

DA1

DA0

Read (DIOR-)

Write (DIOW-)

N

N

x

x

x

Data bus high impedence

Not used

 

Control block registers

N

A

0

x

x

Data bus high impedence

Not used

N

A

1

0

x

Data bus high impedence

Not used

N

A

1

1

0

Alternate Status

Device Control

N

A

1

1

1

(See note 1)

Not used

 

Command block registers

A

N

0

0

0

Data

Data

A

N

0

0

1

Error

Features

A

N

0

1

0

Sector Count

Sector Count

A

N

0

1

1

Sector Number

LBA (7:0) (See note 2)

Sector Number

LBA (7:0) (See note 2)

A

N

1

0

0

Cylinder Low

LBA (15:8) (See note 2)

Cylinder Low

LBA (15:8) (See note 2)

A

N

1

0

1

Cylinder High

LBA (23:16) (See note 2)

Cylinder High

LBA (23:16) (See note 2)

A

N

1

1

0

Device/Head

LBA (27:24) (See note 2)

Device/Head

LBA (27:24)(See note 2)

A

N

1

1

1

Status

Command

A

A

x

x

x

Invalid address

Invalid address

Key:

A = signal asserted, N = signal negated, x = don’t care

Notes:

1 This register is obsolete. It is recommended that a device not respond to a read of this address. If a device does respond, it shall not drive the DD7 signal to prevent possible conflict with floppy disk implementations.

2 Mapping of registers in LBA translation.

 

registres ATAPI

CS0

DA2

DA1

DA0

Read (DIOR-) Write (DIOW-)

A

0

0

0

Data

A

0

0

1

Error_Register Features

A

0

1

0

ATAPI_Interrupt Reason/Sector Count

A

0

1

1

Sector_Number

A

1

0

0

ATAPI_Byte_Count_LSB/Cylinder_Low

A

1

0

1

ATAPI_Byte_Count_MSB/Cylinder_High

A

1

1

0

Drive_Select

A

1

1

1

Status_Command

Sur une nappe on peut y mettre deux unités, la maître et l'esclave.

La sélection s'effectue par le registre Device/Head (tete),

lors d'une écriture les deux unités mettent a jour ce registre.

Un bit du registre sélectionne l'unité active pour le reste du dialogue.

Encore un truc "en plus".. de la norme!

Le signal INTRQ permet au disque d'indiquer au PC que cela est fini et

qu'il peut effectuer un autre travail. Qu'est ce qui est fini? , c'est paramétrable,

en fonction de l'ATA, L'ATAPI, par exemple le transfert de N mots.

 

 

commande ATA blocage porte (Door Lock)

Paquet vide sauf la commande DEh!

Register

7

6

5

4

3

2

1

0

Features

 

Sector Count

 

Sector Number

 

Cylinder Low

 

Cylinder High

 

Device/Head

1

 

1

D

       

Command

DEh

 

 

 

 

 

 

 

 

Le cordon imprimante PC vers platine interface IDE.

 

HE10

nom

DB25

nom

1

clk2

2

D0

2

vcc

   

3

int

   

4

nc

   

5

din

3

D1

6

gnd

25..18

gnd

7

rd

4

D2

8

clk1

5

D3

9

wr

6

D4

10

dout

10

 

Le SOFT III : Le dialogue de base...

Pour toutes commandes (même lire les information) on doit placer en premiers les paramètres de la fonction,

et surtout le registre de tète pour sélectionner le disque.

Evidement ce registre est mémorisé, sans changement on reste sur le même disque.

Une fois les chargements réalises, on inscrit en dernier le numéro de la commande dans le registre commande

(exemple ATA ).

Il ne reste plus, si des données sont a transférer de les passer par DATA suivant le mode choisi

(PIO ou DMA).

En ATAPI, (CDROM) ca change, les "normalisateurs" ont considéré que la tailles des paramètres pouvait

dépasser la tailles des registres disponibles.

Cette taille devrait pouvoir être sans limite.

En fait la norme la limite a 12 ,16 mots ou a définir dans le futur!, qu'il n'y aura pas

puisque le nouvelle norme est l'ATA série.

Donc pour simplifier (!), on commence par une commande ATA, dans laquelle on passe simplement

le nombre de données a transmettre.

Et l'on envoie la commande ATA spéciale ATAPI PACKET.

On passe les paramètres de la commande par DATA, soit 6 ou 12 mots, avec en début le code de la commande.

Enfin toujours dans DATA on passe les données utiles (fichier, son, vidéo), le nombre a été défini

lors de la commande ATA.

Un système a double détente en quelques sorte.

La encore ce n'est pas simple, surtout quand on sait qu'il est prévu par exemple de passer

une commande ATAPI pendant qu'une commande ATA s'exécute, ou le contraire,

ce qui oblige a avoir la commande spéciale ATA SERVICE qui restitue les registres ATA

avec leurs valeurs d'origine (avant le basculement de la commande ATAPI)!.

Les norme décrivent en détail l'ensemble des commandes, leurs variantes, l'enchaînement des actions en

foncions des status (disque prêt..), et la gestion des erreurs.

Le SOFT IV : Le programme source et executable...

L'executable permet d'effectuer quelques commandes.

Pour la mise au point, un bouclage, afin de detecter les mauvais contats sur le bus IDE.

On retrouve l'esrpit JTAG (bus de test normalise).

Avec les sources et en recuperant les normes sur le web, il sera facile de tester les commandes.

Ce programme est un bon point de depart pour faires des experimentations sur les disques

sans "trafiquer" le bus IDE du PC, avec les risque de crash.

Les fichiers PCB, cf Urbani version 20050202
Les fichiers sources version 20050202
Le fichiers executable version 20050202

Note: PAS de SUPPORT... A PRENDRE DANS l'ETAT....

Le SOFT IV : Le generateur d'annonce vocal...

C'est en fait un lecteur de CD audio, le lecteur etant un lecteur de CDROM.

Le programme est en cours, evidement avec un dialogue RS485.

Page Web X.Fenard
(c) Xavier Fenard 2005

Retour