ISA (продолжение)

Do you have a question? Post it now! No Registration Necessary

Threaded View
Thu Jul 31 2003 21:23, Vadim Tzirulnicov wrote to All:

 VT> Вот схема моей карты:

 VT> ISA                    К555АП6           К555ИР23    К514ИД2     АЛС321Б
 VT>                      ____________        ________     ______    ________
 VT>                      |  | |> |  |        |  |  | |   | |  |A|---|A|     |
 VT> A2 <-----------------|A7| <| |B7|--------|D7|RG|7|---|1|DC|B|---|B|     |
 VT> A3 <-----------------|A6|    |B6|--------|D6|  |6|---|2|  |C|---|C|     |
 VT> A4 <-----------------|A5|    |B5|--------|D5|  |5|---|4|  |D|---|D|  _  |
 VT> A5 <-----------------|A4|    |B4|--------|D4|  |4|---|8|  |E|---|E| | | |
 VT> A6 <-----------------|A3|    |B3|--------|D3|  |3|   |Г|  |F|---|F| |_| |
 VT> A7 <-----------------|A2|    |B2|--------|D2|  |2|   --------    -------
 VT> A8 <-----------------|A1|    |B1|--------|D1|  |1|
 VT> A9 <-----------------|A0|    |B0|--------|D0|  |0|
 VT>                      |  |    |  |        |--|  | |
 VT>    К555ЛH2 К555ЛА2   |  |    |  |   |----/ C|  | |
 VT>      ___   ____      |--|    |  |   |  --o E|  | |
 VT>      |  |  |   |     |  |    |  |   |  | |__|__|_|
 VT> A11<-|  o--| & o-|---o E|    |  |   | ___
 VT>      |__|  |   | | --| T|    |  |   |
 VT>            |   | | |  ----------    |
 VT> A22<-------|   | | |     ___        |
 VT> A23<-------|   | | |    |   |       |
 VT> A24<-------|   | |/|\---|   o_______|
 VT> A25<-------|   |   |    |___|
 VT> A26<-------|   |   |
 VT> A27<-------|   |   |
 VT> A28<-------|   |   |
 VT> A30<-------|   |   |
 VT> A31<-------|___|   |
 VT>                    |
 VT> B14----------------|

(Лучше бы названия сигналов привел)
Скажем так, не все правильно. С ЛА2 в принципе нормально - она должна
сформировать сигнал выбора карты на основании анализа A0-A9 и AEN (!). (Итого
11 линий, а у тебя 10 - кого забыл? Если младший разряд адреса, то и плевать
на него, но AEN выбрасывать нельзя). Сигнал, формируемый ЛА2, назовем для
краткости IOA (IO Access).

Если карта выбрана, то по фронту ~IOR данные будут записаны в регистр
материнки (т.е. они должны быть выставлены на шину при активных IOA и IOR -
ставим соответствующую мелкую логику). Аналогично, при активном IOA по фронту
IOW данные с шины записываются в твой регистр. Поэтому IOW на CLK, а все
остальное формирует ему сигнал разрешения записи. В приведенной схеме регистр
выбран всегда, а на счетный вход приходит выход комбинаторной логики (и мало
ли что там гуляет? По такой схеме можно просто _читать_ из карты, и на CLK
будут фронты!)

Так что вот.


Re: ISA (продолжение)
Привет Vadim!

31 Jul 03 21:23, Vadim Tzirulnicov писал All:

 VT> Вот схема моей карты:

    [поскипано]

    А нельзя ли было вместо номеров контактов написать обозначения сигналов?
Лень ведь в интернете искать спецификацию сабжа...

 VT> Когда карты нет, читается 0xFF, так что дело в карте. Hо вот что не
 VT> правильно в моём эхотаге - понять самому, видно, не дано...

    Hе очень понял что там у тебя с чтением кары, но по поводу записи есть
такие соображения:

1. Что за сигнал B14, который идет на буфер? Зачем он нужен, если буфер всегда
передает данные в одну сторону - с шины на регистр (еще бы вспомнить, что это
за вход T...)?

2. Зачем ты переводишь выход буфера в 3-е состояние? Мало того что этого просто
не требуется, так ты еще и получаешь гонки с инвертором на вход С регистра.

3. Hа кой черт тут вообще нужен буфер, если шина данных нагружена на
единственный вход регистра?

4. Hа кой черт нужен инвертор на вход С регистра? Получается, что данные
защелкиваются в регистр не в конце цикла записи, а в самом начале.

5. Hа кой черт тут вообще синхронный регистр? Hе лучше ли заменить его на латч
(ИР22 в данном случае)?

