по названию
по описанию

 

Интернет-магазин оборудования для спутникового телевидения www.agsat.com.ua: спутниковые HDTV ресиверы Dreambox, GI, Openbox, Vu+.

Рейтинг:  5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

Ide2lpt - Адаптер IDE-Винчестера для додключения к параллельному порту PC.

Каждый, кому часто приходится иметь дело с компьютерами, сталкивался с проблемой - как перенести информацию с одного компьютера на другой. На настоящий момент существует множество решений, но каждое из них обладает собственными недостатками. Варианты с передачей информации по модему, локальной сети или через Internet требуют наличия линии связи и достаточно дорогого приемопередающего оборудования. Кроме этого они, как правило, не всегда могут обеспечить необходимую скорость передачи, что существенно неприятно при перекачивании больших объемов информации. Всем известный способ переноса информации на дискетах не выдерживает критики, так как большинство программ в наше время занимает десятки и сотни мегабайт. Различные альтернативные накопители информации зачастую дороги и есть далеко не у всех.

Однако если рассмотреть конфигурацию современного компьютера, то можно отметить, что почти везде есть параллельный LPT-порт и жесткий диск с интерфейсом IDE. Сам собой возникает вопрос, а возможно ли подключение винчестера через LPT-порт? Несомненно, возможно. И такие устройства существуют, но их стоимость достаточно высока. В тоже время, изучение протоколов работы шины IDE и схемотехники параллельного порта приводят к выводу, что устройство-адаптер соединяющее эти два интерфейса может быть предельно простым и доступным в изготовлении. В настоящей статье описан один из   вариантов такого устройства.

Адаптер IDE2LPT состоит всего из восьми доступных ТТЛ-микросхем и обеспечивает подключение практически любого IDE-винчестера к LPT-порту персонального компьютера. При этом адаптер обладает следующими техническими характеристиками.

 

Основные технические характеристики адаптера.

Объем переносимой информации

зависит от типа винчестера

Количество подключаемых накопителей

1

Скорость передачи

до 100 килобайт в секунду

Сложность устройства

8 корпусов ТТЛ микросхем

Напряжение питание (без учета питания HDD)

5B±5%

Ток потребления (без учета потребления HDD)

не более 100мА


Принципиальная схема.

Схема

Простота описываемого устройства обеспечивается "интеллектуальностью" интерфейса IDE[1,2]. Интерфейс IDE — Integrated Drive Electronics был разработан в 1986 году для персональных компьютеров PC/XT и AT. В настоящие время распространена и используется его улучшенная модификация — интерфейс АТА — AT Attachment Interface.

С аппаратной точки зрения IDE представляет обычную 16-разрядную синхронную шину персонального компьютера, специально адаптированную для подключения двух дисковых накопителей информации. Фактически это забуферированная часть шины ISA 16 PC [З]. В полной конфигурации IDE включает сигналы, приведенные в Таблице 1.


Таблица. 1

Номер контакта

Название

Описание

1

-HRESET

Сброс винчестера

2

GND

Общий провод

3

HD7

Разряд 7 шины данных

4

HD8

Разряд 8 шины данных

5

HD6

Разряд 6 шины данных

6

HD9

Разряд 9 шины данных

7

HD5

Разряд 5 шины данных

8

HD10

Разряд 10 шины данных

9

HD4

Разряд 4 шины данных

10

HD11

Разряд 11 шины данных

11

HD3

Разряд 3 шины данных

12

HD12

Разряд 12 шины данных

13

HD2

Разряд 2 шины данных

14

HD13

Разряд 13 шины данных

15

HD1

Разряд 1 шины данных

16

HD14

Разряд 14 шины данных

17

HDO

Разряд 0 шины данных

18

HD15

Разряд 15 шины данных

19

GND

Общий провод

20

N/C

Ключ

21

DMARQ

Запрос прямого доступа к памяти

22

GND

Общий провод

23

-HWR

Запись

24

GND

Обший провод

25

-HRD

Чтение

26

GND

Общий провод

27

IORDY

Готовность

28

SPSYNC:CSEL

Синхронизация вращения приводов или выборка кабелем

29

-DMACK

Подтверждение прямого доступа к памяти

30

GND

Общий провод

31

INTRQ

Запрос прерывания

32

-IOCS16

16-разрядный цикл обмена

33

HA1

Разряд 1 шины адреса

34

-PDIAG

Успешное выполнение диагностики

35

HAO

Разряд 0 шины адреса

36

HA2

Разряд 2 шины адреса

37

-CS1FX

Выборка 0

38

-СS3FX

