Иинтерфейс IDE/ATA

Автор работы: Пользователь скрыл имя, 08 Сентября 2013 в 14:04, курсовая работа

Краткое описание

Выпускаемые накопители информации представляют собой гамму запоминающих устройств с различным принципом действия физическими и технически эксплуатационными характеристиками. Основным свойством и назначением накопителей информации является ее хранение и воспроизведение. Запоминающие устройства принято делить на виды и категории в связи с их принципами функционирования, эксплуатационно-техническими, физическими, программными и другими характеристиками.

Содержание

Введение 4
1. Жесткий диск и принцип его работы 5
2. Интерфейс IDE/ATA 7
2.1 Эволюция интерфейса 7
2.2 Адресация устройств 8
2.3 Назначение контактов разъема 9
2.4 Сигналы интерфейса ATA IDE 10
2.5 Протокол взаимодействия хоста и устройства 15
2.6 Протоколы и режимы передачи данных 18
3. Алгоритм, реализующий интерфейс IDE 22
4. Программа для работы с жестким диском 24
Библиографический список 27

Прикрепленные файлы: 1 файл

Moy_kursach.doc

— 353.00 Кб (Скачать документ)

  1. Тип сигнала для устройства: I – вход, О – выход, I/O – двунаправленный, TS – тристабильный, ОС – открытый коллектор.
  2. У старых устройств сигнал может иметь тип ОС (при разнотипных сигналах на одной шине возможен конфликт).
  3. Сигаалы, приведенные после символа /, используются только в режиме Ultra DMA (ATA-4).
  4. У ведущего устройства – вход, у ведомого – выход.
  5. У ведомого устройства – только выход.
  6. Контакты 41-44 используются только для миниатюрных дисков.

 

RESET (Devicereset) – сброс устройства (инвертированный сигнал сброса системной шины). Сигнал длительностью не менее 25 мкс вырабатывается после установления питающих напряжений.

DA[2:0] (DeviceAddress) – три младших бита системной шины адреса, используемые для выбора регистров устройств.

DD[15:0] (DeviceData) – двунаправленная 16-битная шина данных между адаптером и устройствами. При 8-битных обменах используются младшие биты D[7:0].

DIOR (Device I/O Read) – строб чтения портов ввода/вывода. Данные фиксируются по положительному перепаду сигнала.

DIOW (Device I/O Write) – строб записи портов ввода/вывода. Данные фиксируются по положительному перепаду сигнала.

IORDY (I/O channelready) – готовность устройства завершить цикл обмена. Низким уровнем сигнала во время цикла обмена устройство может ввести такты ожидания шины. Сигнал требуется при обмене в PIO MODE 3 и выше.

IOCS16 – разрешение 16-битных операций. Обращение ко всем регистрам, кроме регистра данных, всегда 8-битное. Для РЮ MODE 0, 1, 2 при активном сигнале обращения 16-битные, при неактивном – 8-битные. Для РЮ MODE 3, 4 и DMA все обмены 16-битные, кроме дополнительных байт (выходящих за границу 512-байтного сектора) «длинного» считывания и записи.

DMARQ (DMA ReQuest) – запрос обмена по каналу DMA (сигнал необязательный). При разрешении обмена сигнал (высокий уровень) вводится устройством по готовности к обмену. Введя сигнал DMARQ, устройство должно дождаться подтверждения от хост-адаптера сигналом DMACK, после чего может снять запрос DMARQ. Для очередной передачи запрос должен быть введен снова. В режиме Multi-Word DMA запрос может удерживаться на время передачи всех данных. Выход должен быть тристабильным, в активном состоянии (0 или 1) он может быть только у выбранного устройства во время работы с DMA. В АТА-1 для этого сигнала мог использоваться как тристабильный, так и стандартный ТТЛ-выход. Работа на одной шине устройств с разнотипными выходами DMARQ может привести к конфликтам.

DMACK (DMA aCKnowledge) – подтверждение DMA. Сигнал вырабатывается хост-адаптером как подтверждение цикла передачи. Передача слова данных управляется сигналами DIOR или DIOW. Во время обмена по каналу DMA сигналы IOCS16, CS0 и CS1 не используются, обмен всегда производится 16-битными словами.

INTRQ (Device interrupt) – запроспрерывания.Выход должен быть тристабильным, активный сигнал (логическую 1) вырабатывает только выбранное устройство, когда у него имеется необслуженный запрос прерывания и его вырабатывание не запрещено битом nIEN в регистре DeviceControl. Запрос сбрасывается по сигналу RESET, установке бита SRST в регистре DeviceControl, записи в регистр команд или чтении регистра состояния. При обменах РЮ запрос устанавливается в начале передачи каждого блока (сектора или группы секторов при многосекторных операциях). Исключения: по командам FormatTrack, WriteSector(S), WriteBuffer и WriteLong в начале передачи первого блока данных запрос прерывания не вырабатывается. При обменах DMA запрос прерывания вырабатывается только по завершении операции.

