Главная > Схемотехника > Искусство схемотехники, Т.3
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

11.04. Сигналы магистрали

Если вы усвоили взаимодействие сигналов на магистрали IBM PC, то разобраться с сигналами МП 68008 не составит труда - они схожи. Мы описали их в табл. 11.4 (имеющей тот же формат, что и табл. 10.1) и на рис. 11.3. Лучше всего воспользоваться уже испытанной последовательностью изучения и рассмотреть сначала программно-управляемую передачу данных («программно-управляемый ), затем прерывания и, наконец, ПДП. Это не займет много времени.

Программно-управляемая передача данных.

Программно-управляемая передача данных показана на рис. 11.4; мы также изобразили сигналы (CLK и AS), которые в процессе проектирования схемы обычно можно игнорировать. В МП 68008 используется один сигнал, стробирующий данные (DS), а также линия направления чтения-записи в отличие от IBM PC, где предусмотрены два стробирующих сигнала (IOR, IOW). В цикле записи ЦП переводит сигнал в низкое состояние, устанавливает адрес и данные и, выждав некоторое время, переводит в низкое состояние сигнал DS. Приемник (память или устройство ввода-вывода) фиксирует данные, которые (в отличие от IBM PC) гарантированно установлены еще перед фронтом сигнала DS, и подтверждает прием, устанавливая в низкое состояние сигнал DTACK. ЦП завершает цикл, снимая сигнал DS и затем (выждав некоторое время на случай использования приемником Прозрачных фиксаторов) снимает адрес и данные. Таким образом, достоверность данных гарантируется в течение DS плюс короткие интервалы до и после сигнала. Цикл чтения отличается лишь тем, что ЦП поддерживает линию в высоком состоянии (указывая тем самым, что выполняется чтение) и, к тому же, устанавливает сигнал DS на один такт раньше, чтобы дать возможность источнику данных отозваться на требовав ние данных. Данные должны быть установлены до окончания сигнала DS; детали взаимодействия показаны на рис. 11.4.

Таблица 11.4. Сигналы магистрали МП 68008

Действие сигнала DTACK требует дальнейшего обсуждения. Шина МП 68008 является асинхронной (см. разд. 10.14): установив сигнал DS, ЦП, перед тем, как завершить цикл, ожидает от адресуемого устройства сигнала подтверждения

DTACK (через проводное ИЛИ).

Рис. 11.3. Сигналы МП 68008.

Рис. 11.4. Циклы чтения/записи МП 68008 (8 МГц, без состояний ожидания).

Если сигнал DTACK поступает перед концом такта , состояния ожидания не включаются в протокол, и последовательность сигналов выглядит точно так, как показано на рис. 11.4; если же DTACK задерживается, ЦП удерживает все свои выходные сигналы в стабильном состоянии (включая в протокол магистрали после такта «состояния ожидания») до появления сигнала DTACK, после чего завершает цикл тактами . Состояния ожидания требуются только при работе с очень медленными устройствами, поэтому адресуемое устройство должно устанавливать сигнал DTACK сразу же после распознания им на шине своего адреса (устройство может установить DTACK по результатам декодирования адреса или образовав логическое И из сигнала декодирования и полученного им из ЦП сигнала AS, который указывает на достоверность адреса). Вообще говоря, если все устройства, подключенные к шине, являются быстрыми, вы можете, с известной долей риска, постоянно удерживать линию DTACK в низком состоянии и полностью избавиться от состояний ожидания; эта методика отразилась в названии журнала, посвященного высокопроизводительным приложениям семейства МП 68000: «DTACK заземлен».

Все это выглядит несколько запутанно, но в действительности сопряжение с МП 68008 выполняется очень просто. На рис. 11.5 изображен простейший порт ввода-вывода. Адресные сигналы декодируются и после поступления сигналов DS и образуют сигналы, используемые для стробирования -триггеров выходного регистра (для записи) и разрешения три - стабильных выводов входного регистра (для чтения). Сигнал DTACK устанавливается сразу после расшифровки адреса (если адресуется данный порт), поскольку для столь быстрых устройств, какими являются -разрядные регистры, состояния ожидания не требуются; мы использовали обычный прием преобразования драйвера с тремя состояниями в драйвер с открытым коллектором. Заметьте, что для стробирования -триггеров мы использовали срез сигнала DS; это сделано из-за того, что фронт сигнала DS может отстоять от момента установки достоверных данных всего лишь на 35 нс (см. рис. 11.4), что опасно близко к времени упреждения многих 8-разрядных регистров (например, семейства LS и НСТ имеют минимальное время упреждения 20 нс).