Выборка 1

39

-DASP

Активность накопителя

40

GND

Общий провод

 

С целью упрощения схемы, а также учитывая то, что пропускная способность LPT-порта в общераспространенном варианте не велика, нет необходимости в реализации всего спектра возможностей интерфейса IDE. При передаче информации в адаптере используются только программные циклы обмена, поэтому из схемы исключаются сигналы, обеспечивающие прямой доступ к памяти. Кроме этого можно исключить сигналы готовности и 16-разрядного обмена, т.к. формирование временных диаграмм цикла обмена реализовано программным путем. Без особого ущерба для полезности устройства можно исключить обработку сигналов диагностики и каскадирования master/slave.

Оставшиеся сигналы можно распределить на несколько групп:

·         • Шина данных HD15..HDO - это 8- или 16-разрядная двунаправленная шина данных. Младшие 8 разрядов используются для организации 8-разрядного обмена, например, для чтения или записи 8-разрядных регистров и т.д.

·         • Выборка О -CS1FX. В обычной схеме IDE-адаптера этот сигнал формируется дешифрацией адресной шины хост для выборки блока командных регистров.

·         • Выборка 1 -CS3PX. Аналогичен сигналу -CS1FX и служит выборки блока регистров управления.

·         • Чтение -HRD - строб считывания данных хостом с шины IDE. Низкий уровень этого сигнала разрешает накопителю установку сигналов HDO..HD7 или HDO..HD15 на шине данных. По положительному фронту этого сигнала адаптер должен защелкнуть выставленные данные во внутренних регистрах.

·         • Запись -HWR — строб записи накопителем данных с шины IDE. По отрицательному перепаду этого сигнала данные HDO..HD15 или HD7..HDO записываются в порт данных или регистр накопителя.

·         • НАО..НА2 - 3-разрядная адресная шина, предназначенная для задания номера регистра или порта данных накопителя, с которым осуществляется обмен.

·         • -HRESET - сигнал сброса накопителя. По низкому уровню этого сигнала накопитель прекращает выполнение всех операций и проводит начальную инициализацию.

·         • -DASP - сигнал активности накопителя. Переходит в низкий уровень на время циклов обмена с выбранным накопителем. Выполнен в виде открытого коллектора и может управлять светодиодным индикатором.

 

Диаграммы сигналов и временные параметры шины IDE для циклов записи и чтения приведены на рисунке 1.

 

С другой стороны адаптер подключается к параллельному порту PC [3,4]. В исходном варианте параллельный интерфейс представляет из себя 8-ми разрядную однонаправленную шину данных, предназначенную для передачи данных от PC к принтеру, б сигналов управления принтером и 5 сигналов для чтения состояния принтера. Максимальная скорость передачи информации через стандартный параллельный порт не превышает 150К в секунду. В настоящее время существуют и распространены более продвинутые модификации LPT-портов: двунаправленный параллельный интерфейс PS/2, улучшенный параллельный .порт — Enhanced Parallel Port — ЕРР и параллельный порт с расширенными возможностями — Extended Capability Port – ЕСР. Параметры этих портов значительно выше возможностей однонаправленного LPT-порта. Однако, их неповсеместная распространенность, а также существенное усложнение схемотехники адаптера в случае их использования, остановили выбор автора на простейшем варианте.

 

Рисунок 1. Временные диаграммы циклов обмена на шине IDE

33526516a2b9729fe419d4c49fca5b7b.gif

 

Полезным достоинством LPT-порта является программное формирование всех сигналов, что позволяет без особых аппаратных затрат получать необходимые временные диаграммы снимаемых с порта сигналов.

С точки зрения программиста параллельный порт состоит из трех регистров, расположенных относительно одного из двух базовых адресов пространства ввода/вывода PC. Стандартные значения базовых адресов таковы —

·         LPT1               -378h

·         LPT2               -278h

Кроме того, конкретные значения базовых адресов можно прочитать в области анных BIOS PC по адресам 0040h:0008h и 0040h:000ah для LPT1 и LPT2, соответственно.

Адреса  регистров  для  LPT1,  назначения  отдельных  разрядов  и соответствующие им сигналы в схеме адаптера приведены в таблице 2.


Таблица 2.

Адрес

Описание

 

378h

Регистр данных. Записанный байт сразу же выставляется на шине данных DATA7..DATAO параллельного порта. По команде чтения считывается состояние линий шины данных.

 

 

 

 

 

 

 

 

 

 

 

379h

Регистр состояния. Доступен только для чтения.

Раз рад

Сигнал параллель ного порта

Сигнал в адаптере