6. И, наконец, там среди сигналов, подаваемых на ЛА2, не забыт ли сигнал
валидности адреса, о котором тебе тут уже писали? А11, как я догадался, это
запись?

Всего наилучшего,                                 [Team PCAD 2000]
Алексей М.
... Слепой Пью, Глухой Ем...

ISA (продолжение)
#/▄▄▄▄▄/# · ···─═╗ Привет _Alex_ ! Пишет тебе *Vadim* !
_*▀▀▀▀▀*_        ╚═══════════════─────────────────····· · · ·

 AM>     А нельзя ли было вместо номеров контактов написать обозначения
 AM> сигналов? Лень ведь в интернете искать спецификацию сабжа...


В общем, анализирую состояние A2-A9 и AEN, а также -IOR.


 AM> 1. Что за сигнал B14, который идет на буфер?

-IOR.

 AM>  Зачем он нужен, если
 AM> буфер всегда передает данные в одну сторону - с шины на регистр

Ошибаешься. Передаёт он в зависимости от состояния -IOR либо с шины на регистр,
либо на шину с другого буфера К555АП5.

 AM>  (еще
 AM> бы вспомнить, что это за вход T...)?

Вход перевода вызодов в третье состояние.

 AM>
 AM> 2. Зачем ты переводишь выход буфера в 3-е состояние? Мало того что
 AM> этого просто не требуется, так ты еще и получаешь гонки с инвертором
 AM> на вход С регистра.

Согласно спецификации на ISA. Во время циклов ПДП карты должны отключать свои
выводы от шины.

 AM>
 AM> 3. Hа кой черт тут вообще нужен буфер, если шина данных нагружена на
 AM> единственный вход регистра?

Я же писал, что к К555АП6 подключён другой, выходной, буфер К555АП5,
выставляющий на шину значения с исп. устройства.

 AM>
 AM> 4. Hа кой черт нужен инвертор на вход С регистра? Получается, что
 AM> данные защелкиваются в регистр не в конце цикла записи, а в самом
 AM> начале.

Данные защёлкиваются при переходе с высокого на низкий уровень. Когда нет
обращения к карте - на входе "С" регистра лог. "1", при обращении к карте
происходит инверсия и данные защёлкиваются в регистре.
Если регистр убрать, то по логике вещей данные будут защёлкиваться уже не в
достоверном виде (т.е. адрес на шщине будет уже другим, и данные
соответственно, будут предназначены не моей карте, а другой).


 AM>
 AM> 5. Hа кой черт тут вообще синхронный регистр? Hе лучше ли заменить
 AM> его
 AM> на латч (ИР22 в данном случае)?

Hикакой разницы не вижу между ИР22 и ИР23. Разве что время доступа у первого
больше.

 AM>
 AM> 6. И, наконец, там среди сигналов, подаваемых на ЛА2, не забыт ли
 AM> сигнал валидности адреса, о котором тебе тут уже писали?

Hет.
               · ···─═╗ Hу я вроде все сказал... Пока, _*Alex*_ !
                      ╚═══════════════─────────────────····· · · ·
... Людям свойственно приписывать другим качества, присущие им самим.

Re: ISA (продолжение)
Привет Vadim!

08 Aug 03 22:34, Vadim Tzirulnicov писал Ilia Tarasov:

 VT> Почему ? Смотри: Если идёт обращение к карте, то возможны два случая:
 VT> когда на -IOR "0" и -IOW "1" (чтение) и когда на -IOR "1" и -IOW "0"
 VT> (запись). Т.е. можно слушать только одну из линий.

    :) Ты вообще-то спецификацию шины читал? Как минимум, есть еще сигналы
чтения и записи в память. Hе говоря уже о том, что все четыре сигнала могут
быть неактивны, то есть в 1...

 VT> Сложно реализовать такую схему. Да и зачем, если гораздо
 VT> проще протянуть проводок от -IOR к SED0/oSED1 К555АП6 и радоваться
 VT> жизни :)

    Тут ты прав, так сделать проще. Только работать не будет. :)

Всего наилучшего,                                 [Team PCAD 2000]
Алексей М.
... Пирожок печеный с печенью.

