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.

Opis złączy

PinOznaczenieKierunekOpisPinOznaczenieKierunekOpis
1-RESETSprzętowa inicjacja (RESET) dysku stałego2GNDMasa
3DD7Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym4DD8Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym
5DD6Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym6DD9Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym
7DD5Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym8DD10Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym
9DD4Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym10DD11Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym
11DD3Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym12DD12Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym
13DD2Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym14DD13Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym
15DD1Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym16DD14Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym.
17DD0Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym18DD15Szyna dwukierunkowa do przesłań pomiędzy procesorem a dyskiem stałym
19GNDMasa20Pin nie wykorzystany
21DMARQżądanie przesyłania w trybie DMA22GNDMasa
23-DIOWPrzepisanie zawartości linii danych DDx do wybranego rejestru napędu24GNDMasa
25-DIORPrzepisanie zawartości wybranego rejestru napędu na line danych DDx26GNDMasa
27IORDYSygnał gotowości urządzenia wejścia/wyjścia tylko w trybie PIO 3,428CSELwybór napędu master/slave za pomocą kabla (ustawia się to za pomocą zworki-z tyłu napędu)
29-DMACKSygnał 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
33DA1Linia adresowa używana do adresowania rejestrów napędu34-PDIAGSygnalizuje zakończenie inicjacji drugiego dysku
35DA0Linia adresowa używana do adresowania rejestrów napędu36DA2Linia adresowa używana do adresowania rejestrów napędu
37-CS0Umożliwia komunikację z rejestrami komend38-CS1Umożliwia komunikację z rejestrami kontrolnymi
39-DASPInformuje pierwszy dysk fizyczny(MASTER) o obecności drugiego dysku(SLAVE)40GNDMasa
  • - oznacza negację pinów
  • → pin ustawia host
  • ← pin ustawia napęd
  • ↔ pin dwukierunkowy: kierunek zależny od operacji

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

PinFunkcjaPinFunkcja
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
  • A = sygnał ustawiony (logiczna 1)
  • N = sygnał zanegowany (logiczne 0)
  • x = stan dowolny (0 lub 1)

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 nie używany przez napędy CD/DVD (urządzenia obsługujące komendy pakietowe)

Rejestry kontrolne

Alternate Status

  • ZASTOSOWANIE: odczyt podstawowych informacji o stanie urządzenia bez kasowania obsługi przerwania
  • rejestr jest tylko do odczytu, a w czasie zapisu dane trafiają do Device Control
  • kiedy bit BSY=1 wtedy inne bity z tego rejestru nie powinny być interpretowane, zawartość tego rejestru nie jest prawdziwa gdy urządzenie jest w trybie uśpienia
  • odczyt tego rejestru nie spowoduje skasowania obsługi przerwania
  • zawartość tego rejestru jest identyczna z zawartością rejestru Status

Device Control

  • ZASTOSOWANIE: rejestr ten umożliwia wykonanie programowego resetu oraz włączenie obsługi przerwania
  • rejestr jest tylko do zapisu, w czasie odczytu jest to Alternate Status
  • rejestr powinien być zapisywany tylko gdy DMACK=0
  • zawartość tego rejestru będzie zinterpretowana przez napęd od razu po jego zapisaniu
Bity76543210
OpisHOBrrrrSRSTnIEN0
  • HOB (HighOrderByte)znaczenie tylko w przypadku dysków twardych – adres LBA 48-bitowy – gdy HOB=0 to napęd interpretuje młodszą część (0–23) adresu LBA 48-bitowego, gdy HOB=1 część starszą (24–47)
  • r(6:3) (reserved) zarezerwowane
  • SRST (SoftwareReSeT) reset programowy napędu
  • nIEN (notInterruptENable) bit włącza przerwanie(gdy nIEN=0 i urządzenie jest wybrane) lub wyłącza przerwanie(gdy nIEN=1 lub urządzenie nie jest wybrane)
  • Bit 0 zawsze powinien mieć wartość 0

Rejestry komend

