ATA (technologia)

Złącze ATA
Taśmy ATA 80- i 40-żyłowe

ATA (ang. Advanced Technology Attachment, AT Attachment) – 16-bitowy interfejs systemowy w komputerach klasy PC i Amiga przeznaczony do komunikacji z dyskami twardymi, zaproponowany w 1983 przez firmę Compaq i wprowadzony w ich komputerach, we współpracy z Western Digital, w 1986 pod nazwą IDE (ang. Integrated Drive Electronics). Nazwa ta pochodzi od innowacyjnego podejścia Western Digital do sterowania dyskiem twardym, czyli zintegrowania go z kontrolerem – wcześniej kontrolery dysków były umieszczane na kartach rozszerzeń montowanych w sloty magistrali ISA. Od 2003 (kiedy to wprowadzono Serial ATA) standard ten jest określany jako Parallel ATA, lub w skrócie PATA, aby uniknąć jego pomylenia ze standardem SATA.

Dyski twarde w technologii ATA/IDE w rozmiarze 5,25" i 3,5" zasilane są napięciem 5 V i 12 V poprzez złącze typu Molex, a w rozmiarze 2,5" napięciem 5 V poprzez pomniejszone złącze ATA z dodatkowymi 4 pinami.

Standard ATA nie jest już rozwijany w kierunku zwiększania szybkości transmisji. Początkowo stosowano oznaczenia ATA-1, ATA-2 itd., natomiast później były używane określenia związane z przepustowością interfejsu – ATA/33, ATA/66, ATA/100, ATA/133.

Wersje standardu ATA

W ciągu ponad 2 dekad gdy standard ATA był stosowany, powstały następujące jego wersje:

Opis złączy

Pin Oznaczenie Kierunek Opis Pin Oznaczenie Kierunek Opis
1-RESET→Sprzętowa inicjacja (RESET) dysku stałego2GNDMasa
3DD7↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym4DD8↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym
5DD6↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym6DD9↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym
7DD5↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym8DD10↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym
9DD4↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym10DD11↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym
11DD3↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym12DD12↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym
13DD2↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym14DD13↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym
15DD1↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym16DD14↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym.
17DD0↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym18DD15↔Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym
19GNDMasa20Pin nie wykorzystany
21DMARQ←żądanie przesyłania w trybie DMA22GNDMasa
23-DIOW→Przepisanie zawartości linii danych DDx do wybranego rejestru napędu24GNDMasa
25-DIOR→Przepisanie zawartości wybranego rejestru napędu na line danych DDx26GNDMasa
27IORDY←Sygnał gotowości urządzenia wejścia/wyjścia tylko w trybie PIO 3,428CSEL→wybór napędu master/slave za pomocą kabla (ustawia się to za pomocą zworki-z tyłu napędu)
29-DMACK→Sygnał przyjęcia żądania DMA przez hosta30GNDMasa
31INTRQ←żądanie obsługi przerwania(znaczenie tylko jeśli jest wykorzystywany system przerwań)32IOCS16obecnie pin przestarzały – był zdefiniowany w specyfikacji ATA-2
33DA1→Linia adresowa używana do adresowania rejestrów napędu34-PDIAG←Sygnalizuje zakończenie inicjacji drugiego dysku
35DA0→Linia adresowa używana do adresowania rejestrów napędu36DA2→Linia adresowa używana do adresowania rejestrów napędu
37-CS0→Umożliwia komunikację z rejestrami komend38-CS1→Umożliwia komunikację z rejestrami kontrolnymi
39-DASP←Informuje pierwszy dysk fizyczny (MASTER) o obecności drugiego dysku (SLAVE)40GNDMasa

W 2,5" dyskach (z laptopów) stosowane są cztery dodatkowe piny:

Pin Funkcja Pin Funkcja
41+5VDC (logic)42+5VDC (motor)
43GND44Type (0==ATA)

Widok złącza PATA dysku 2,5", X oznacza pin nr 1

.....................x ..
............ ......... ..

Opis rejestrów napędów ATA

Ogólnie można wyróżnić dwa rodzaje napędów ze złączem ATA:

  1. dyski twarde – czyli urządzenia, które nie obsługują komend pakietowych
  2. napędy optyczne CD/DVD – czyli urządzenia, które obsługują komendy pakietowe

Rejestry dla urządzeń 1)

Adres ----- ----- ----- ----- Funkcje -----
!CS0!CS1DA2DA1DA0Odczyt !DIORZapis !DIOW
Rejestry kontrolne
NANxxZwolnionyNieużywany
NAANxZwolnionyNieużywany
NAAANAlternate StatusDevice Control
NAAAAPrzestarzałyNieużywany
Rejestry komend
ANNNNDataData
ANNNAErrorFeatures
ANNANSector CountSector Count
ANNAALBA LowLBA Low
ANANNLBA MidLBA Mid
ANANALBA HighLBA High
ANAANDevice SelectDevice Select
ANAAAStatusCommand
AAxxxZwolnionyNieużywany

Rejestry dla urządzeń 2)

Adres ----- ----- ----- ----- Funkcje -----
!CS0!CS1DA2DA1DA0Odczyt !DIORZapis !DIOW
Rejestry kontrolne
NANxxZwolnionyNieużywany
NAANxZwolnionyNieużywany
NAAANAlternate StatusDevice Control
NAAAAPrzestarzałyNieużywany
Rejestry komend
ANNNNDataData
ANNNAErrorFeatures
ANNANInterrupt ReasonSector Count
ANNAA**
ANANNByte Count LowByte Count Low
ANANAByte Count HighByte Count High
ANAANDevice SelectDevice Select
ANAAAStatusCommand
AAxxxZwolnionyNieużywany