Так, если на шине данных используются шинные буферы (например, -разрядные двунаправленные буферы 245), то дополнительная задержка данных относительно сигнала DS может привести к тому, что триггеры схемы 574 не успеют установиться. Используя срез сигнала, мы выигрываем дополнительные для увеличения времени упреждения. (При желании можно было использовать прозрачные фиксаторы, например 573, которые фиксируют данные по срезу сигналы фиксации; для таких фиксаторов характерное минимальное значение времени упреждения, как и времени удержания, составляет около )

Варианты схем, приведенные на рис. 11.5, учитывают практические детали. Оказывается, в большинстве логических семейств отсутствуют -входовые вентили ИЛИ! Одним из возможных решений является использование -входовых вентилей, как показано на рис. 11.5. Более современный способ - поместить всю вентильную логику в комбинационную ПЛМ; помимо уменьшения числа микросхем, это дает вам возможность, используя высокую плотность вентилей в ПЛМ, генерировать с помощью одной микросхемы стробирующие и разрешающие сигналы для дополнительных периферийных портов.

Рис. 11.5. Параллельный порт ввода-вывода, а - базовая схема; б - схема с реально существующими вентилями; в - реализация на основе ПЛМ.

Одна незначительная деталь приведенного примера предвосхитила материал следующего раздела. В процессе обработки прерывания (см. ниже) МП 68008 выполняет цикл подтверждения прерывания, выглядящий, как цикл чтения самого верха памяти (линии установлены в 1).

Рис. 11.6. Цикл подтверждения прерывания.

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

Прерывания.

В МП 68008 реализуются и автовекторизуемые, и полностью векторизуемые (с подтверждением) прерывания (если вы забыли, что это такое, см. разд. 10.11), для чего используется вторая группа сигналов шины из табл. 11.4. В обоих случаях вы запрашиваете прерывание, устанавливая на двух линиях приоритетного запроса (IPL) некоторую комбинацию низких уровней. Две линии определяют три уровня перерываний (четвертое состояние - на обеих линиях высокий потенциал - соответствует отсутствию прерывания). Эти линии схожи с линиями IRQ магистрали IBM PC, но поскольку они чувствительны к уровню, к каждому уровню прерываний можно подключить несколько прерывающих устройств, (Полезно заметить, что МП 68000, а также некоторые варианты МП 68008 имеют 3 линии IPL, что позволяет определить 7 уровней прерываний.)

ЦП, обнаружив запрос прерывания (по крайней мере одна линия в низком состоянии), выполняет цикл подтверждения (рис. 116), в течение которого идентифицируется источник прерываний. ЦП устанавливает на линиях значение уровня прерывания, а на линиях высокий уровень; все линии функционального кода устанавливаются в высокое состояние. Затем ЦП выполняет цикл чтения (устанавливая сигнал в высокое состояние). Теперь ваши внешние цепи определяют вид цикла подтверждения: автовекторизуемое (переход в соответствии с уровнем IPL) или с подтверждением (переход в соответствии с вектором, установленным прерывающим устройством на линиях ).

Более просто реализуется автовекторизуемое прерывание (рис. 11.7). Внешняя цепь обнаруживает цикл подтверждения по сигналам и одновременно с AS устанавливает входной сигнал VPA. После этого ЦП осуществляет переход на программу обслуживания, соответствующую уровню IPL прерывания. Для перехода используются векторы (т. е. -разрядные адреса программ обслуживания), расположенные по абсолютным адресам $68, $74 или $7С.

Рис. 11.7. Автовекторизуемое прерывание.

Если число прерывающих устройств не превышает трех, автовекторизация весьма удобна. Собственно говоря, устройств может быть и больше, но вам придется опрашивать регистры состояния всех «подозрительных» устройств (т.е. устройств, подключенных к обслуживаемому уровню прерываний), чтобы найти виновника. И лишь в случае, когда у вам много потенциальных источников прерываний (маловероятная ситуация в небольшом устройстве на базе МП 68008), и к тому же требуется обеспечить минимальные временные задержки, целесообразно обратиться к схеме прерываний с подтверждением.