CSO (ChipSelect 0) – сигнал выбора блока командных регистров (CommandBlockRegisters). Для первого канала он вырабатывается при наличии на системной шине адреса порта ввода/вывода в диапазоне lFOh–lF7h (сигнал также называют CS1FX#).

CS1 (ChipSelect 1) – выбор блока управляющих регистров (ControlBlockRegisters). Для первого канала он вырабатывается при наличии на системной шине адреса порта ввода/вывода в диапазоне 3F6h-3F7h (часто этот сигнал называется CS3FX;.

PDIAG (Passeddiagnostics) – сигнал о прохождении диагностики. Ведущее устройство наблюдает за этим сигналом, который ведомое устройство должно выработать в ответ на сброс или команду диагностики. Если ведомое устройство обнаружено (по сигналу DASP), ведущее устройство ожидает сигнал в течение 31с после сброса и 6 с после команды диагностики. Если за это время сигнал не появился, ведущее устройство отмечает этот факт установкой бита 7 регистра ошибок. Если ведомое устройство не обнаружено, ведущее обнуляет регистр состояния ведомого устройства и сообщает свое состояние сразу после завершения собственной самодиагностики. Сигнал служит только для связи двух устройств и хост-адаптером не используется.

CBUD (Cable assembly type identifier) – идентификациятипакабеля.В 80-проводной сборке контакт 34 на разъеме хост-адаптера соединяется с шиной GND, а контакты 34 разъемов устройств соединяются между собой, но связи с разъемом хост-адаптера не имеют. После прохождения сброса (когда сигнал PDIAG снимается) хост может определить наличие 80-проводного кабеля по низкому" уровню сигнала.

DASP (DeviceActive, SlavePresent) – сигнал двойного назначения: индикатор активности устройства и присутствия ведомого устройства. Устройства имеют выход типа «открытый коллектор» с нагрузочным резистором 10 кОм к шине +5 В. После сброса по сигналу RESET или при инициализации по включении питания оба устройства в течение 1 мс должны деактивировать этот сигнал, после чего не позже чем через 400 мс его вводит ведомое устройство для сообщения о своем присутствии. Ведущее устройство не активирует этот сигнал в течение 450 мс. Сигнал деактивируется ведомым устройством после получения им команды или через 31с автрматически (смотря что произойдет раньше). После этого сигнал может быть введен любым устройством как индикатор активности. Адаптер использует этот сигнал для включения светодиодного индикатора доступа к диску.

SPSYNC/CSEL (SpindleSynchronization/CableSelect) - синхронизация шпинделя/выборка кабелем. Сигнал двойного назначения, которое должно быть единым для обоих устройств. Сигнал SPSYNC позволяет синхронизировать шпиндели устройств (актуально для RAID-массивов); используется по усмотрению производителя накопителя. Сигнал CSEL позволяет устройствам определять свой адрес по положению на специальном кабеле с разрывом провода 28 между разъемами двух устройств (малораспространенная «кабельная выборка»). Эта линия на хост-адаптере заземлена, и ведущее устройство получает заземленную линию, а ведомое – не подключенную. Состояние сигнала (если он управляется хост-адаптером) должно удерживаться по крайней мере 31с после сигнала RESET.

При использовании режима Ultra DMA четыре линии получают новое назначение сигналов:

  • STOP (StopUltra DMA burst) – останов передачи пакета Ultra DMA.
  • DDMARDY (DeviceUltra DMA ready) – готовность устройства при приеме пакета Ultra DMA (управление потоком).
  • DSTROBE (HostUltra DMA datastrobe) – строб данных устройства при передаче пакета хосту. Данные передаются по обоим перепадам DSTROBE.
  • HDMARDY (HostUltra DMA ready) – готовность хоста при приеме им пакета Ultra DMA (управление потоком).
  • HSTROBE (HostUltra DMA datastrobe) – строб данных хоста при передаче пакета устройству. Данные передаются по обоим перепадам HSTROBE.

2.5 Протокол взаимодействия хоста и устройства

Обычный протокол взаимодействия хоста с устройством  выглядит следующим образом:

  1. Хост читает регистр состояния устройства, дожидаясь нулевого значения бита BSY. Если присутствуют два устройства, хост обращается к ним «наугад» – состояние будет сообщать последнее выбранное устройство.
  2. Дождавшись освобождения устройства, хост записывает в регистр DH байт, у которого бит DEV указывает на адресуемое устройство. Здесь кроется причина невозможности параллельной работы двух устройств на одной шине ATА: обратиться к устройству можно только после освобождения обоих устройств.
  3. Хост читает основной или альтернативный регистр состояния адресованного устройства, дожидаясь признака готовности (DRDY=1).
  4. Хост заносит требуемые параметры в блок командных регистров.
  5. Хост записывает код команды в регистр команд.
  6. Устройство устанавливает бит BSY и переходит к исполнению команды. Дальнейшие действия зависят от протокола передачи данных, заданного командой.

 

Для команд, не требующих передачи данных (ND):

Для команд данного  типа, кроме шести вышеперечисленных  пунктов стандартного взаимодействия хоста и устройства, выполняется  ещё одна.

  1. Завершив исполнение команды, устройство сбрасывает бит BSY и устанавливает запрос прерывания (если он не запрещен). К этому моменту в регистрах состояния и ошибок уже имеется информация о результате исполнения. Выполнение завершается.

Единичное значение бита BSY может промелькнуть между шагами 6 и 7 так быстро, что хост его не зафиксирует, но для фиксации факта выполнения команды или ее части и предназначен запрос прерывания.

 

Для команд, требующих  чтения данных в режиме PIO (PI):

Для команд данного  типа, кроме шести вышеперечисленных пунктов стандартного взаимодействия хоста и устройства, выполняются ещё несколько.

  1. Подготовившись к передаче первого блока данных по шине АТА, устройство устанавливает бит DRQ. Если была ошибка, она фиксируется в регистрах состояния и ошибок. Далее устройство сбрасывает бит BSY и устанавливает запрос прерывания (если он не запрещен).
  2. Зафиксировав обнуление бита BSY (или по прерыванию), хост считывает регистр состояния, что приводит к сбросу прерывания от устройства.
  3. Если хост обнаружил единичное значение бита DRQ, он производит чтение первого блока данных в режиме PIO (адресуясь к регистру данных). Если обнаружена ошибка, считанные данные могут быть недостоверными.После передачи блока данных возможно одно из следующих действий:
  • Если на шаге 8 ошибка не обнаружена, а требуется передача следующего блока, устройство устанавливает бит BSY, и данная последовательность повторяется с шага 7.
  • Если есть ошибка или передан последний блок данных, устройство сбрасывает бит DRQ и выполнение команды завершается

Для операций записи данных после шага 6 для устройства начинается активная фаза записи на носитель, что отмечается установкой бита BSY.

 

Для команд, требующих  записи данных в режиме PIO (PO и P):

Для команд данного  типа, кроме шести вышеперечисленных пунктов стандартного взаимодействия хоста и устройства, выполняются ещё несколько.

  1. Подготовившись к приему первого блока данных по шине ATА, устройство устанавливает бит DRQ (если нет ошибок) и сбрасывает бит BSY. Если была ошибка, она фиксируется.
  2. Зафиксировав обнуление бита BSY, хост считывает регистр состояния
  3. Если хост обнаружил единичное значение бита DRQ, он производит запись первого блока данных в режиме PIO по адресу в регистре данных
  4. После передачи блока данных возможно одно из следующих действий:
  • Если обнаружена ошибка, устройство сбрасывает бит DRQ, устанавливает запрос прерывания и выполнение команды завершается. Переданные по шине данные остаются необработанными устройством (не записываются на носитель).
  • Если ошибка не обнаружена, устройство устанавливает бит BSY и переходит к следующему шагу
  1. Устройство обрабатывает принятый блок данных, затем:
  • Если нет ошибок и обработанный блок – последний, устройство сбрасывает бит BSY и устанавливает запрос прерывания, на чем выполнение команды успешно завершается;
  • Если обнаружена ошибка, выполнение команды завершается таким же образом, но с установкой бит ошибок;
  • Если нет ошибок и требуется передача следующего блока, выполняются следующие шаги:
  1. По готовности приема следующего блока устройство устанавливает бит DRQ, сбрасывает бит BSY и устанавливает запрос прерывания.
  1. По обнулению бита BSY (или по прерыванию) хост считывает регистр состояния.
  2. Обнаружив бит DRQ, хост выполняет запись очередного блока в регистр данных, и последовательность повторяется с шага 11. Команды с передачей данных в режиме DMA выполняются похожим образом, но:
  • Вместо PIO используется прямой доступ к памяти. Хост должен проинициализировать канал DMA до записи кода в регистр команд, чтобы по появлении сигнала DMARQ начался обмен
  • Запрос прерывания даже в многосекторных передачах производится один раз – по выполнении команды

2.6 Протоколы и режимы передачи данных

Программа общается с устройствами АТА через регистры, используя инструкции ввода/вывода IN и OUT. Для передачи данных с максимальной скоростью применяют программный доступ к регистру данных или DMA. Тип обмена задается командой. Программный доступ обязателен для всех устройств. Команды режима DMA устройствами могут не поддерживаться.

Программный доступ PIO (ProgrammedInput/Output) выполняется в виде следующих друг за другом операций чтения или записи в пространстве ввода/вывода по адресу регистра данных. В отличие от программно-управляемого ввода/вывода, применяемого, например, для общения с LPT-портом, передача блока данных в режиме PIO производится без программного опроса какого-либо бита готовности для передачи каждого слова. Готовность устройства проверяется перед началом передачи блока, после чего хост производит серию операций в определенном темпе. Темп определяется выбранным режимом PIO Mode (Таблица 2).

Информация о работе Иинтерфейс IDE/ATA