Re: ISA (продолжение)
Fri Aug 08 2003 22:34, Vadim Tzirulnicov wrote to Ilia Tarasov:

 IT>> Что есть в корне неправильно!

 VT> Почему ? Смотри: Если идёт обращение к карте, то возможны два случая:
 VT> когда на -IOR "0" и -IOW "1" (чтение) и когда на -IOR "1" и -IOW "0"
 VT> (запись).
 VT> Т.е. можно слушать только одну из линий. А обе анализировать... Сложно
 VT> реализовать такую схему. Да и зачем, если гораздо проще протянуть
 VT> проводок от -IOR к SED0/oSED1 К555АП6 и радоваться жизни :) Прадва, пока
 VT> не получается...

Ничего подобного! Как ты определяешь обращение к карте? По совпадению адреса?
Так там еще MEMR MEMW (ч/з памяти) и циклы ПДП, во время которых адрес,
выставленный на шину, недействителен (о чем сообщает AEN). К тому же
правильные данные для записи гарантированы именно к фронту ~IOW.

 IT>> Потому что в этот регистр пишут все, кому не лень,

 VT> неправда. Только при обращении к карте.

См. выше. И почитай описание шины.


Re: ISA (продолжение)
Hello, Vadim!
You wrote to Ilia Tarasov on Fri, 08 Aug 2003 21:34:08 +0400:

 IT>> Кстати, да. Я обратил внимание, что у ЛА2 только 8 входов, но подумал,
 IT>> что ты набрал такого монстра из нескольких микросхем. (Проверь еще раз
 IT>> - на ЛА2 получается AEN + 7 адресных линий... остальные надо как-то
 IT>> придумывать, или игнорировать и получать 2^3=8 дублирующихся адресов).

 VT> Подключил К555ЛИ1. Прослушиваю A2-A9+AEN (слушаю 4 канала,
 VT> 0x3FC-0x3FF). Проверял - данный диапазон в моём компьютере свободен, в
 VT> BIOS'е, естественно, не "забит".

 IT>> Что есть в корне неправильно!

 VT> Почему ? Смотри: Если идёт обращение к карте, то возможны два случая:
 VT> когда на -IOR "0" и -IOW "1" (чтение) и когда на -IOR "1" и -IOW "0"
 VT> (запись). Т.е. можно слушать только одну из линий. А обе
 VT> анализировать... Сложно реализовать такую схему. Да и зачем, если
 VT> гораздо проще протянуть проводок от -IOR к SED0/oSED1 К555АП6 и
 VT> радоваться жизни :) Прадва, пока не получается...

Бл$$$$, пардон, но я не выдержал. А КАК ты обработаешь случай,
когда ISA обратилась, например,  к памяти ?? Будет -IOR = 1 и -IOW = 1, твой
девайс подумает, что происходит ЗАПИСЬ !!!!!

 VT>>> но всё равно - почему, если я _только_ пишу в карту (в цикле), то
 VT>>> вводимое значение на индикаторе еле-еле мерцает. При чтении порою
 VT>>> считывается число 0x00FF ?
 IT>>
 IT>> Потому что в этот регистр пишут все, кому не лень,
 VT> неправда. Только при обращении к карте.

Представь обрвщение к ПАМЯТИ по адресам 0xXX3FC-0xXX3FF.
Как твой девайс отличит это от IO ?!!

Теперь, понятно ?
Твой облом в том, что ты забыл, что ISA обслуживает не только IO,
а ещё и память (и DMA, IRQ)

With best regards, Dmitriy Malugin aka McMaster.  E-mail: snipped-for-privacy@comail.ru
[Legalize_Cannabis][Furry][i8052][PIC_mustdie][AVR&i52][WINNT]



Re: ISA (продолжение)
Thu Aug 07 2003 00:50, Vadim Tzirulnicov wrote to Ilia Tarasov:

 VT> В общем, ошибся я немного ошибся в схеме - задействовал к К555ЛА2
 VT> незадействованные выводы. Теперь селектор адреса на К555ЛИ1 и К555ЛА2
 VT> подключён к A2-A9 и AEN (итого диапазон 0x3FC-0x3FF).

Кстати, да. Я обратил внимание, что у ЛА2 только 8 входов, но подумал, что ты
набрал такого монстра из нескольких микросхем. (Проверь еще раз - на ЛА2
получается AEN + 7 адресных линий... остальные надо как-то придумывать, или
игнорировать и получать 2^3=8 дублирующихся адресов). Да, и на 3FF лучше не
лезь - на IS-е есть "штатный" диапазон адресов макетных плат - 300H-31FH.

 IT>> Если карта выбрана, то по фронту ~IOR данные будут записаны в регистр
 IT>> материнки (т.е. они должны быть выставлены на шину при активных IOA и
 IT>> IOR - ставим соответствующую мелкую логику). Аналогично, при активном
 IT>> IOA по фронту
 IT>> IOW данные с шины записываются в твой регистр.

 VT> IOW не задействован у меня.

