Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL (2003) (1095892), страница 57
Текст из файла (страница 57)
Расщепленные транзакции Ведомое устройство, для выполнения расщепленной транзакции, выставляет на линии подтверждения навар сигнал эвыт. После получения такого кода состояния арбитр должен заблокировать сигнал запроса шины ведущего устройства, которому оно предназначалось, до тех пор, пока ведомое устройство не выставит сигнал готовности завершить расщепленную транзакцию на соответствующий разряд сигнала нзвыт. Как правило, для этих целей арбитр содержит специальный регистр маски, каждый бит которого соответствует одному ведущему устройству. При возникновении этой ситуации арбитр определяет ведущее устройство, которому будет предоставлена шина для следующего запроса.
Это может быть любое ведущее устройство, для которого в настоящий момент нет расщепленных транзакций. Поведение ведущего устройства в ходе обмена Если ведущему устройству необходимо использовать шину, оно выставляет сигнал запроса шины нвцвавзк. Этот сигнал выставляется асинхронно и может быть выставлен в любой момент времени. Если должен быть выполнен обмен с блокировкой, то одновременно с нвцзавак должен быть выставлен сигнал ньоскх. После того как ведущее устройство получает сигнал наахптк, прежде чем начать фазу адреса, оно должно дождаться установки сигнала навхпт в 'Г, что указывает на завершение последней фазы адреса предыдущего запроса. После этого начинается первая фаза адреса нового обмена. Поскольку выходы ведущих устройств подключаются на шину через мультиплексор, управляемый арбитром, ведущее устройство может выставлять адрес и соответствующие ему сигналы управления одновременно с сигналом запроса шины нвцвавои.
Первая фаза адреса продолжается до тех пор, пока не будет завершена последняя фаза данных предыдущего запроса, т. е. до тех пор, пока сигнал нккхпт в очередной раз не будет установлен в Е Затем начинается первый обмен данными нового запроса. Теперь веду- зов Глава 5 шее устройство может сбросить сигнап запроса шины ивняках, если оно выполняет обмен одиночным словом данных или пакетный обмен фиксированной длины, т. е. нвпкзтатквк. В противном случае сигнал нвцэквох должен оставаться активным до начала последней фазы обмена данными. Если ведущее устройство намерено выполнить еще один запрос после того, который выполняется в данный момент, оно должно вновь выставить сигнал запроса шины ивняках в течение выполнения текущего запроса.
Рассмотрим, как выполняется один обмен данными в ходе выполнения запроса. Адрес и управляющие сигналы для этого обмена были выставлены ведущим устройством и защелкнуты ведомым в предыдущем такте (т. е. в последнем такте предыдущего обмена данными). В первом такте текущего обмена данными ведущее устройство выставляет адрес и управляющие сигналы для следующего обмена данными, если текущий обмен данными не последний в этом запросе. Если в ходе текущего обмена должна быть выполнена запись данных в ведомое устройство, ведущее устройство выставляет данные. Далее, по восходящему фронту тактового импульса, ведущее устройство анализирует значение сигналов нкввк и нквхпх от ведомого устройства. Если нквзк=окхх и нквхпх='1 — текущий обмен считается успешно завершенным. Если это была запись данных в ведомое устройство, то данные успешно записаны; если это было чтение данных из ведомоге устройства, то оно выставило действительные данные на шину, и по рассматриваемому переднему фронту тактового импульса они могут быть записаны ведущим устройством.
Если нккэк=окхт и нквхпх= ' о ', — значит, ведомое устройство запрашивает дополнительные такты для завершения текущего обмена данными. В этом случае ведущее устройство должно оставить все выставленные им сигналы без изменений. Если нквэк=вккок, то ведущее устройство должно выполнить свой алгоритм обработки ошибки. При возникновении такой ситуации, в зависимости от используемой в системе схемы арбитража, арбитр может предоставить шину другому ведущему устройству, но может и оставить шину за прежним устройством, если оно продолжает выставлять сигнал запроса шины.
При нквзк=экьтт или нквзк=ккткт ведущее устройство должно выполнять одинаковую последовательность действий, оно должно продолжать требовать шину до тех пор, пока обмен не будет завершен нормально (с подтверждением оклх) или с ошибкой (с подтверждением кккок). После того как это ведущее устройство вновь получит шину, оно должно продолжить выполнение запроса с того места, на котором был прерван. Должна быть повторена фаза адреса для того обмена данными, выполнение которого в предыдущий раз закончилось подтверждением зкыт или катку. Однако значения управляющих сигналов при повторении могут быть иными. Проиллюстрируем это следующим примером.
Пусть запрос фиксированной 309 г)тактика применения МНШ влины из 8 слов был прерван при передаче четвертого слова (полностью обработаны передачи трех слов). В этом случае, когда ведущее устройство вновь получит шину, оно может выполнить или пакетную передачу неопрепеленной длины из пяти слов или пакетную передачу неопределенной длины из одного слова, и затем — пакетную передачу фиксированной длины из четырех слов.
В любом из этих вариантов, значение нвпавт будет отличаться от выставленного ведущим устройством первоначально. Протокол шины АНВ позволяет каждому ведущему устройству иметь по одной незаконченной транзакции. Если физическое устройство, работающее ввк ведущее на АНВ, может иметь большее количество незаконченных транвакций, то такое устройство должно иметь соответствующее количество интерфейсов ведущего устройства на шине (одно физическое устройство может иметь несколько интерфейсов). рассмотрим теперь, как ведущее устройство использует сигнал нталнз. Если ведущее устройство получило шину как ведущее устройство по умолчанию, но ему не нужно ее использовать, то нтвлнэ=гпьв. Это указывает ведомому устройству, что ему не нужно выполнять каких-либо действий.
Поэтому, осли ведущее устройство не выполняет запрос на шине и не запрашивает ее, то оно должно на нталнэ выставлять гпьв; при этом неважно, какие сигнавы будут присутствовать на остальных линиях. Если ведущему устройству необходимо вставить пустые такты в ходе выполнения запроса (например, в результате того, что оно не успевает подготовить ванные для пересылки), то оно выставляет нтапнэ=виэх.
При этом на линии впреса и на остальные линии управления ведущее устройство должно выставвять адрес и сигналы управления, соответствующие следующему обмену. Коды сигналов нтнпнэ позволяют также ведущему устройству указать ведомому, является ли текущий обмен первым (нталнз=нонввп) или он является очередным в пакете (нталнз=ввп), т. е. его адрес связан с адресом предыдущего обмена, а сигналы управления полностью совпадают. Это может быть полезным для таких ведомых устройств, как памяти. Если ведущее устройство выполняло запрос с блокировкой, рекомендуется (зто не обязательное требование), чтобы ведущее устройство после обмена ванными с блокировкой вставляло один обмен с типом тпьв.
Это необхоппмо для того, чтобы, если ведомое устройство при выполнении последнего обмена выставило подтверждение, отличное от окат, ведущее устройство не потеряло бы право на использование шины, что в данном случае может привести к прерыванию выполнения запроса с блокировкой. Поведение ведомого устройства в ходе обмена Если ведомое устройство получило от арбитра сигнал навьи, значит, оно выбрано для участия в следующем обмене данными. В этом случае ведомое Глава 5 устройство должно защелкнуть адрес и сигналы управления при наелпт=ь После этого оно должно начать обработку первого слова данных запроса— выполнение первого обмена данными. Ведомое устройство может завершить обмен одним из следующих способов: О завершить обмен немедленно — в первом же такте обмена; О вставить одно или несколько состояний ожидания для получения дополнительного времени для завершения запроса; О инициировать выполнение повторения или расщепления транзакции дяя того, чтобы освободить шину для других обменов; О завершить обмен с ошибкой.
Если ведомое устройство готово завершить обмен немедленно, оно устанавливает неелпт='1' и нееяв=окат. Если выполняется операция записи, это означает, что ведомое устройство записало данные. Если выполняется опярация чтения, это означает, что оно выставило действительные данные ня шину. Если ведомому устройству необходимо вставить один или несколько тактоя ожидания, то в этих тактах оно выставляет наелпт='о и нееяР=окат. Разработчикам необходимо учитывать, что все такты, когда нкелпт= ' ю ' я нееяР=оклт, шина АНВ простаивает.
Поэтому рекомендуется, чтобы ведомое устройство не вставляло более 16-ти тактов ожидания подряд. Как уже отмечалось ранее, выставление подтверждения, отличного от оккс, должно выполняться в течение двух тактов. Поэтому, если ведомое устройство требует выполнения повторения или расщепления транзакции или сообщает о завершении запроса с ошибкой, оно в первом такте выставляят нвелпу='0' и нееяР=ветку, нееяР=БРьгт или нееяР=еееоа соответственно. Во втором такте оно выставляет неелпт='1', а нееяР остается без изменений.