Уровень сигнала

Счет ывае мое знач еиие

Действие

7

-BUSY (выв. 11)

-LI3

1

0

3-й разряд четырехразрядной шины входных данных

6

SLCT

(выв. 13)

LI2

1

1

2-й разряд четырехразрядной шины входных данных

5

РЕ

(выв. 12)

LI1

1

1

1-й разряд четырехразрядной шины входных данных

4

-АСК

 (выв. 10)

LIO

1

1

0-й разряд четырехразрядной шины входных данных

3

-ERROR (выв. 11)

1

1

2

0

1

0

0

0

 

 

 

 

 

 

 

 

 

 

 

 

 

37ah

Регистр управления

Раз рад

Сигнал параллель ного порта

Сигнал в адаптере

Активный уровень сигнала

Запи сыва емое знач ение

Действие

7

0

В схеме IDE2LPT не используется

6

0

В схеме IDE2LPT не используется

5

0

В схеме IDE2LPT не используется

4

0

В схеме IDE2LPT не используется

3

SLCTJN

-RCWR

0

1

Запись данных с линий DATA6..DATAO в регистр DD5 для формирования управляющих сигналов RCWJRW, сигналов выборки -CS1FX,-CS3FX и адресных линий интерфейса IDE

2

INIT

-RLWR

0

0

Запись данных с линий DATA7..DATAO в регистр DD2 для формирования HD7..HDO

1

AUTO F D (выв. 14)

-RHWR

0

1

Запись данных с линий DATA7..DATAO в регистр DD3 для формирования HD15..HD8

0

STROBE (выв.1)

-HRESET

о

1

Сброс HDD

 

 

Таким образом, задача по разработке адаптера, позволяющего подключать винчестер с IDE-интерфейсом к параллельному порту PC — очевидна. Она сводится к созданию схемы, способной преобразовать восемь разрядов однонаправленной шины данных параллельного порта в 16-разрядов шины IDE при передаче информации от PC к винчестеру. А также принять 16-разрядное слово через пять доступных для чтения входов LPT-порта. Кроме этого, необходимо формировать сигналы выборки регистровых блоков и стробы чтения/записи.

На микросхемах DD2,DD3 осуществляется "защелкивание" двух байт информации от LPT-порта. При переходе сигналов -RLWR и -RHWR из низкого в высокий уровень в регистрах DD2,DD3 защелкивается состояние линий DATA7..DATAO параллельного порта. Сигналы -RHWR, -RLWR и -RCWR, они проходят через триггеры Шмидта DD1.1..DD1.3, для того, чтобы исключить формирование ложных перепадов сигналов и наводок от соседних линий в кабеле, соединяющий разъем на задней параллельного порта и плату адаптера.

Сигнал -RCWR аналогичен по логике сигналам -RHWR и -RLWR и служит для установки на выходах регистра DD5 значений адреса НА2..НАО, сигналов выборки -CS1FX и -CS3FX и стробов записи и чтения TRW/RCW. Описание отдельных разрядов регистра DD5 приведено в таблице 3.

 

Таблица 3.

Разряд DD5

Название сигнала

Описание

7

б

TRW

Сигнал формирования строба записи -HWR на шине IDE и разрешения выходов -RHLOE регистров DD2,DD3 в адаптере. Активный уровень — высокий.

5

RCW

Сигнал формирования строба 'пения -HRD на шине IDE. Активный уровень — высокий.

4

-CS1FX

Сигнал выборки регистровых банков интерфейса IDE. Активный уровень — низкий.

3

-CS3FX

Сигнал выборки регистровых банков интерфейса IDE. Активный уровень — низкий.

2..0

НА2..НАО

Адресные линии интерфейса IDE.

 

Для предотвращения возникновения недопустимых состояний на шине IDE, в адаптер введена схема, собранная на логических элементах DD9.1..DD9.4. Общая логика ее работы описана в таблице состояний 4.

 

Таблица 4.

-CS1FX

&

-CS3FX

RCW

(выв.14 DD5)

TRW

(выв.13 DD5)

-RHLOE

-HRD

(-DIOW)

-HWR

(-DIOR)

DD15..DDO

0

0

0

1

1

1

Z

0

0

1

0

0

0

D15..DOH3DD2,DD3

0

1

0

1

0

1

D15..DOorHDD

0

1

1

1

0

0

неопределенное состояние

1

X

X

1

1

1

Z

 

Как видно, разрешение выхода регистров DD2,DD3 - -RHLOE происходит только при низком уровне сигнала RCW - принять слово от HDD и высоком уровне сигнала TRW - передать слово в HDD. Таким образом, невозможна одновременная передача данных от жесткого диска и с выходов регистров DD2,DD3.