Что есть в корне неправильно!

 IT>>  Поэтому IOW на CLK,

 VT> Какой ещё такой "CLK" ?

Который "C" - тактовый вход регистра, по фронту на котором происходит запись.

 VT> Я понял свою ошибку. У меня данные запихиваются в регистр даже тогда,
 VT> когда компьютер читает данные из карты, и эти данные - данные с буфера
 VT> К555АП5.

Вот именно - IOW-то вообще ни при чем, и фронты на счетном входе появляются
откуда ни попадя...

 VT> но всё равно - почему, если я _только_ пишу в карту (в цикле), то
 VT> вводимое значение на индикаторе еле-еле мерцает. При чтении порою
 VT> считывается число 0x00FF ?

Потому что в этот регистр пишут все, кому не лень, и твои значения на фоне
постоянного дергания тактового входа там держатся доли секунды.

(Адрес ящика дай? Если найду схему контроллера, брошу тебе)


RE:ISA (пpодолжение)
Hello, Vadim!

VT> Почему ? Смотpи: Если идёт обpащение к каpте, то возможны два случая:
VT> когда на -IOR "0" и -IOW "1" (чтение) и когда на -IOR "1" и -IOW "0"
VT> (запись). Т.е. можно слушать только одну из линий. А обе
VT> анализиpовать... Сложно pеализовать такую схему. Да и зачем, если

Ты бы это... Сделал бы для начала не _пpосто_, а _пpавильно_. Я тебе даже
ничего
дpугого посоветовать не могу - то, что я совсем зеленым 10 лет тому назад
залудил после беглого взгляда на тайминги шины - завелось сpазу же, думаю,
также, как и у пpочих, поэтому вpяд ли кто тебе что-то скажет - ни у кого
пpоблем не было, а нет пpоблем - откуда быть советам.

Разбуpи фигню нафиг, и сделай по-уставу.



Best regards,  // Чеpт возьми! Такая уж надувательная земля!
Yurij.         // (c) Гоголь


ISA (продолжение)
#/▄▄▄▄▄/# · ···─═╗ Привет _Ilia_ ! Пишет тебе *Vadim* !
_*▀▀▀▀▀*_        ╚═══════════════─────────────────····· · · ·

 IT> Hичего подобного! Как ты определяешь обращение к карте? По совпадению
 IT> адреса? Так там еще MEMR MEMW (ч/з памяти)

Они мне не нужны.

 IT>  и циклы ПДП, во время
 IT> которых адрес, выставленный на шину, недействителен (о чем сообщает
 IT> AEN).

Я же сказал, что задействовал AEN.

 IT>  К тому же правильные данные для записи гарантированы именно к
 IT> фронту ~IOW.

Ещё раз. При обращении к карте активизируется либо -iow,  либо -ior.
на неактивном выводе сигнал, соттветственно, инверсный относительно активного.
Т.е. можно, как я понимаю, один вывод не отслеживать.

И потом. Если дело в -iow, то почему читается карта некорректно (частенько
вместо реальных данных проскальзывают "0x00FF") ?

Уж при чтении можно не следить за -IOW.


 IT>
 IT>>> Потому что в этот регистр пишут все, кому не лень,
 IT>
 VT>> неправда. Только при обращении к карте.
 IT>
 IT> См. выше. И почитай описание шины.
 IT>

Читал. И не раз.

               · ···─═╗ Hу я вроде все сказал... Пока, _*Ilia*_ !
                      ╚═══════════════─────────────────····· · · ·
... В России заборы делают из досок, а мебель - из опилок (воспоминания
иностранца)


Re: ISA (продолжение)
#/▄▄▄▄▄/# · ···─═╗ Привет _Dmitriy_ ! Пишет тебе *Vadim* !
_*▀▀▀▀▀*_        ╚═══════════════─────────────────····· · · ·

 DM> Бл$$$$, пардон, но я не выдержал. А КАК ты обработаешь случай,
 DM> когда ISA обратилась, например,  к памяти ?? Будет -IOR = 1 и -IOW =
 DM> 1, твой девайс подумает, что происходит ЗАПИСЬ !!!!!

Hо ситуации, когда -IOR=0 и -IOW=0, не бывает ?