Rejestrów o nazwach Zwolniony, Przestarzały, Nieużywany nie należy używać.

!CS0, !CS1 – oznacza negację pinów – to oznacza, że w rzeczywistości (na interfejs ATA) należy podawać wartości zanegowane z tabeli (tam gdzie A podawać N, tam gdzie N podawać A)

„*” rejestr używany przez dyski twarde (urządzenia nie obsługujące komend pakietowych) Rejestr nieużywany przez napędy CD/DVD (urządzenia obsługujące komendy pakietowe)

Rejestry kontrolne

Alternate Status

Device Control

Bity 7 6 5 4 3 2 1 0
OpisHOBrrrrSRSTnIEN0

Rejestry komend

Data

Bity 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OpisDD15DD14DD13DD12DD11DD10DD9DD8DD7DD6DD5DD4DD3DD2DD1DD0

Error

Bity 7 6 5 4 3 2 1 0
Opis#####ABRT##

Features

Bity 7 6 5 4 3 2 1 0
Opis########

Sector Count / Interrupt Reason

Bity 7 6 5 4 3 2 1 0
Opis########

LBA Low

Bity 7 6 5 4 3 2 1 0
Opis########

LBA Mid / Byte Count Low

Bity 7 6 5 4 3 2 1 0
Opis########

LBA High / Byte Count High

Bity 7 6 5 4 3 2 1 0
Opis########

Device Select

Bity 7 6 5 4 3 2 1 0
Opisprzestarzały#przestarzałyDEV####

Status

Bity 7 6 5 4 3 2 1 0
OpisBSYDRDYDF/SE#DRQprzestarzałyprzestarzałyERR/CHK

Command

Bity 7 6 5 4 3 2 1 0
Opis########

Przykłady obsługi urządzenia

Sprzętowy reset

Sprzętowy reset powinien być wykonany co najmniej raz po włączeniu zasilania

Przykład w języku asembler dla mikrokontrolerów AVR:

    Resetdrive:
       cbi porte,RESET_              ;ustaw reset(czyli !RESET=0)
         sbi portd,c0                  ;!C0=1→C0=0
         sbi portd,c1                  ;!C1=1→C1=0
         cbi portd,a0                  ;A0=0
         cbi portd,a1                  ;A1=0
         cbi portd,a2                  ;A2=0
         sbi portd,dmack               ;!DMACK=1→DMACK=0
         sbi Porte,dior                 ;!DIOR=1→DIOR=0
         sbi Porte,diow                 ;!DIOW=1→DIOW=0
           Ddra = 0                     ;porta podłączony do pinow DD8-DD15
           Ddrc = 0                     ;portc podłączony do pinów DD0-DD7
             rcall czekaj25us              ;minimum 25us
      sbi porte,RESET_               ;wyzeruj reset(czyli !RESET=1)
             rcall czekaj2ms               ;minimum 2ms
                rcall Read_status_register_bsy0       ;czekaj na BSY=0
    Ret

Po wykonaniu tej procedury można założyć, że urządzenie jest prawidłowo „zresetowane”

Odczyt rejestru Status i oczekiwanie na BSY=0

Po zresetowaniu urządzenie ustawia domyślnie tryb pracy na PIO0. Tryb pracy można zmienić (na PIO0-4,MWDMA0-2 lub UDMA 0–6) za pomocą komendy SET FEATURES

Niezbędne opóźnienia są generowane za pomocą instrukcji nop i są poprawne dla trybu PIO0

    Read_status_register_bsy0:
      push GPR
        ldi GPR,0
         Out ddrc , Gpr       ;1 cykl
         Out ddra , Gpr       ;1 cykl;ustawia port danych DD15-DD0 jako wejście
        ldi GPR,0b10111100
         Out portd , Gpr ;bity⇒|7-!CS1|6-!CS0|5-DA2|4-DA0|3-DA1|2-!DMACK|1-IORDY|0-DMARQ|
           Petla_stat:
             nop;---czekaj--------------------------70ns min—nop=ok.62,5ns dla zegara 16 MHz
             nop
                cbi porte,DIOR
             nop;---czekaj---------------------------230ns min
             nop
             nop
             nop
                   in GPR,pinc       ;minęło co najmniej 230ns dane gotowe do odczytu
                   sts Status,GPR
             nop;---czekaj--------------------------- dane muszą być "ustawione" min 60ns
                sbi porte,DIOR
             nop;---czekaj---------------------------dane muszą być "przytrzymane" min 30ns
                 sbrc GPR,7                 ;BSY=? w tej chwili GPR jako STATUS
                   rjmp petla_stat          ;BSY=1
                                            ;BSY=0
      pop GPR
    Ret

Zobacz też

Przypisy

  1. ↑ Piotr Gawrysiak. Nowy standard twardych dysków: IDE 2. „Bajtek”. 4/94 (105), s. 64,67, maj 1994. ISSN 0860-1674. [dostęp 2026-02-16].
  2. ↑ Dariusz Hałas, Marek Winter. Parada twardzieli - test dysków twardych. „ENTER”. 10/99 (100), s. 86-94, październik 1999. [dostęp 2026-04-03].
  3. ↑ opr. Waldemar Boszko. Składanie i rozbudowa komputera: 4. Dyski twarde: ważne są szybkość i duża pojemność. „Chip”. 12/97, s. 218-223, grudzień 1997.

Bibliografia

Linki zewnętrzne