Полностью векторизируемые прерывания реализуются следующим образом. Прежде всего оставьте сигнал VPA на входе ЦП в сброшенном состоянии (высокий уровень). Организуйте схему таким образом, чтобы каждое устройство, работающее в режиме прерываний, выставляло бы свой вектор на линии данных в ответ на цикл чтения ЦП, выполняемый при установленных в высокое состояние сигналах и при уровне IPL (считываемом с линией ), совпадающем с уровнем запроса устройства. При этом схема должна обеспечить выдачу вектора только одним прерывающим устройством, даже если несколько устройств одновременно выставили запросы на прерывание. Этого можно добиться, используя сигнал приоритета прерывания INPT, проходящий последовательно через все устройства, образующие, таким образом, приоритетную цепочку, как это было описано в разд. 10.11; тем самым гарантируется, что подтверждение прерывания выполняется только устройством (соответствующего уровня IPL), которое электрически расположено ближе других к ЦП, даже если запросы на прерывание поступают от нескольких устройств одного уровня .

Другой, более элегантный метод показан на рис. 11.8. Здесь нет необходимости использовать неуклюжую цепочечную структуру, которая заменяется линиями запроса от каждого устройства. Состояния этих линий фиксируются в начале каждого цикла магистрали (фронтом сигнала AS) и поступают в дешифратор приоритета (который генерирует двоичный адрес возбужденного входа с максимальным номером, см. разд. 8.14). Кроме этого, дешифратор генерирует выходной сигнал (GS), если возбуждается любой из входов; этот сигнал используется для инициации прерывания ЦП. Для простоты мы поместили прерывания от всех устройств на один уровень IPL. ЦП отзывается на прерывание, сохраняя в стеке адрес возврата, после чего инициирует цикл подтверждения (рис. 11.6). В течение цикла подтверждения наша схема устанавливает вектор (образованный в схеме приоритетного отбора), а также сигнал DTACK.

Рис. 11.8. Полновекторизованное прерывание.

После этого ЦП выполняет векторный переход на соответствующий обработчик.

Рассмотренная схема проста в реализации, и для семейства МП 68000 она работает быстрее, чем схема автовекторизации. Далее, относительно просто достигается увеличение числа прерывающих устройств степенями 8 при использовании дополнительных микросхем . От каждого периферийного устройства требуется выделенная линия (не одна линия шины); хотя при этом нарушается симметрия шины данных, такой способ предпочтительнее приоритетной цепочки, которая совершенно перестает работать, если забыть надеть перемычки на неиспользуемые разъемы. Фактически в новых компьютерных магистралях (например, магистраль машины Macintosh II) все чаще используются линии прерываний, разведенные по разъемам.

Отметим любопытную (и немаловажную) деталь в приведенной схеме. Вам может показаться странным, что индивидуальные запросы прерываний, генерируемые в устройствах с помощью фиксируемых бит (см., например, рис. 10.12), повторно фиксируются в схеме 574. Причина этого носит тонкий характер. Прерывающие устройства, как правило, являются асинхронными по отношению к тактовым сигналам ЦП, и могут генерировать прерывания в любое время. Если второе периферийное устройство пошлет запрос прерывания в тот момент, когда ЦП считывает вектор первого прерывающего устройства, а фиксаторы в схеме обработки прерываний отсутствуют, установленный на шине вектор изменится «на полдороги» (в течение цикла подтверждения прерывания и получения вектора), что приведет к непредсказуемым результатам. Вы можете возразить, что такая ситуация маловероятна, и будете правы; однако она может возникнуть и вы даже можете оценить вероятность ее появления. Откладывая момент принятия решения о «намерении прервать» на начало каждого цикла шины, мы устраняем отмеченную проблему (вообще говоря, из-за явления «метастабильности» незначительная вероятность ошибки остается; если вам не хватает поводов для беспокойства, см. разд. 8.17).

Упражнение 11.4. Пусть мы рискнули отказаться от фиксирующего регистра в установке, содержащей два асинхронных устройства, посылающих сигналы прерываний со скоростью 1000 прерываний в секунду каждое. Предположим, что цикл получения вектора имеет критическое временное окно в 1 не, в течение которого смена установленного вектора приведет к чтению неправильного вектора (т.е. ЦП прочитает номер вектора, отличный от обоих установленных векторов). Оцените, сколь часто ЦП, осуществляя векторный переход, будет попадать пальцем в небо (с аварией системы).