Хорошо. Hо почему тогда периодически вместо 0x00F0 (см. схему) компьютер
считывает с карты 0x00FF ? Ведь отслеживаемая линия-то - -IOR...


 DM>
 VT>>>> но всё равно - почему, если я _только_ пишу в карту (в цикле),
 VT>>>> то вводимое значение на индикаторе еле-еле мерцает. При чтении
 VT>>>> порою считывается число 0x00FF ?
 IT>>>
 IT>>> Потому что в этот регистр пишут все, кому не лень,
 VT>> неправда. Только при обращении к карте.
 DM>
 DM> Представь обрвщение к ПАМЯТИ по адресам 0xXX3FC-0xXX3FF.
 DM> Как твой девайс отличит это от IO ?!!

Опять же - моя схема при активизации -IOR выдаёт в комп. данные. Почему порою
считывается 0x00F0 ? От того, что я не слежу за -IOW, это не зависит.

 DM>
 DM> Теперь, понятно ?
 DM> Твой облом в том, что ты забыл, что ISA обслуживает не только IO,
 DM> а ещё и память (и DMA, IRQ)

Кстати, о IRQ. Алгоритм, если я не ощибаюсь, следующий:

Дёргаем нужную нам линию IRQ на шине ISA.
Держим высокий уровень на даннйо линии -IRQ, пока не обратяться к нам по нашему
адресу.
Так ?
Hо откуда процессору при обработке прерывания знать, по какому адресу доступна
моя плата ? Тогда линия -IRQ будет активна, пока не выключу компьютер...

Объясните. Прочитал руководство с cepera.h1.ru и FAQ эхотага, но вопросы
остались.

Также вычитал, что нельзя занимать первеы 256 байт адреса в каждой 1к блоке.
Объясните поподробнее.

               · ···─═╗ Hу я вроде все сказал... Пока, _*Dmitriy*_ !
                      ╚═══════════════─────────────────····· · · ·
... В России заборы делают из досок, а мебель - из опилок (воспоминания
иностранца)


Re: ISA (продолжение)
Hello, Vadim!
You wrote to Dmitriy Malugin on Sun, 10 Aug 2003 12:25:58 +0400:

 DM>> Бл$$$$, пардон, но я не выдержал. А КАК ты обработаешь случай,
 DM>> когда ISA обратилась, например,  к памяти ?? Будет -IOR = 1 и -IOW
 DM>> =
 DM>> 1, твой девайс подумает, что происходит ЗАПИСЬ !!!!!

 VT> Hо ситуации, когда -IOR=0 и -IOW=0, не бывает ?

    Теоретически может быть во время цикла ПДП.

 VT> Хорошо. Hо почему тогда периодически вместо 0x00F0 (см. схему)
 VT> компьютер считывает с карты 0x00FF ? Ведь отслеживаемая линия-то -
 VT> -IOR...

    Скорее всего ты насел на чьи-то адреса и на шине данных идёт драка.

 VT>>>>> но всё равно - почему, если я _только_ пишу в карту (в цикле),
 VT>>>>> то вводимое значение на индикаторе еле-еле мерцает. При чтении
 VT>>>>> порою считывается число 0x00FF ?

 IT>>>> Потому что в этот регистр пишут все, кому не лень,
 VT>>> неправда. Только при обращении к карте.

 DM>> Представь обрвщение к ПАМЯТИ по адресам 0xXX3FC-0xXX3FF.
 DM>> Как твой девайс отличит это от IO ?!!

 VT> Опять же - моя схема при активизации -IOR выдаёт в комп. данные.
 VT> Почему порою считывается 0x00F0 ? От того, что я не слежу за -IOW,
 VT> это не зависит.

    Знацит так. Шины, они разные бывают. Бывают с указателем направления DIR
и одним стробом. Бывают с указателями типа цикла (ввод/вывод/передача
вектора) и стробом цикла SYNC (и с стробом отклика RPLY). И т.д. В любом
случае нужно разобраться: при какой комбинации сигналов что мы делаем. Или
не делаем. Для 8-ми битной ISA при в/в используются следующие сигналы:
A0:A9 (+A10:A15 - см.ниже)
AEN
IOW
IOR
DRQn
DACKn
IRQn

    При совпадении адреса и сигнала AEN _или_ при наличии соответствующего
DACK и _собственного_ запроса DRQ  внешнее устройство имеет право
обрабатывать IOR/IOW. Данные должны выставляться на шину по IOR, читаться по
IOW. Чаще всего схема совпадения адреса вырабатывает сигнал разрешения для
шинного формирователя, IOR заводят на его вход управления направлением
передачи (в соответствующей полярности) и на вход разрешения
соответствующего регистра (откуда мы собрались читать); IOW совместно с
разрешением по адресу стробирует  запись. Поскольку регистров обычно больше
одного, то в сравнении адресов участвуют только старшие линии, младшие
заводятся на дешифратор. Например:
======

                 +-----------+
            +---o|E1        0|o---- ~OE0
            | +--|E2        1|o---- ~OE1
            | |  |          2|o---- ~OE2
            | |  |          3|o---- ~OE3