Data

  • ZASTOSOWANIE: transfer danych(tylko w trybie PIO), dostęp do rejestrów
  • rejestr ten służy do zapisu lub odczytu
  • dostęp do rejestru powinien odbywać się w czasie przesyłania danych w trybie PIO, gdy DRQ=1 oraz BSY=0 oraz DMACK=0
  • rejestr 16-bitowy
  • dostęp (odczyt/zapis) do rejestrów jest realizowany właśnie poprzez ten rejestr tylko w trybie PIO; ponieważ rejestry są 8-bitowe to dane jakie chcemy zapisać (odczytać) do tych rejestrów ustawiamy na części młodszej rejestru (Bity DD7–DD0), część starsza nie jest interpretowana; natomiast gdy transferujemy dane z napędu to musimy korzystać z całej szerokości rejestru (Bity DD15–DD0) – nie ma możliwości pracy w trybie 8-bitowym.
Bity1514131211109876543210
OpisDD15DD14DD13DD12DD11DD10DD9DD8DD7DD6DD5DD4DD3DD2DD1DD0

Error

  • ZASTOSOWANIE: określenie przyczyny błędu
  • rejestr tylko do odczytu; gdy jest zapisywany – dane trafiają do rejestru Features
  • zawartość rejestru jest poprawna gdy BSY=0 oraz DRQ=0 oraz ERR=1 lub SE=1, po włączeniu zasilania, wykonaniu sprzętowego lub programowego resetu, po wykonaniu komend EXECUTE DEVICE DIAGNOSTICS lub DEVICE RESET zawartość rejestru jest niewłaściwa w trybie uśpienia
Bity76543210
Opis#####ABRT##
  • # zawartość tych bitów zależy od wykonanej operacji(komendy)
  • ABRT (ABoRT) ABRT=1 gdy nastąpiło anulowanie wykonania komendy(na skutek nie właściwej komendy, niewłaściwego parametru w komendzie, błędu odczytu itd.)

Features

  • ZASTOSOWANIE: zależnie od komendy
  • rejestr jest tylko do zapisu, w czasie odczytu jest to Error
  • rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0
  • zawartość tego rejestru staje się parametrem komendy po zapisaniu rejestru Command
Bity76543210
Opis########
  • # zawartość tych bitów zależy od komendy

Sector Count / Interrupt Reason

  • ZASTOSOWANIE: zależnie od komendy
  • rejestr jest do zapisu lub odczytu
  • rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0, zawartość rejestru jest niepoprawna gdy urządzenie jest w trybie uśpienia
  • zawartość tego rejestru staje się parametrem komendy po zapisaniu rejestru Command
  • w przypadku dysku twardego jest to rejestr Sector Count, w przypadku napędu CD/DVD jest to Interrupt Reason w czasie odczytu i Sector Count w czasie zapisu (patrz tabela)
Bity76543210
Opis########
  • # zawartość tych bitów zależy od komendy

LBA Low

  • ZASTOSOWANIE: zależnie od komendy
  • rejestr jest do zapisu lub odczytu
  • rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0, zawartość rejestru jest niepoprawna gdy urządzenie jest w trybie uśpienia
  • zawartość tego rejestru staje się parametrem komendy po zapisaniu rejestru Command
  • w przypadku napędu CD/DVD rejestr ten nie jest używany
Bity76543210
Opis########
  • # zawartość tych bitów zależy od komendy

LBA Mid / Byte Count Low

  • ZASTOSOWANIE: zależnie od komendy
  • rejestr jest do zapisu lub odczytu
  • rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0, zawartość rejestru jest niepoprawna gdy urządzenie jest w trybie uśpienia
  • zawartość tego rejestru staje się parametrem komendy po zapisaniu rejestru Command
  • w przypadku dysku twardego jest to rejestr LBA Mid, w przypadku napędu CD/DVD jest to Byte Count Low
Bity76543210
Opis########
  • # zawartość tych bitów zależy od komendy