Несколько иначе обстоит дело с приемом информации, т.к. в стандартном исполнении LPT-порт — однонаправленен, то прием данных через параллельный порт осуществляется через статусные линии. Иными словами, шестнадцать разрядов шины данных с шины IDE сначала записываются в регистры DD6,DD7 по заднему фронту сигнала RCW, а затем, потетрадно, в соответствии двоичным кодом на двух младших разрядах DATAO,DATA1 параллельного порта считываются в PC через статусные линии СК, BUSY, РЕ и SLCT. Сигналы разрешения выходов DD6, DD7 снимаются   с дешифратора DD4.

Управление работой жесткого диска осуществляется IDE-контроллером, смонтированным непосредственно в корпусе винчестера.  Логически контроллер состоит из двух регистровых банков, через которые передаются команды и данные, а также считывается информация о состоянии контроллера. Выбор нужного регистра и направление передачи определяется сигналами -CS1FX, -CS3FX, -HWR, -HRD и НА2..НАО. Соответствие между выполняемой операцией, номером используемого регистром и состоянием сигналов -CS1FX, -CS3FX, -HWR, -HRD и НА2..НАО описано в таблице 5.


Таблица 5.

Адрес

Операция

-CS1FX

-CS3FX

НА2

HAI

НАО

Чтение (-HRD=0)

запись (-HWR=0)

1

1

X

X

X

Блок регистров управления

HD15..HDO—

BZ-СОСТОЯНИИ

не используется

1

0

0

X

X

HD15..HDO—

BZ-СОСТОЯНИИ

не используется

1

0

1

0

X

HD15..HDO— BZ-состоянии

не используется

1

0

1

1

0

регистр состояния

регистр управления

1

0

1

1

1

адрес HDD

не используется

 

Блок командных регистров

0

1

0

0

0

порт данных

порт данных

0

1

0

0

1

регистр ошибок

регистр стартового цилиндра

предкомпенсапии

0

1

0

1

0

регистр счетчика секторов

регистр счетчика секторов

0

1

0

1

1

регистр номера сектора

регистр номера сектора

0

1

1

0

0

регистр младшего байта номера цилиндра

регистр младшего байта номера цилиндра

0

1

1

0

1

регистр старшего байта номера цилиндра

регистр старшего байта номера цилиндра

0

1

1

1

0

регистр выбора

регистр выбора

 

 

 

 

 

накопителя/головки

накопителя/головки

 

о

1

1

1

1

регистр состояния

регистр команд

 

о

о

X

X

X

недопустимая комбинация

недопустимая комбинация

 

 

Подробное описание регистров HDD и назначение отдельных битов приведено в [I]. Рассмотрим некоторые из них.

·        Регистр команд - 8 разрядный регистр, содержащий коды команд посланных жесткому диску для исполнения. Записанная в регистр команда выполняется немедленно. Некоторые основные коды команд и их параметры перечислены в таблице 6. Полное описание команд содержится в [I].

·        Регистр состояния - 8 разрядный регистр, содержащий состояние жесткого диска. Содержимое этого регистра обновляется после выполнения каждой команды. Значения разрядов этого регистра можно считать истинными спустя 400 нС после сброса бита BSY. Когда разряд BSY установлен, значения других разрядов регистра состояния  могут содержать произвольные значения.

7

6

5

4

3

2

1

0

BSY

DRDY

DWF

DSC

DRQ

CORR

ШХ

ERR

3         BSY (BuSY) - установка этого разряда в единицу осуществляется контроллером жестокого диска и означает отсутствие доступа к блоку командных регистров со стороны хоста. Установка этого флага может происходить в следующих ситуациях:

a         в интервале 400 нС после активации сигнала -HRESET или после установки бита SRST в регистре управления. Согласно рекомендациям стандарта АТА во время исполнения сброса разряд BSY должен быть выставленным не более 30 секунд для накопителя 0 и не более 31 секунды для накопителя 1.

b         в интервале 400 нС после записи в командный регистр кодов команд Read, Read Long, Read Buffer, Seek, Recalibrate, Initialize Drive Parameters, Read Verify, Identify Drive или Execute Drive Diagnostic.

c         в интервале 5 мкС на время передачи блока из 512 байт при выполнении команд Write, Format Track, Write Buffer или Write Long.