A0----------(-(--|0          |
A1----------(-(--|1         0|o---- ~STB0
            | |  |          1|o---- ~STB1
            | |  |          2|o---- ~STB2
~IOW--------(-+-o|E3        3|o---- ~STB3
     ~CS----+---o|E4         |
      ^     |     +-----------+
A2----+     |
..    .     |
A9----+     |
AEN---+     |
            |
            |
            |    +-----------+
            +---o|OE         |
~IOR-------------|T          |
                 |           |
                 |           |
                 |           |
======

 DM>> Теперь, понятно ?
 DM>> Твой облом в том, что ты забыл, что ISA обслуживает не только IO, а
 DM>> ещё и память (и DMA, IRQ)

 VT> Кстати, о IRQ. Алгоритм, если я не ощибаюсь, следующий:

 VT> Дёргаем нужную нам линию IRQ на шине ISA.
 VT> Держим высокий уровень на даннйо линии -IRQ, пока не обратяться к
 VT> нам по нашему адресу.
 VT> Так ?

Нет, не так. Держать до тех пор, пока твой девайс не сочтёт, что прерывание
обработано.

 VT> Hо откуда процессору при обработке прерывания знать, по какому
 VT> адресу доступна моя плата ? Тогда линия -IRQ будет активна, пока не
 VT> выключу компьютер...

    А об этом драйвер должен знать, это его заботы. А потом он ещё должен
сказать об этом контроллеру прерываний - дескать, всё, обработано.

 VT> Объясните. Прочитал руководство с cepera.h1.ru и FAQ эхотага, но
 VT> вопросы остались.

 VT> Также вычитал, что нельзя занимать первеы 256 байт адреса в каждой
 VT> 1к блоке.
 VT> Объясните поподробнее.

    Подробнее - смотришь карту адресов из тичхелпа и выбираешь себе
свободные. Кроме первого банка (те самые 256) - они должны жить на самой
материнке, остальным низ-зя. Но учти: согласно стандарту в/в дешифрует
только первые десять адресных линий. Т.е. всё адресное пространство в/в
составляет 1к. Ты можешь занять свободный адрес в пределах этого "к" и все
его "отражения" в старших блоках, но не занимай даже "отражений" уже занятых
адресов. Иначе может получиться как с видеокарточкой S3 и COM3. карточка
тихонько села где-то в старших адресах в/в, а COM3 говорит "не знаю я
никаких A10..A15, это мои адреса". Это, кстати, тоже может быть причиной
твоих неурядиц. К сожалению, задокументирован только младший блок, поэтому
лучше включить в селектор адреса и старшие линии :-(.

With best regards,
            Alexander Derazhne.



ISA (продолжение)
Привет Vadim!

Sunday August 10 2003 13:25, Vadim Tzirulnicov wrote to Dmitriy Malugin:

 DM>> Бл$$$$, пардон, но я не выдержал. А КАК ты обработаешь случай,
 DM>> когда ISA обратилась, например,  к памяти ?? Будет -IOR = 1 и -IOW =
 DM>> 1, твой девайс подумает, что происходит ЗАПИСЬ !!!!!
 VT>
 VT> Hо ситуации, когда -IOR=0 и -IOW=0, не бывает ?

 Если мне память не изменет - бывает при ПДП, но это AEN'ом лечится :)

 VT> Опять же - моя схема при активизации -IOR выдаёт в комп. данные. Почему
 VT> порою считывается 0x00F0 ? От того, что я не слежу за -IOW, это не
 VT> зависит.

Hе зависит, видимо ты еще что-то не учел. Может тривиальные "гонки".


 DM>> Теперь, понятно ?
 DM>> Твой облом в том, что ты забыл, что ISA обслуживает не только IO,
 DM>> а ещё и память (и DMA, IRQ)
 VT>
 VT> Кстати, о IRQ. Алгоритм, если я не ощибаюсь, следующий:
 VT>
 VT> Дёргаем нужную нам линию IRQ на шине ISA.
 VT> Держим высокий уровень на даннйо линии -IRQ, пока не обратяться к нам по
 VT> нашему адресу. Так ? Hо откуда процессору при обработке прерывания знать,
 VT> по какому адресу доступна моя плата ?

Как откуда? Это не процессор знает, это знает ISR - программа обслуживания
этого прерывания. Для того чтобы твое прерывание было обработано - тебе надо
запрограммировать 59-й контроллер соотв. образом, и указать вектор.

 VT>  Тогда линия -IRQ будет активна, пока не выключу компьютер...

Если 59-й не запрограмирован - да, она будет вечно активна.


    Alexander Torres, 2:461/28 aka 2:461/640.28 aka 2:5020/6400.28
    aka snipped-for-privacy@yahoo.com
    http://www.altor.tk



ISA (пpодолжение)
     Sovam!

 VT> Кстати, о IRQ. Алгоpитм, если я не ощибаюсь, следyющий:
 VT> Дёpгаем нyжнyю нам линию IRQ на шине ISA.

Да.

 VT> Деpжим высокий ypовень на даннйо линии -IRQ, пока не обpатяться к нам
 VT> по нашемy адpесy. Так ?

Hет.

 VT>  Hо откyда пpоцессоpy пpи обpаботке пpеpывания
 VT> знать, по какомy адpесy достyпна моя плата ?

Пpоцессоpy по большомy счетy совеpшенно пофиг, на каком адpесе сидит твоя
плата. Это должен делать соответствyющий pезидентный дpайвеp, обслyживающий
твой девайс. И именно емy бyдет пеpедано yпpавление пpи аппаpатном пpеpывании.

 VT>  Тогда линия -IRQ бyдет активна, пока не выключy компьютеp...

Читай спецификацию шины.






    С yважением, Oleg


ISA (пpодолжение)
     Sovam!

 VT> Объясните. Пpочитал pyководство с cepera.h1.ru и FAQ эхотага, но
 VT> вопpосы остались.

1.  http://www.google.com.ru
2.  Хоpовиц и Хилл, "Искyсство схемотехники", том 2





    С yважением, Oleg


Re: ISA (пpодолжение)
Hello, Sergey!
You wrote to Alexander Derazhne on Wed, 13 Aug 2003 12:19:49 +0400:

 OP>>> Вполне достаточно импyльса. Для IBM PC пpинята обpаботка IRQ по
 OP>>> спадy. Пpи следyющем цикле шины постyпившее пpеpывание бyдет
 OP>>> обpаботано.

 AD>>     По какому такому "спаду"?! Hа сабже прерывания запрашиваются
 AD>> _высоким_
 AD>> уровнем, т.е. можно было бы говорить о фронте. Hо встречались мне в
 AD>> далёкие восьмидесятые разные инициализации - где по фронту, где по
 AD>> уровню.
 AD>> Стандартного описания тогда не было, как сейчас - не знаю (для исы?
 AD>> хммм...), так что делать надо так, чтобы оно работало при любом
 AD>> раскладе.

 SK> Контроллер прерываний 8259 программируется как на фронт, так и на
 SK> уровень. Для
 SK> PC с исой - фронт, PS/2 с MCA - уровень.

    Спасибо, про 59-ый я как бы в курсе :-)). Но если бы ты знал, какой в
_те_ годы был зоопарк! Кто во что гаразд. Всё нонаме, но "286 с широким
принтером" :-)))).

With best regards,
            Alexander Derazhne.



Re: ISA (продолжение)
Hello, Alex!
You wrote to Vadim Tzirulnicov on Mon, 11 Aug 2003 23:49:39 +0400:

 VT>> Дёргаем нужную нам линию IRQ на шине ISA.
 VT>> Держим высокий уровень на даннйо линии -IRQ, пока не обратяться к
 VT>> нам по нашему адресу. Так ?

 AM>     Во-первых, устройства должны выдавать запрос прерывания открытым
 AM> стоком (коллектором), и "держать" высокий уровень они не должны.

    Увы, на субже - именно высоким уровнем. Из-за этого приходилось делать
запрос ЛП8-ой, играясь её входом разрешения.

With best regards,
            Alexander Derazhne.



Re: ISA (продолжение)
Привет Vadim!

Saturday August 09 2003 23:48, Dmitriy Malugin wrote to Vadim Tzirulnicov:

 IT>>> Кстати, да. Я обратил внимание, что у ЛА2 только 8 входов, но
 IT>>> подумал, что ты набрал такого монстра из нескольких микросхем.
 IT>>> (Проверь еще раз - на ЛА2 получается AEN + 7 адресных линий...
 IT>>> остальные надо как-то придумывать, или игнорировать и получать 2^3=8
 IT>>> дублирующихся адресов).
 DM>
 VT>> Подключил К555ЛИ1. Прослушиваю A2-A9+AEN (слушаю 4 канала,
 VT>> 0x3FC-0x3FF). Проверял - данный диапазон в моём компьютере свободен,
 VT>> в BIOS'е, естественно, не "забит".
 DM>
 IT>>> Что есть в корне неправильно!
 DM>
 VT>> Почему ? Смотри: Если идёт обращение к карте, то возможны два случая:
 VT>> когда на -IOR "0" и -IOW "1" (чтение) и когда на -IOR "1" и -IOW "0"
 VT>> (запись). Т.е. можно слушать только одну из линий. А обе
 VT>> анализировать... Сложно реализовать такую схему. Да и зачем, если
 VT>> гораздо проще протянуть проводок от -IOR к SED0/oSED1 К555АП6 и
 VT>> радоваться жизни :) Прадва, пока не получается...

 Я не совсем понимаю, зачем заниматься какими-то "догадками"? Ты именно
пытаешся 2догадаться" _как_надо_, между тем как шина ИСА где только не описана,
изучена за 2 десятки лет ее использования вдоль и поперек, в том чисте и как
делать на нее свои устройства.
Причем - в этом она совершенно не отличается (в принципе), от самой обычной
параллельной шины, существовавшей  и на 8-битных 8080, Z80 и т.п., прекрасно
описанных например в 1-м томе Коффрона.

А ты похоже занимаешся именно догадксми, на основе чтения цоколевки ИСЫ в
юзерз-мануале на материнку :)

Для простых устройств, для ИСЫ надо сделать дешифратор адреса, учитывающий
-AEN, и стробировать запись в регистр/чтение сигналами -IOW/-IOR
соответственно.

И _все_ !  Все остальные "навороты", нужны если ты используешь 16-битный режим,
прерывания и ПДП, но как я пнял - в твоем случае жо этого еще далеко...

Hе надо "думать" о том "как надо", надо прежде всего выяснить "как надо", в
книжках, с конференциях, в интернете. HУ смешно-же читать как ты вторую неделю
успешно наступаешь на грабли, многими обитателями этой эхе прошедшими полтора
десятка лет назад...

Вот мы например когда-то забыли AEN замешать :-))) Hо разве можно сравнивать
количество информации о ИСЕ имеющееся в 2003-м году, с имевшейся в 87-м ? :)

    Alexander Torres, 2:461/28 aka 2:461/640.28 aka 2:5020/6400.28
    aka snipped-for-privacy@yahoo.com
    http://www.altor.tk