LBA High / Byte Count High

  • ZASTOSOWANIE: zależnie od komendy
  • rejestr jest do zapisu lub odczytu
  • rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0, zawartość rejestru jest niepoprawna gdy urządzenie jest w trybie uśpienia
  • zawartość tego rejestru staje się parametrem komendy po zapisaniu rejestru Command
  • w przypadku dysku twardego jest to rejestr LBA High, w przypadku napędu CD/DVD jest to Byte Count High
Bity76543210
Opis########
  • # zawartość tych bitów zależy od komendy

Device Select

  • ZASTOSOWANIE: wybór urządzenia master lub slave
  • rejestr jest do zapisu lub odczytu
  • rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0, zawartość rejestru jest niepoprawna dla dysku twardego jest w trybie uśpienia, dla napędu CD/DVD jest poprawna w trybie uśpienia
  • bit DEV jest interpretowany natychmiast po zapisaniu, reszta bitów tego rejestru staje się parametrem komendy po zapisaniu rejestru Command
Bity76543210
Opisprzestarzały#przestarzałyDEV####
  • zapis do bitów przestarzałych będzie ignorowany przez napęd
  • DEV (DEVice) DEV=0 wybór urządzenia Master, DEV=1 wybór urządzenia Slave
  • # zawartość tych bitów zależy od komendy

Status

  • ZASTOSOWANIE: odczyt podstawowych informacji o stanie urządzenia oraz kasowanie obsługi przerwania
  • rejestr jest do odczytu, gdy jest zapisywany dane trafiają do rejestru Command
  • kiedy bit BSY=1 wtedy inne bity z tego rejestru nie powinny być interpretowane, zawartość tego rejestru nie jest prawdziwa gdy urządzenie jest w trybie uśpienia
Bity76543210
OpisBSYDRDYDF/SE#DRQprzestarzałyprzestarzałyERR/CHK
  • BSY (BuSY) informuje, że urządzenie jest zajęte(gdy BSY=1)
  • DRDY (DeviceReaDY) informuje o gotowości(gdy DRDY=1) urządzenia
  • DF/SE (DeviceFault/StreamError) informuje o błędzie(gdy DF/SE=1); nie wszystkie komendy obsługują(ustawiają) ten bit
  • # zawartość zależna od komendy
  • DRQ (DataReQuest) informuje o żądaniu (DRQ=1) przesyłania danych z/do napędu
  • ERR/CHK (ERRor/CHecK) informuje o wystąpieniu(ERR/CHK=1) błędu

Command

  • ZASTOSOWANIE: rejestr zawiera kod komendy,rejestr ten zapisuje się na końcu(po zapisaniu wszystkich innych rejestrów), po zapisaniu tego rejestru urządzenie przystępuje do wykonania komendy a pozostałe rejestry przeznaczone do zapisu mogą stać się parametrami komendy (zależnie od rodzaju komendy)
  • rejestr jest do zapisu, gdy jest odczytywany dane reprezentują zawartość rejestru Status
  • rejestr powinien być zapisywany tylko gdy BSY=0 oraz DRQ=0 oraz DMACK=0
Bity76543210
Opis########
  • # zawartość tych bitów reprezentuje kod komendy – np. kod 0xA0 jest komendą identyfikacji urządzenia

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ż

Bibliografia

  • T13/Project 1532D Volume 1 Revision 4b 21 April 2004
  • T13/Project 1532D Volume 2 Revision 4b 21 April 2004
  • T13/Project 1532D Volume 3 Revision 4b 21 April 2004

Linki zewnętrzne

Media użyte na tej stronie

IDE cable 40 pin & 80 pin.jpg
Autor: User Smial on de.wikipedia, Licencja: CC BY-SA 2.0 de
Zwei IDE-Kabel. Links ein 80-poliges UDMA-Kabel mit farbliche gekennzeichneten und codierten Buchsenleisten. Blau: Mainboard bzw. Host, grau: Slave, schwarz: Master. Rechts ein 40-poliges Standardkabel, bis maximal UDMA33 spezifiziert.
Ata 20070127 002.jpg
ATA connector, photo taken in Sweden