3         DRDY (Drive ReaDY) - этот бит означает возможность исполнения накопителем команды. Если произошла какая-либо ошибка, DRDY остается установленным до тех пор, пока не будет прочитан регистр состояния. Этот бит сбрасывается при включении HDD и остается сброшенным, пока контроллер жесткого диска способен принимать команды.

3         DWF (Drive Write Fault) - бит сбоя записи. В случае возникновения ошибки остается неизменным до тех пор, пока не будет прочитан регистр состояния.

3         DSC (Drive Seek Complete) - этот бит означает, что позиционирование головки над выбранной дорожкой завершено.

3         DRQ (Data ReQuest) - означает готовность контроллером к передаче слова данных между накопителем и хостом.

3         CORR (CORRected data) - этот бит означает, что произошла восстанавливаемая ошибка данных и информация была исправлена.

3         Установка этого бита не приводит к завершению обмена данными.

3         IDX (InDeX) - бит выставляемый один раз за оборот дисков накопителя.

3         ERR (ERRor) - означает, что при выполении предыдущей команды произошла ошибка. При этом значения битов регистра ошибки содержат более подробную информацию о возникшем сбое.

·        Регистры старшего и младшего байтов номера цилиндра - два 8 разрядных регистра. Содержат стартовый номер цилиндра для любой операции с диском. После выполнения команды эти регистры обновляется текущим значением номера цилиндра. В режиме LBA регистр старшего байта номера цилиндра содержит разряды 23.. 16 LBA, а регистр младшего байта - разряды 15.. 8, соответственно.

·        Регистр управления - 8 разрядный регистр, имеет только два значимых бита.

7

6

5

4

3

2

1

0

х

х

х

х

1

SRST

nIEN

0

3         SRST (Software ReSTart) - бит программного сброса. После его установки накопитель выполняет процедуру теплого рестарта. Установка этого бита влияет на оба накопителя подключенных к шине IDE.

3         nIEn (Interrupt Enable) - этот бит разрешает генерацию прерываний от накопителя к хосту. Когда этот сигнал сброшен в ноль и накопитель активен, то на вентиль с Z-состоянием сигнала INTRQ подается разрешающий уровень. Если бит nIEn равен единице или накопитель не выбран, то сигнал INTRQ IDE-ингерфейса находится в высокоимпедансном состоянии.

·        Регистр накопителя/головки - 8 разрядный регистр содержит номер головки и выбранного накопителя. Команда Initialize Drive Parameters рассматривает содержимое этого регистра как количество головок минус 1.

7

6

5

4

3

2

1

0

1

L

1

DRV

HS3

HS2

HS1

HSO

3         L (LBA mode) - установка этого бита означает выбор адресации секторов диска по схеме LBA. Когда значение L равно нулю ыбрана обычная CHS-адресация.

3         DRV (DRiVe number) - содержит двоичный номер выбранного накопителя. Когда DRV=1 - выбран накопитель 1. Если DRV=0 -выбран накопитель 0.

3         HS3..HSO - в зависимости от значения бита L содержат либо разряды 27..24 LBA, при L=0; либо двоичный номер выбранной головки накопителя, при L==1. После выполнения команды эти разряды обновляется текущим значением номера головки или адресом LBA.

·        Регистр номера сектора - 8 разрядный регистр, содержащий начальное значение номера сектора для команд доступа к диску. Номер сектора может иметь значения от 1 до максимального числа секторов на дорожку. При включенном LBA-режиме этот регистр содержит биты 7.. О LBA, которые обновляется после выполнения команды в соответствии с текущим адресом.

·        Регистр счетчика секторов - 8 разрядный регистр, задающий количество секторов, которое будет передано при операциях чтения или записи между накопителем и хостом. Нулевое значение этого регистра означает, что задано 256 секторов для передачи. После выполнения операции регистр счетчика секторов должен обнуляться при успешном исходе. В противном случае в нем содержится кол-во секторов, которое надо передать, чтобы закончить операцию. Некоторые команды по-своему интерпретируют содержимое этого регистра.

 

Команды  передаются  жесткому  диску  установкой  параметров  в соответствующих регистрах командного блока и последующей записью кода команды в регистр команд.

Таблица б - Коды команд и их параметры

Команда

Код команды

Используемые параметры

FR

SC

SN

CY

DH

Identify drive - определить параметры накопителя

OECh

 

 

 

 

D

Initialize drive parameters - установить параметры накопителя

91h

 

 

Ö

 

 

 

 

Ö

Read Sectors) - чтение сектора(-ов)

20h

 

Ö

Ö

Ö

Ö

Write Sectors) - запись сектора(-ов)

30h

*

Ö

Ö

Ö

Ö

CY — регистры номера цилиндра