Еще одно замечание по поводу нашей схемы. В процессорах серии 68000 предусмотрена команда HALT, которая прекращает все процессы на шине, но не исключает повторного пуска системы с помощью прерывания (а также, естественно, полной перезагрузки). К сожалению, наша схема не предусматривает повторный пуск по прерыванию (почему?).

Таким образом, вы должны либо обойтись без команды HALT, либо использовать какой-то другой сигнал (возможно, производный от сигнала CLK) для фиксации запросов прерываний.

В МП 68000 предусмотрена возможность установки 192 различающихся векторов прерываний с номерами от до FFH; соответствующие адреса переходов (т.е. адреса соответствующих сервисных программ) хранятся в ячейках памяти .

Прямой доступ к памяти.

В системах на базе МП 68000 прямой доступ не реализуется установленным на плате контроллером ПДП с адресными счетчиками и проч., как это имеет место в системах с магистралью PC. Напротив, МП 68000 полностью освобождает шину, передавая ее новому ведущему; новый ведущий шины (которым может быть как другой МП 68000, так и простенький периферийный интерфейс) может затем выполнять любые действия, включая (но не ограничиваясь ими) классические функции ПДП пересылки данных в память или из нее.

Чтобы сделаться ведущим шины, любое устройство может выдать «Запрос шины», установив на линии BR (через проводное ИЛИ) низкий уровень. ЦП очень серьезно относится к этой процедуре, во мгновение ока устанавливая на линии «шина предоставлена» BG низкий уровень. ЦП также прекращает контролировать состояние всех линий шины (кроме BG), включая адрес, стробы и другие управляющие линии, помеченные индексом в табл. 11.4. Теперь внешнее устройство контролирует шину, и это состояние длится до снятия сигнала BR, после чего ЦП возвращает себе роль ведущего. Внешний ведущий обязан управлять шиной по тем же правилам, которым следует ЦП, чтобы не сбивалась работа остальных устройств, подключенных к шине. Собственно, они даже и не узнают, что произошло что-то необычное, если только не посмотрят на состояние линий BR/BG.

Если ведущими шины пытаются стать несколько устройств, они должны как-то разобраться между собой (выполнить арбитраж). Заметьте, что ЦП контролирует состояние линии BG, тем самым в какой-то мере управляя всем процессом.

Остальные сигналы магистрали.

Ниже дано описание остальных сигналов, перечисленных в табл. 11.4.

CLK. Это вход для сигналов тактового генератора (см. рис. 11.3 и 11.4). Мы рекомендуем использовать какой-либо из недорогих кварцевых генераторов в -корпусе, выпускаемых компаниями CTS, Dale, Motorola, Statec или Vectron. МП 68008 лучше работает с тактовыми сигналами симметричной формы, которые легко получить с помощью триггера, подключенного к выходу генератора. Максимальная допустимая частота обычно указывается в обозначении микропроцессора (и памяти тоже): последние варианты МП 68008 работают до частоты 10 МГц (МС ). Двухбайтовые команды обычно выполняются за четыре периода тактовых импульсов (как на рис. 11.4), однако команды с более сложными способами адресации должны несколько раз обращаться к памяти, что может потребовать до 70 тактов или около того.

BERR. Вы устанавливаете этот входной сигнал, чтобы сообщить ЦП, что произошел сбой в работе шины. Например, если никто не установит сигнал DTACK в ответ на строб данных, ЦП будет ждать его вечно; это может произойти, если программа обращается к несуществующей памяти. Установка сигнала BERR вызывает переход (напоминающий переход при прерывании и называемый «исключением») на программу обработчика. Ниже на рис. 11.10 будет показана простая схемная реализация сигнала BERR.

RESET и HALT. Эти сигнальные линии необычны в этом отношении, что служат и как входы (для сброса или останова процессора), и как выходы (с помощью которых ЦП может инициализировать систему). Взгляните снова на рис. 11.10, где показан простой способ использования этих линий.

Е (разрешение). Может показаться, что этот выходной сигнал имеет большое значение, однако это не так. Сигнал Е (в комбинации с VPA) облегчает подключение к МП 68008 старых периферийных микросхем серии 6800 (разработанных для синхронного относительно медленного 8-разрядного микропроцессора 6800).

В других случаях сигнал Е можно игнорировать.

<< Предыдущий параграф Следующий параграф >>
Оглавление