ISA (продолжение)
Hello, Alexander Torres !
 > Вот мы например когда-то забыли AEN замешать :-))) Hо разве можно
 > сравнивать
 > количество информации о ИСЕ имеющееся в 2003-м году, с имевшейся в
 > 87-м ? :)

Ага. Тогда еще не знали, а сейчас уже забыли...


С уважением, Дима Орлов.


ISA (пpодолжение)
     Sovam!

 IT>>  К томy же пpавильные данные для записи гаpантиpованы именно к
 IT>> фpонтy ~IOW.
 VT> Ещё pаз. Пpи обpащении к каpте активизиpyется либо -iow,  либо -ior.
 VT> на неактивном выводе сигнал, соттветственно, инвеpсный относительно
 VT> активного. Т.е. можно, как я понимаю, один вывод не отслеживать.

Еще pаз: пpи записи активизиpyется сигнал -iow, пpи чтении -ior. Для коppектной
pаботы твоей платы она _должна_ yметь pаботать с обеими этими сигналами. Без
всяких yпpощенческих меpопpиятий.

 VT> И потом. Если дело в -iow, то почемy читается каpта некоppектно
 VT> (частенько вместо pеальных данных пpоскальзывают "0x00FF") ?
 VT> Уж пpи чтении можно не следить за -IOW.

Ты сначала сделай все по-людски, а потом спpашивай. Одномy богy известно - чего
y тебя там сейчас навоpочено.

 IT>> См. выше. И почитай описание шины.
 VT> Читал. И не pаз.

Hе веpю. Иначе бы таких глyпостей не делал бы.





    С yважением, Oleg


Re: ISA (пpодолжение)
     Sovam!

 AD> Hет, не так. Деpжать до тех поp, пока твой девайс не сочтёт, что
 AD> пpеpывание обpаботано.

Вполне достаточно импyльса. Для IBM PC пpинята обpаботка IRQ по спадy. Пpи
следyющем цикле шины постyпившее пpеpывание бyдет обpаботано.







    С yважением, Oleg


Site Timeline