SC — регистр счетчика секторов

DH — регистр накопителя/головки

SN — регистр номера сектора

 

Ö— регистр содержит достоверное значение параметра для я регистра накопителя/головки это означает установку как к номера головки

D — действителен только номер накопителя, знамение номера головки не оказывает влияния на выполнение команды

D* — команда относится к накопителю 0, но выполняется обоими накопителями

* — параметр применяется в целях обеспечения совместимости

 

·        Identify drive — определить параметры накопителя. Команда Identify drive позволяет хосту получить параметры информацию о параметрах накопителя. После получения команды накопитель выставляет флаг BSY, сохраняет информацию о параметрах в буфере сектора и устанавливает флаг DRQ. После чего параметры накопителя могут быть прочитаны хостом из буфера сектора. Формат представления параметров в буфере сектора определен в таблице 7. Резервные разряды имеют нулевое значение

 Таблица 7.

Слово

Значение

 

 

 

 

 

 

 

 

 

0

Разряд

Слово конфигурации накопителя

15

0 — зарезервировано для немагиигиых накопителей

14

 

13

 

12

 

11

 

10

1=скорость обмена данными >10Мб/с

9

1=скорость обмена данными —5..10М6

8

1=скорость обмена данными <5Мб/с

7

0 — зарезервировано для накопителей со сменными носителями

6

1=жесткий диск

5

1=реализована возможность управления скорость вращения привода

4

1=скорость переключения головок >15мкС

3

1=не MFM кодирования

2

1="мягкое" разбиение секторов

1

1="жесткое" разбиение секторов

0

0—зарезервировано

1

Количество ди-пиндров

2

зарезервировано

3

Количество головок

4

Количество неформатированных байтов на дорожку

5

Количество неформатированных бантов на сектор

6

Количество секторов на дорожку

7..9

определяется производителем

10.. 19

Серийный номер (20 символов ASCII, 0000h - не определен)

20

Тип буфера

21

Размер буфера в 512-ти байтных блоках

22

Кол-во ЕСС байт передающихся в командах Read/Write Long (0000h - не определено)

23..26

Версия микропрограммного обеспечения накопителя (8 символов ASCII, 0000h - не определена)

27..46

Номер модели ( 40 символов ASCII, 0000h - не определен)

47

0000h = команда Read/Write Multiple не реализована

х = количество секторов, которое может быть передано за прерывание после команд Read/Write Multiple

48

0000h = невозможен обмен двойными словами

 

49

 

Разряд

Возможности

15..9

0 = зарезервировано

8

1 = поддержка DMA

7..0

определяется производителем

50

зарезервировано

51

тип цикта программного обмена данными

52

тип цикла DMA обменена данными

53.. 127

зарезервировано

128.. 159

определяется производителем

160..255

зарезервировано

 

·        Initialize drive parameters — установить параметры накопителя. Эта команда позволяет хосту установить количество секторов на дорожку и число головок минус один, на цилиндр. После получения этой команды HDD выставляет флаг BSY, запоминает установленные параметры и выдает запрос прерывания. Команда установки параметров использует только два регистра: регистр счетчика секторов, который задает количество секторов на дорожку; и регистр накопителя/головки, который определяет количество головок минус один на цилиндр. При этом значение бита номера накопителя определяет: какой накопитель будет выполнять команду.

·        Read/Write sector(s) — чтение/запись сектора(-ов). Эта команда читает или запись от одного до 256 секторов, что определяется в регистре счетчика секторов. Ноль, записанный в этот регистр, означает чтение или запись 256 секторов. Передача данных начинается с сектора, указанного в регистре номера сектора. После выполнения команды чтения сектора блок командных регистров содержит номера цилиндра, головки и сектора в соответствии с координатами последнего прочитанного или записанного сектора. В случае возникновения ошибки выполнение прерывается на секторе, в котором произошла ошибка, и блок командных регистров содержит координаты этого сектора.

 

Как следует из вышесказанного, для команд выполняющих операции с секторами, необходимо задавать координаты используемых секторов. Существуют две схемы адресации: CHS — Cylinder/Head/Sector и LBA — Logical Block Address. В первой схеме координаты каждого сектора задаются отдельно номером цилиндра, головки и сектора на дорожке. Во втором случае используется линейная схема адресации секторов, где каждому сектору в накопителе последовательно присвоен номер от одного до п. CHS-адресация позволяет работать с накопителями емкостью до 504Мб, в то время как режиме LBA можно адресовать до 2м секторов. Нулевой сектор LBA определяется как Cylinder 0/Head 0/Sector1. Номера остальных секторов определяются по формуле:

LBA = [ (Цилиндр * число головок + номер головки) * количество секторов на дорожку ] + ( номер сектора - 1 )

Следует отметить, что в режим LBA геометрия накопителя, то есть количество секторов на дорожку, количество головок и цилиндров, может не соответствовать параметрам, возвращаемым командой Identify drive. Винчестер, отформатированный под управлением PC BIOS в режиме LBA, как правило представляется имеющим 63 сектора, число головок равное степени двойки (до 256) или кратное их количеству в геометрии CHS, и необходимое число цилиндров.

Управление работой адаптером IDE2LPT и подключенным к нему жестким диском осуществляется под управлением программного обеспечения.

Единственное отличие от обычных программ, поддерживающих работу IDE-накопителей в системе, для нашего адаптера заключается в необходимости программного формирования циклов обмена между хостом и жестким диском. То есть, там, где обычно справляется процессорные команды IN, OUT, INSW и OUTSW, необходимо применить вызов соответствующей подпрограммы для чтения или записи слова или байта. Таким образом, нет необходимости писать с нуля драйвер для поддержки накопителя, подключенного через адаптер IDE2LPT. Достаточно взять исходные тексты программного обеспечения интерфейса IDE и произвести описанную замену. Кроме этого необходимо ввести ряд сервисных функций по определению наличия адаптера, проверки его работоспособности и т.д. Очевидно, что, таким образом, к адаптеру IDE2LPT можно подключать любое устройство с IDE-интерфейсом, для этого необходимо только произвести указанные модификации драйвера. Это относится прежде всего, к проигрывателям CD-ROM. Для настоящей версии адаптера автором за основу взят драйвер жестких дисков second, exe, написанный Евгением Кулешовым (2:5030/217.4@fidonet). Драйвер ide2lpt.exe осуществляет поддержку адаптера IDE2LPT в системе MSDOS версии 3.3 и выше. Для того чтобы установить драйвер, необходимо добавить строчку

device=[path]ide21pt.exe [options]

где [path] - путь к директории, где размещен драйвер, a [options] -ключи, определяющие работу драйвера. Кроме этого, драйвер может быть запущен из командной строки MSDOS, при этом он может выполнить поиск подключенных адаптеров, их тестирование, а также вывести параметры накопителя подключенного через адаптер. После имени драйвера в командной строке можно указать один или несколько ключей, управляющих работой драйвера. Ключ предваряется символом '!' и состоит из одной латинской буквы. Некоторые ключи могут иметь один или несколько цифровых параметров. Каждый параметр предваряется символом ':', следующим непосредственно за буквой ключа или предыдущим параметром. В настоящей версии адаптера применимы следующие ключи:

- вывести текст подсказки;

/L: LPT — задает базовый адрес LPT-порта, к которому подключен адаптер, адрес задается в шестнадцатиричном представлении, типичные значения: 378h для LPT1, 278h для LPT2. При отсутствии данного ключа адаптер опрашивает все параллельные порты, указанные в области данных BIOS и работает с первым найденным адаптером.

/G: SEC: HEAD — устанавливает геометрию накопителя, отличную от возвращаемой командой Identify Drive. Применяется для накопителей работающих в LBA-режиме. Параметр SEC задает число секторов на дорожку, HEAD — количество головок. Параметры записываются в десятичном виде.

/L - задает режим LBA-адресации.

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

- задает предварительное тестирование адаптера IDE2LPT.

 

Возможно множество вариантов конструкции. Автор предлагает крепление платы адаптера под корпусом жесткого диска вторым слоем над платой контроллера HDD. Адаптер соединяется плоским 24-х жильным кабелем с разъемом параллельного порта на задней панели системного блока PC. Наиболее удобно подключение адаптера к 2'5" дюймовым винчестерам в исполнении small factor для компьютеров Laptop и NoteBook. Этим накопителям требуется только одно напряжение питания — +5 вольт, что существенно упрощает конструкцию источника питания. Кроме этого в данном случае, возможно питание адаптера и винчестера от 16-ти контактного разъема GamePad, который присутствует на большинстве мультикарточек и звуковых платах. Питание +5V следует снимать с контактов 1,8,9 и 15 этого разъема.

В устройстве используются следующие микросхемы DD1 •- К555ТЛ2; DD2,DD3,DD5 - КР1533ИРЗЗ; DD4 - КР1533ИД7; DD7,DD8 - КР1533ИР34; DD9 - КР1533ЛАЗ. Допустима замена микросхем серии К 1533 на ИМС серии 555, а также применение их зарубежных аналогов. Замена регистров КР1533ИРЗЗ на КР1533ИР22 осуществляется с учетом иного расположения выводов у последних. Вместо дешифратора ИД7 можно применит ИД4 с небольшим изменением схемы его подключения. Как отмечено подписчиками эхо-конференции SU.HARDW.SCHEMES сети FidoNet, с целью обеспечения совместимости следует все сигналы адаптера, поступающие с параллельного порта, соединить с нулевым проводом через конденсаторы емкостью в сотни пикофарад — единицы нанофарад. Оптимальная емкость конденсаторов подбирается экспериментально. На шину питания необходимо установить блокировочные конденсаторы емкостью около 0.1 мкФ. В точке подключения проводов питания устанавливается электролитический конденсатор емкостью порядка 20..50мкФ. Длина соединительных проводов и проводов питания не должна превышать 30 см.

Так как описанная схема является лишь одним из возможных вариантов реализации поставленной задачи, то существует множество путей по ее развитию. В частности, автор в ближайшее время планирует отказаться от программного формирования временных параметров циклов обмена. Во всем спектре моделей PC не существует единого способа задания временных интервалов длительностью в десятки наносекунд. А это приводит к нестабильной работе  адаптера с различными  компьютерами,  чье быстродействие может отличаться на порядок. Выход возможен при установке на плате адаптера схемы одновибратора, генерирующего импульс длительность в несколько десятков наносекунд. Это может быть обычная интегрирующая RC-цепочка. Когда программе обмена необходимо отмерить интервал определенной длительности, она запускает одновибратор и ожидает окончания сформированного импульса.

Кроме этого существенным недостатком настоящей версии является невысокая скорость обмена, не позволяющая в полной мере использовать скоростные характеристики современных накопителей. Здесь выход видится в переходе от использования схем на отдельных ИМС малой интеграции к применению PLD фирм Altera или Xilinx. Применение этих кристаллов позволит осуществить поддержку PS/2, ЕРР и ЕСР режимов в адаптере, что позволит поднять скорость обмена с адаптером до 1,5Мб/с.

Програмное обеспечение можно скачать тут: под DOS под Windows

 

В завершение хочется выразить благодарность, всем людям, оказавшим поддержку в реализации этого проекта:

·         Александру Яковлеву — за идею адаптера и помощь в разработке первой версии

·         Роману Брыгину — за моральную поддержку и поддержку в сети Fidonet.

·         Сергею Долганову — за его сожженный в ходе экспериментов винчестер.

·         Евгению Кулешову— за драйвер SECOND. EXE

·         Алексею Стекольщикову — за разработку первого варианта адаптера на PLD фирмы Altera.

·         И всем другим, кто осмелился повторить адаптер и прислать автору замечания и совету по работе схемы.

 

Рисунок печатного монтажа.

Печатная плата Вариант 1 Печатная плата Вариант 2

Схемы печатного монтажа в редакторе PCB можно взять тут: вариант 1  вариант 2  вариант 3

Внешний вид.

Внешний вид устройства

 

Список рекомендуемой литературы.

1.        Information technology - AT Attachment Interface for Disk Drives, X3T10, 791D Revision Ic. - National Standard of Accredited Standards Committee X3.

2.        Л.В. Букчин, Ю.Л. Безрукий. Дисковая подсистема IBM-совместимых персональных компьютеров, Мином — 1993.

3.        Руководство по архитектуре IBM PC AT/ Ж.К. Голенкова, А.В. Заболоцкий, М.Л. Мархасин и др.; под общед. М.Л. Мархасина. — Мн.:000 "Консул", 1992

4.        Альбом принципиальных  схем персональных компьютеров/Фирма "УНИКО". — М.: Машиностроение, 1992

5.        Евгений Музыченко. Frequently Asked Questions (Часто Задаваемые Вопросы) по магнитно-дисковым накопителям ЮМ PC.

6.        Лэй Р. Разработка драйверов устройств для MS-DOS. — Рязань: Versus Ltd., 1992

7.        Flambeaux Software's TECH Help, Database Version 6.0, by Dan Rollins.

Рекомендуем посетить наш магазин

Разработано Ext-Joom.com

Яндекс.Метрика Яндекс цитирования РадиоКОТ - популярно об электронике. Авторские схемы, новые разработки. Обучение по электронике, микроконтроллерам, ПЛИС. Форум
   
Вся информация, предоставленная на данном ресурсе разрешена к ознакомлению детям школьного возраста. Все практическое использование связанно с повышенной электрической опасностью и разрешено детям только под присмотром родителей.