Набор унифицированных протоколов для организации синхронного взаимодействия функциональных узлов и блоков цифровой аппаратуры. Часть 1
В большинстве интерфейсов современных цифровых устройств используются протоколы обмена данными, основанные на минимальных неделимых порциях информации, состоящих из фиксированного числа битов. Рассмотрим несколько примеров.
Минимальным адресуемым объемом данных микропроцессоров архитектуры x86, начиная с 16‑разрядных моделей 8086 и 80286, является 1 байт [1, 2]. В связи с этим на системных шинах большинства компьютеров предусмотрен обмен блоками данных, кратными 8 бит.
Поле Length/type заголовка кадра сетевого протокола Ethernet [3] определяет длину поля данных в байтах (октетах).
Обмен по асинхронным последовательным интерфейсам UART использует посылки длиной 5–8 бит. Однако программная модель контроллера UART типа 16C450/550 имеет тракт данных шириной 1 байт, при этом для приема и передачи 5-, 6‑ и 7‑разрядных посылок используются биты, начиная с младшего [4, 5].
Протокол шины AMBA APB4, описанный в [6], основан на принципе передачи инициатором исполнителю двоичной комбинации из 71 бит, содержащей: 32 бит адреса PADDR[31:0], 3 бит уровня доступа PPROT[2:0], бит — признак записи PWRITE, 32 бит данных для записи PWDATA[31:0] (принимают недействительные значения в циклах чтения) и 4 бит разрешения байтов при записи PSTRB[3:0]. Транзакция на шине AMBA APB4 завершается приемом инициатором от исполнителя 33‑разрядной двоичной комбинации, содержащей 32 бит данных чтения PRDATA[31:0] (принимают недействительные значения в циклах записи) и флаг ошибки исполнителя PSLVERR.
Системный интерфейс AMBA AXI, описанный в [7], основан на пяти односторонних топологически эквивалентных каналах, использующих посылки фиксированного формата и разрядности, передаваемые по параллельным шинам соответствующей ширины:
- канал адреса записи— Write Address Channel;
- канал данных записи— Write Data Channel;
- канал ответа записи— Write Response Channel;
- канал адреса чтения— Read Address Channel;
- канал данных чтения— Read Data Channel.
Интерфейс стыка простого исполнителя STI, рассмотренный в статье [8], при взаимодействии инициатора с исполнителем предусматривает одновременный обмен двумя посылками. Первая посылка формируется инициатором и содержит адрес S_ADDR, разрешение байтов S_NBE, код команды S_CMD и данные для записи S_D_WR. Вторая посылка формируется исполнителем и переносит данные S_D_RD в циклах чтения либо произвольные комбинации в циклах записи.
Из рассмотренных примеров видно, что взаимодействие по всем перечисленным интерфейсам основано на обмене неделимыми посылками фиксированной разрядности.
Рассмотрим варианты синхронного взаимодействия двух функциональных блоков кристалла СБИС или ПЛИС, основанного на передаче, приеме или обмене посылками фиксированной разрядности, без привязки к вышестоящему протоколу и функциональному назначению битов в объеме посылок. Описанный ниже протокол назовем «набор внутрикристальных портов взаимодействия» — On-Die Port Set (далее — порты ODPS).
Для внесения четкости в дальнейшем повествовании будет использована следующая терминология:
- Агент (Agent) — устройство, подключенное к интерфейсу и способное принимать из интерфейса и/или передавать в интерфейс данные или управлять процессом обмена данными.
- Инициатор (Initiator) — агент интерфейса, способный начинать обмен данными (циклы записи или чтения) или обрабатывать аппаратные прерывания.
- Исполнитель (Target) — агент интерфейса, способный принимать от инициатора данные в циклах записи, и/или передать инициатору данные в циклах чтения, и/или генерировать запросы аппаратных прерываний.
- Разделяемые ресурсы (Shared Resource) — часть логической или сигнальной инфраструктуры интерфейса, используемая совместно несколькими инициаторами с разделением циклов обмена данными во времени.
- Арбитр (Arbiter) — агент интерфейса, управляющий поочередной работой инициаторов во избежание конфликтов доступа к разделяемым ресурсам.
- Данные (Data) — набор двоичных комбинаций, конкретизирующий передаваемую или принимаемую по интерфейсу информацию.
- Фаза данных (Data Phase, Transfer) — одновременный процесс однократной передачи и/или однократного приема фиксированного набора данных и/или управляющих комбинаций по интерфейсу в течение транзакции. Объем данных, передаваемый в одной фазе данных, ограничен максимальным объемом данных, передаваемым по интерфейсу одновременно. (Определяется технологическими возможностями интерфейса и/или протоколом обмена.)
- Транзакция (Transaction) — непрерывный процесс взаимодействия инициатора и исполнителя по интерфейсу с целью передачи данных (в любом направлении). Транзакция состоит из одной или более фаз данных.
- Мост (Bridge) — функциональный блок, являющийся агентом двух разных интерфейсов, оснащенный одним интерфейсом исполнителя и одним интерфейсом инициатора. Мост передает транзакции, поступающие по интерфейсу исполнителя, на интерфейс инициатора, при этом допускается буферизация (временное хранение) данных в объеме моста.
- Коммутатор (Switch) — функциональный блок, являющийся агентом трех и более разных интерфейсов, оснащенный как минимум одним интерфейсом исполнителя и одним интерфейсом инициатора. Коммутатор передает транзакции, поступающие по интерфейсам исполнителя, на один или несколько интерфейсов инициатора. Выбор определенного интерфейса инициатора может производиться на основе анализа данных, полученных по интерфейсу исполнителя. Допускается буферизация (временное хранение) данных в объеме коммутатора.
Посылками, передаваемыми в каждой фазе данных через порты ODPS, являются слова данных, имеющие разрядность, соответствующую шинам тракта данных. Назначение битов в объеме слов данных здесь и далее не конкретизируется — его определяет протокол вышестоящего уровня, использующий модель обмена посылками фиксированной разрядности.
Самый простой способ взаимодействия функциональных узлов и блоков цифрового устройства — это односторонняя передача данных от инициатора к исполнителю. Рассмотрим общую модель синхронного одностороннего взаимодействия.
В одностороннем взаимодействии участвуют два агента:
- передающий порт в роли инициатора;
- принимающий порт в роли исполнителя.
Все сигналы, используемые в процессе взаимодействия, являются синхронными логическими сигналами, регистрируемыми агентами по восходящему фронту системного синхросигнала CLK. Смена состояния синхронных сигналов осуществляется в течение времени между восходящими фронтами системного синхросигнала за вычетом задержек удержания (Hold_time) и предустановки (Setup_time), регламентируемых свойствами элементной базы.
Синхронные сигналы одностороннего взаимодействия делятся на две группы:
- тракт сигнализации (Control path);
- тракт данных (Data path).
Тракт сигнализации включает один или два сигнала:
- готовность инициатора READY_T/DATA_EN (обязательный);
- готовность исполнителя READY_R (отсутствует в STP).
В рассмотренных ниже портах FWP и FRP сигналы тракта сигнализации называются иначе.
Допустимо сокращение названий сигналов тракта сигнализации:
- READY_T — RDY_T;
- READY_R — RDY_R.
Тракт данных включает от одного до двух сигналов:
- DATA_T/DATA_R — шина данных инициатора/исполнителя;
- LAST_TR (Last Transfer) — признак последней фазы данных в транзакции;
- AMNT (Amount) — число незавершенных фаз данных транзакции.
Сигналы LAST_TR и AMNT применяются при пакетном обмене данными, причем допустимо наличие в интерфейсе только одного из этих сигналов.
В интерфейсах, не поддерживающих пакетный обмен данными, сигналы LAST_TR и AMNT отсутствуют.
Топология соединения агентов при одностороннем взаимодействии показана на рис. 1.
В протоколе портов ODPS принято кодирование логических сигналов в положительной логике, когда низкому уровню сигнала соответствует логический «0», а высокому уровню — логическая «1».
Обмен данными происходит в тех тактах синхросигнала, когда все сигналы готовности в тракте сигнализации принимают значение логической «1». Пример временной диаграммы, поясняющей одностороннее взаимодействие агентов, представлен на рис. 2. Здесь и далее на временных диаграммах словом Transfer отмечены такты синхросигнала, в которых завершается фаза данных и происходит прием и передача слов данных.
Самым простым инициатором одностороннего взаимодействия является порт передачи данных — DTP (Data Transmit Port), не поддерживающий пакетные режимы передачи. Информация передается в виде двоичных слов данных фиксированной разрядности, соответствующей ширине шины данных DATA_T. Функциональное назначение битов в объеме слова данных не регламентировано этим протоколом — разработчик системы выбирает его по своему усмотрению.
Интерфейс порта DTP состоит из трех синхронных сигналов: READY_T и READY_R — в тракте сигнализации, DATA_T — в тракте данных.
Топологию соединения портов DTP и DRP при организации одностороннего взаимодействия без пакетных режимов иллюстрирует рис. 3.
Пример временной диаграммы функционирования порта DTP приведен на рис. 4.
Данный протокол накладывает ограничения на функционирование порта DTP, регламентированные набором следующих правил:
- Действительное слово данных на выходе DATA_T должно выдаваться во всех тактах, в которых сигнал READY_T установлен в логическую «1».
- При формировании логической «1» на выходе READY_T и действительного слова данных на шине DATA_T оба выходных сигнала порта DTP должны удерживаться неизменными до фиксации по восходящему фронту синхросигнала логической «1» на входе READY_R.
- Сигнал на выходе READY_T может быть переведен из логической «1» в логический «0» только после фиксации по восходящему фронту синхросигнала логической «1» на входе READY_R либо по системному сигналу сброса RST.
- На установку логической «1» на выходе READY_T, а также на выдачу действительного слова данных на шину DATA_T не долж-но влиять состояние сигнала READY_R.
Самым простым исполнителем одностороннего взаимодействия является порт приема данных — DRP (Data Receive Port), не поддерживающий пакетные режимы приема. Информация принимается в виде двоичных слов данных фиксированной разрядности, соответствующей ширине шины данных DATA_R. Функциональное назначение битов в объеме слова данных не регламентировано этим протоколом и будет выбрано по усмотрению разработчика системы.
Интерфейс порта DRP состоит из трех синхронных сигналов: READY_T и READY_R — в тракте сигнализации, DATA_R — в тракте данных.
Топология соединения порта DRP с портом DTP при организации одностороннего взаимодействия без пакетных режимов обмена показана на рис. 3.
Пример временной диаграммы функционирования порта DRP приведен на рис. 5.
Данный протокол накладывает ограничения на функционирование порта DRP, регламентированные набором следующих правил:
- Функциональный блок с портом DRP должен обеспечивать возможность приема слова данных в тех тактах, когда на выход READY_R порта DRP выдается логическая «1».
- На установку логической «1» на выходе READY_R допускается влияние входного сигнала READY_T (установка READY_R в «1» после установки READY_T в «1»). Но если на выходе READY_R была установлена логическая «1» при логическом «0» на входе READY_T, то состояние лог. «1» должно удерживаться на выходе READY_R до фиксации по восходящему фронту синхросигнала логической «1» на входе READY_T.
- Сигнал на выходе READY_R может быть переведен из логической «1» в логический «0» только после фиксации по восходящему фронту синхросигнала логической «1» на линии READY_T либо по системному сигналу сброса RST.
Следует отметить, что правила 2 и 3 отличают порт DRP от описанного ниже порта DRPU, а также не имеют аналогов среди требований для двунаправленных исполняющих портов.
Некоторые протоколы предполагают объединение последовательно передаваемых слов данных в пакеты. В качестве примера можно привести сетевой протокол Ethernet, оперирующий кадрами переменной длины, кратной 8 бит (октету). Для протокола Ethernet словом данных является октет (1 байт), а пакетом слов — кадр.
В рамках предложенной в начале статьи терминологии каждый пакет представляет собой одну транзакцию, независимо от числа фаз данных.
Рассмотрим два варианта пакетных режимов взаимодействия. Первый вариант использует признак последней фазы данных пакета. Все предшествующие фазы данных, если пакет состоит из двух и более фаз данных, завершаются без этого признака. Далее такой вариант пакетного взаимодействия называется «режим-L». Второй вариант применяет сигнализацию числа невыполненных фаз данных пакета. Далее второй вариант пакетного взаимодействия называется «режим-A».
Инициатором одностороннего взаимодействия, поддерживающим пакетный режим с сигнализацией последней фазы данных, является порт пакетной передачи данных — DTPL (Data Transmit Port with LAST). Информация передается в виде двоичных слов данных фиксированной разрядности, соответствующей ширине шины данных DATA_T. Функциональное назначение битов в объеме слова данных не регламентировано этим протоколом, оно будет выбрано по усмотрению разработчика системы. Слова данных, передаваемые последовательно во времени, могут объединяться в наборы, называемые пакетами, или транзакциями. Количество слов данных в пакете может быть любым натуральным числом, а также может изменяться от одного пакета к другому (может, но не должно быть фиксированным).
Интерфейс порта DTPL состоит из четырех синхронных сигналов: READY_T и READY_R — в тракте сигнализации, DATA_T и LAST_TR — в тракте данных.
Топологию соединения портов DTPL и DRPL при организации одностороннего взаимодействия в пакетном режиме иллюстрирует рис. 6.
Разбиение потока слов данных на пакеты используется протоколами вышестоящего уровня и не регламентировано данным протоколом.
Сигнал LAST_TR устанавливается в «1» в тех тактах, в которых передается последнее слово данных пакета. При передаче первого и промежуточных слов данных этот сигнал должен принимать значение логического «0». Если пакет состоит из одного слова данных, то на выходе LAST_TR устанавливается «1» при передаче этого слова.
Пример временной диаграммы функционирования порта DTPL приведен на рис. 7. На нем представлен процесс передачи шести слов данных, причем первые два слова передаются в первом пакете, третье слово данных — во втором пакете, а остальные три слова данных — в третьем пакете.
Описанный протокол накладывает ограничения на функционирование порта DTPL, регламентированные набором следующих правил:
- Действительное слово данных на выходе DATA_T, а также действительное значение сигнала LAST_TR (первое/промежуточное или последнее слово данных в пакете) должны выдаваться во всех тактах, в которых сигнал READY_T установлен в логическую «1».
- При формировании логической «1» на выходе READY_T, действительного слова данных на шине DATA_T и действительного значения сигнала LAST_TR все выходные сигналы порта DTPL должны удерживаться неизменными до фиксации по восходящему фронту синхросигнала логической «1» на входе READY_R.
- Сигнал на выходе READY_T может быть переведен из логической «1» в логический «0» только после фиксации по восходящему фронту синхросигнала логической «1» на входе READY_R либо по системному сигналу сброса RST.
- На установку логической «1» на выходе READY_T, а также на выдачу действительного слова данных на шину DATA_T и действительного значения сигнала LAST_TR не должно влиять состояние сигнала READY_R.
Исполнитель одностороннего взаимодействия, поддерживающий пакетный режим с сигнализацией последней фазы данных, представлен портом пакетного приема данных — DRPL (Data Receive Port with LAST). Информация принимается портом DRPL в виде двоичных слов данных фиксированной разрядности, соответствующей ширине шины данных DATA_R. Функциональное назначение битов в объеме слова данных не регламентировано этим протоколом и будет выбрано по усмотрению разработчика системы. Слова данных, принимаемые последовательно во времени, могут объединяться в наборы, называемые пакетами, или транзакциями. Количество слов данных в пакете может быть любым натуральным числом, а также может изменяться от одного пакета к другому (может, но не должно быть фиксированным).
Интерфейс порта DRPL состоит из четырех синхронных сигналов: READY_T и READY_R — в тракте сигнализации, DATA_R и LAST_TR — в тракте данных.
Топология соединения порта DRPL с портом DTPL при организации одностороннего взаимодействия в пакетном режиме показана на рис. 6.
Разбиение потока слов данных на пакеты используется протоколами вышестоящего уровня и не регламентировано данным протоколом.
Подача логической «1» на вход LAST_TR осуществляется в тех тактах, в которых принимается последнее слово данных пакета. При приеме первого и промежуточных слов данных этот сигнал должен принимать значение логического «0». Если пакет состоит из одного слова данных, то на вход LAST_TR подается «1» при приеме этого слова.
Пример временной диаграммы функционирования порта DRPL приведен на рис. 8. На нем представлен процесс приема шести слов данных, причем первые два слова принимаются в первом пакете, третье слово данных — во втором пакете, а остальные три слова данных — в третьем пакете.
Указанный протокол накладывает ограничения на функционирование порта DRPL, регламентированные набором следующих правил:
- Функциональный блок с портом DRPL должен обеспечивать возможность приема слова данных в тех тактах, когда на выход READY_R порта DRPL выдается логическая «1».
- На установку логической «1» на выходе READY_R допускается влияние входного сигнала READY_T (установка READY_R в «1» после установки READY_T в «1»). Но если на выходе READY_R была установлена логическая «1» при логическом «0» на входе READY_T, то состояние логической «1» должно удерживаться на выходе READY_R до фиксации по восходящему фронту синхросигнала логической «1» на входе READY_T.
- Сигнал на выходе READY_R может быть переведен из логической «1» в логический «0» только после фиксации по восходящему фронту синхросигнала логической «1» на линии READY_T либо по системному сигналу сброса RST.
В пакетном режиме-A вместо сигнала LAST_TR используется шина AMNT, двоичная комбинация на которой определяет оставшееся число фаз данных транзакции.
Инициатором одностороннего взаимодействия в пакетном режиме-A выступает порт пакетной передачи данных — DTPA (Data Transmit Port with AMNT). Информация передается в виде двоичных слов данных фиксированной разрядности, соответствующей ширине шины данных DATA_T. Функциональное назначение битов в объеме слова данных не регламентировано этим протоколом и будет выбрано по усмотрению разработчика системы. Слова данных, передаваемые последовательно во времени, могут объединяться в наборы, называемые пакетами, или транзакциями. Количество слов данных в пакете может быть любым натуральным числом, меньшим числа двоичных комбинаций сигнала AMNT, а также может изменяться от одного пакета к другому (может, но не должно быть фиксированным).
Интерфейс порта DTPA состоит из четырех синхронных сигналов: READY_T и READY_R — в тракте сигнализации, DATA_T и AMNT — в тракте данных.
Топологию соединения портов DTPA и DRPA при организации одностороннего взаимодействия в пакетном режиме иллюстрирует рис. 9.
Разбиение потока слов данных на пакеты используется протоколами вышестоящего уровня и не регламентировано данным протоколом.
Сигнал AMNT действителен только в тех тактах, в которых на выходе READY_T установлена логическая «1». Разрядность сигнала AMNT должна составлять не менее 2 бит. В каждой фазе данных сигнал AMNT отображает количество оставшихся слов данных в пакете, включая текущее слово данных. На передачу последней фазы данных пакета указывает комбинация «00..01» на выходе AMNT. Комбинация AMNT, содержащая все «0», может достигаться только при отсутствии транзакций. Если пакет состоит из одного слова данных, то на выходе AMNT при передаче этого слова устанавливается комбинация «00..01».
Пример временной диаграммы функционирования порта DTPA приведен на рис. 10. На нем представлен процесс передачи шести слов данных, причем первые два слова передаются в первом пакете, третье слово данных — во втором пакете, а остальные три слова данных — в третьем пакете.
Этот протокол накладывает ограничения на функционирование порта DTPA, регламентированные набором следующих правил:
- Действительное слово данных на выходе DATA_T, а также действительное значение сигнала AMNT (число непереданных слов данных в пакете) должны выдаваться во всех тактах, в которых выходной сигнал READY_T установлен в логическую «1».
- При формировании логической «1» на выходе READY_T, действительного слова данных на шине DATA_T и действительного значения сигнала AMNT все выходные сигналы порта DTPA должны удерживаться неизменными до фиксации по восходящему фронту синхросигнала логической «1» на входе READY_R.
- Сигнал на выходе READY_T может быть переведен из логической «1» в логический «0» только после фиксации по восходящему фронту синхросигнала логической «1» на входе READY_R либо по системному сигналу сброса RST.
- На установку логической «1» на выходе READY_T, а также на выдачу действительного слова данных на шину DATA_T и действительного значения сигнала AMNT не должно влиять состояние сигнала READY_R.
- Двоичный код числа оставшихся фаз данных на выходе AMNT в течение одной транзакции не должен увеличиваться.
- Двоичный код числа оставшихся фаз данных на выходе AMNT между любыми двумя последовательными фазами данных в течение одной транзакции должен уменьшаться строго на 1.
- Количество разрядов сигнала AMNT может быть любым натуральным числом, превышающим 1.
- Значение на выходе AMNT не должно достигать комбинации из всех «0» одновременно с наличием логической «1» на выходе READY_T.
- Двоичный код числа оставшихся фаз данных на выходе AMNT может увеличиваться только на натуральное число в следующих случаях:
-
- после снятия сигнала сброса в начале работы системы;
- после фиксации по восходящему фронту синхросигнала логической «1» на линиях READY_T и READY_R и комбинации «00..01» на выходе AMNT, при этом после описанного события могут непрерывно следовать холостые такты, в которых на выходе READY_T установлен логический «0»;
- после выдачи в предыдущем такте комбинации из всех «0» на выходе AMNT.
Из правила 8 следует, что комбинация из всех «0» на шине AMNT в общем случае может не достигаться, так как значение AMNT считается недействительным при логическом «0» на линии READY_T.
Исполнитель одностороннего взаимодействия, поддерживающий пакетный режим-A, представлен портом пакетного приема данных — DRPA (Data Receive Port with AMNT). Информация принимается портом DRPA в виде двоичных слов данных фиксированной разрядности, соответствующей ширине шины данных DATA_R. Функциональное назначение битов в объеме слова данных не регламентировано этим протоколом и выбирается на усмотрение разработчика системы. Слова данных, принимаемые последовательно во времени, могут объединяться в наборы, называемые пакетами или транзакциями. Количество слов данных в пакете может быть любым натуральным числом, меньшим числа двоичных комбинаций сигнала AMNT, а также может изменяться от одного пакета к другому (может, но не должно быть фиксированным).
Интерфейс порта DRPA состоит из четырех синхронных сигналов: READY_T и READY_R — в тракте сигнализации, DATA_R и AMNT — в тракте данных.
Топология соединения порта DRPA с портом DTPA при организации одностороннего взаимодействия в пакетном режиме показана на рис. 9.
Разбиение потока слов данных на пакеты используется протоколами вышестоящего уровня и не регламентировано данным протоколом.
Сигнал AMNT считается действительным только в тех тактах, в которых на вход READY_T подана логическая «1». Разрядность сигнала AMNT должна составлять не менее 2 бит. В каждой фазе данных сигнал AMNT отображает количество оставшихся слов данных в пакете, включая текущее слово данных. На прием последней фазы данных пакета указывает комбинация «00..01» на входе AMNT. Комбинация AMNT, содержащая все «0», может достигаться только при отсутствии транзакций. Если пакет состоит из одного слова данных, то на вход AMNT при приеме этого слова подается комбинация «00..01».
Пример временной диаграммы функционирования порта DRPA приведен на рис. 11. На нем представлен процесс приема шести слов данных, причем первые два слова принимаются в первом пакете, третье слово данных — во втором пакете, а остальные три слова данных — в третьем пакете.
Протокол накладывает ограничения на функционирование порта DRPA, регламентированные набором следующих правил:
- Функциональный блок с портом DRPA должен обеспечивать возможность приема слова данных в тех тактах, когда на выход READY_R порта DRPA выдается логическая «1».
- На установку логической «1» на выходе READY_R допускается влияние входного сигнала READY_T (установка READY_R в «1» после установки READY_T в «1»). Но если на выходе READY_R была установлена логическая «1» при логическом «0» на входе READY_T, то состояние логической «1» должно удерживаться на выходе READY_R до фиксации по восходящему фронту синхросигнала логической «1» на входе READY_T.
- Сигнал на выходе READY_R может быть переведен из логической «1» в логический «0» только после фиксации по восходящему фронту синхросигнала логической «1» на линии READY_T либо по системному сигналу сброса RST.
- Двоичный код числа оставшихся фаз данных на входе AMNT в течение одной транзакции не должен увеличиваться.
- Двоичный код числа оставшихся фаз данных на входе AMNT между любыми двумя последовательными фазами данных в течение одной транзакции должен уменьшаться строго на 1.
- Количество разрядов сигнала AMNT может быть любым натуральным числом, превышающим 1.
- На вход AMNT недопустимо подавать комбинации из всех «0» одновременно с логической «1» на входе READY_T.
- Двоичный код числа оставшихся фаз данных на входе AMNT может увеличиваться только на натуральное число в следующих случаях:
-
- после снятия сигнала сброса в начале работы системы;
- после фиксации по восходящему фронту синхросигнала логической «1» на линиях READY_T и READY_R и комбинации «00..01» на входе AMNT, при этом после описанного события могут непрерывно следовать холостые такты, в которых на вход READY_T подан логический «0»;
- после комбинации из всех «0» на входе AMNT в предыдущем такте.
В составе большинства современных цифровых устройств имеются буферы памяти типа FIFO. Это функциональные узлы, предназначенные для хранения слов данных по принципу очереди («первый записан — первым считан»). Буфер FIFO должен быть снабжен двумя интерфейсами: портом записи и портом чтения. Так как буфер FIFO хранит данные в виде слов фиксированной разрядности, его интерфейсы укладываются в выбранную концепцию унификации. В работах [9, 10, 11, 12] приведены модели буферов FIFO с унифицированным интерфейсом. Рассмотрим порты записи и чтения FIFO применительно к описываемому протоколу одностороннего взаимодействия.
Порт записи FIFO — FWP (FIFO Write Port) является исполнителем одностороннего взаимодействия, не использующим пакетные режимы приема. Информация принимается в виде двоичных слов данных фиксированной разрядности, соответствующей ширине шины данных W_DATA. Функциональное назначение битов в объеме слова данных не регламентировано этим протоколом и может быть выбрано по усмотрению разработчика системы. Для пропуска через буфер FIFO пакетов слов данных сигналы LAST_TR или AMNT могут задействовать дополнительные разряды шины W_DATA.
Интерфейс порта FWP состоит из трех синхронных сигналов: WREN и FULL — в тракте сигнализации, W_DATA — в тракте данных.
Топология соединения порта FWP с портом DTP при организации одностороннего взаимодействия без пакетных режимов обмена показана на рис. 12. Пример временной диаграммы функционирования порта FWP приведен на рис. 13.
Данный протокол накладывает ограничения на функционирование порта FWP, регламентированные набором следующих правил:
- Функциональный блок с портом FWP должен обеспечивать возможность приема слова данных в тех тактах, когда на выход FULL порта FWP выдается логический «0».
- На установку логического «0» на выходе FULL не должны оказывать влияние входные сигналы WREN и W_DATA (установка FULL в «0» осуществляется только на основе внутреннего состояния FIFO). Но, если на выходе FULL был установлен логический «0», это состояние должно удерживаться на выходе FULL до фиксации по восходящему фронту синхросигнала логической «1» на входе WREN.
- Сигнал на выходе FULL может быть переведен из логического «0» в логическую «1» только после фиксации по восходящему фронту синхросигнала логической «1» на входе WREN либо по системному сигналу сброса RST.
Порт чтения FIFO — FRP (FIFO Read Port) является инициатором одностороннего взаимодействия, не использующим пакетные режимы передачи. Информация передается в виде двоичных слов данных фиксированной разрядности, соответствующей ширине шины данных R_DATA. Функциональное назначение битов в объеме слова данных не регламентировано данным протоколом и будет выбрано по усмотрению разработчика системы. Для пропуска через буфер FIFO пакетов слов данных сигналы LAST_TR или AMNT могут задействовать дополнительные разряды шины R_DATA.
Интерфейс порта FRP состоит из четырех синхронных сигналов: EMPTY, NEXT_DATA и AMNT — в тракте сигнализации, R_DATA — в тракте данных.
Сигнал AMNT несовместим с аналогичным сигналом портов блочного обмена в режиме-A и имеет другое функциональное назначение. Этот сигнал может применяться для управления работой блока, считывающего данные с порта FRP буфера FIFO.
Топологию соединения портов FRP и DRP при организации одностороннего взаимодействия без пакетных режимов иллюстрирует рис. 14.
Состояние выхода AMNT (words Amount) отражает в двоичном коде количество слов, доступных для чтения. На выходе AMNT не должно отображаться количество слов, превышающее действительное количество слов, хранящихся во внутренней памяти FIFO. Кроме того, на выходе AMNT должно присутствовать число из всех логических «0», в том случае, если на выходе EMPTY присутствует логическая «1», и наоборот: на выходе AMNT должно присутствовать число, отличное от нуля, в том случае, если на выходе EMPTY установлен логический «0». Количество слов, отображаемое на выходе AMNT, может одновременно (в одном такте) увеличиваться на число, превышающее 1, независимо от входного сигнала подтверждения чтения слова данных NEXT_DATA. Тем не менее уменьшение количества слов, отображаемого на выходе AMNT, может осуществляться только на 1 и исключительно после чтения слова данных из буфера FIFO.
Выход AMNT недопустимо использовать для организации пакетных режимов обмена в силу несоответствия этого сигнала правилам: DTPA‑5 — DTPA‑7, DTPA‑9, DRPA‑4 — DRPA‑6, DRPA‑8.
Пример временной диаграммы функционирования порта FRP приведен на рис. 15.
Данный протокол накладывает ограничения на функционирование порта FRP, регламентированные набором следующих правил:
- Действительное слово данных на выходе R_DATA должно выдаваться во всех тактах, в которых сигнал EMPTY установлен в логический «0».
- При формировании логического «0» на выходе EMPTY и действительного слова данных на шине R_DATA оба из этих сигналов порта FRP должны удерживаться неизменными до фиксации по восходящему фронту синхросигнала логической «1» на входе NEXT_DATA.
- Сигнал на выходе EMPTY может быть переведен из логического «0» в логическую «1» только после фиксации по восходящему фронту синхросигнала логической «1» на входе NEXT_DATA либо по системному сигналу сброса RST.
- На установку логического «0» на выходе EMPTY, а также на выдачу действительного слова данных на шину R_DATA не должно влиять состояние сигнала NEXT_DATA.
- Двоичный код на выходе AMNT должен не превышать число слов данных, доступных для последовательного чтения из элементов памяти буфера FIFO. Буфер FIFO должен обеспечивать возможность чтения всего количества слов данных, определенного комбинацией AMNT, без тактов ожидания.
- При выдаче логической «1» на выход EMPTY на выходе AMNT должна присутствовать комбинация из всех «0» (отсутствие слов для чтения). И наоборот, при выдаче комбинации из всех «0» на выход AMNT выходной сигнал EMPTY должен принимать значение логической «1».
- При выдаче логического «0» на выход EMPTY на выходе AMNT должна присутствовать комбинация, содержащая логическую «1» хотя бы в одном разряде (наличие одного или более слов для чтения). И наоборот: при наличии на выходе AMNT логической «1» хотя бы в одном разряде выходной сигнал EMPTY должен принимать значение «0».
- Двоичный код на выходе AMNT может увеличиваться на любое натуральное число в любом такте работы при условии наличия в буфере FIFO соответствующего количества доступных для чтения слов данных.
- Двоичный код на выходе AMNT может (но не должен) уменьшаться строго на число «1» только после фиксации по восходящему фронту синхросигнала логической «1» на входе NEXT_DATA при логическом «0» на выходе EMPTY. Уменьшение двоичного кода на выходе AMNT на число, отличное от числа «1», за один такт синхросигнала недопустимо.
- Количество разрядов сигнала AMNT выбирается минимальным исходя из того, чтобы количество двоичных комбинаций AMNT было не меньше максимального числа слов, которое может хранить буфер FIFO.
Из правила 5 следует, что порт FRP не может генерировать такты ожидания (EMTPY = «1») между чтением слов данных, пока не будет достигнута комбинация из всех «0» на выходе AMNT. Таким образом, максимальный темп передачи может составлять одно слово данных в каждом такте синхросигнала.
В некоторых случаях поток слов данных контролируется только инициатором, и готовность исполнителя принять слово данных не учитывается. В качестве примера можно привести приемник последовательного внешнего интерфейса, например в составе контроллера UART. Темп приема слов данных определяется скоростью работы интерфейса и наличием данных для передачи у абонента этого интерфейса, с которым осуществляется взаимодействие. Приемник конвертирует принятые слова данных из последовательной формы в параллельную и выдает эти слова в приемный буфер FIFO, независимо от наличия свободного места в буфере. В таком случае на выходе приемника отсутствует контроль готовности буфера принять очередное слово данных.
Инициатором одностороннего взаимодействия, не поддерживающим контроль готовности исполнителя, является простой передающий порт — STP (Simple Transmit Port). Информация посылается в виде двоичных слов данных фиксированной разрядности, соответствующей ширине шины данных DATA_T. Функциональное назначение битов в объеме слова данных не регламентировано этим протоколом и будет выбрано по усмотрению разработчика системы.
Интерфейс порта STP состоит из двух синхронных сигналов: DATA_EN — в тракте сигнализации, DATA_T — в тракте данных.
Топологию соединения портов STP и DRP при организации одностороннего взаимодействия без пакетных режимов иллюстрирует рис. 16.
Порт STP не имеет механизма двухстороннего регулирования скорости обмена и передает слова данных независимо от готовности принимающего порта. Поэтому на рис. 16 показана цепь Data_Loss, служащая для сигнализации потерь слов данных. Принимающий блок может фиксировать факты потери данных, принимая логическую «1» на входе Control_in по восходящему фронту синхросигнала.
Пример временной диаграммы функционирования порта STP приведен на рис. 17.
Этот протокол накладывает единственное ограничение на функционирование порта STP: действительное слово данных на выходе DATA_T должно выдаваться во всех тактах, в которых сигнал DATA_EN установлен в «1».
Иногда исполнитель одностороннего взаимодействия строится таким образом, что может управлять выходом READY_R произвольно, но в соответствии с требованиями синхронности относительно синхросигнала CLK. Иными словами, сигнализируя готовность принять данные в такте i, исполнитель может деактивировать сигнал готовности READY_R в такте i+1 независимо от того, состоялся прием слова данных в такте i или не состоялся. Такой исполнитель представлен нечетким портом приема данных.
Нечеткий порт приема данных — DRPU (Data Receive Port — Uncertain) является исполнителем одностороннего взаимодействия, не поддерживающим пакетные режимы приема. Информация принимается в виде двоичных слов данных фиксированной разрядности, соответствующей ширине шины данных DATA_R. Функциональное назначение битов в объеме слова данных не регламентировано этим протоколом и может быть выбрано по усмотрению разработчика системы.
Интерфейс порта DRPU идентичен интерфейсу порта DRP и состоит из трех синхронных сигналов: READY_T и READY_R — в тракте сигнализации, DATA_R — в тракте данных.
Топология соединения порта DRPU с портом DTP при организации одностороннего взаимодействия без пакетных режимов обмена аналогична схеме, показанной на рис. 3.
Пример временной диаграммы функционирования порта DRPU приведен на рис. 18.
Как видно из диаграммы, в отличие от порта DRP порт DRPU может снимать сигнал готовности READY_R, не дожидаясь обмена данными.
Протокол накладывает единственное ограничение на функционирование порта DRPU: функциональный блок с портом DRPU должен обеспечивать возможность приема слова данных в тех тактах, когда на выход READY_R порта DRPU выдается логическая «1».
В разделе 3.1 спецификации [7] описан механизм синхронного рукопожатия (handshake process), контролирующий работу каждого из пяти каналов интерфейса AMBA AXI. Правило управления сигналом готовности приемника допускает установку в «0» сигнала READY до установки в «1» сигнала VALID. Это соответствует правилам работы порта DRPU.
На рис. 19 показана топология соединения по интерфейсу AXI с использованием сигналов портов DTP и DRPU.
Каналы Write Data Channel и Read Data Channel в составе интерфейса AMBA AXI имеют сигналы признака последней фазы данных WLAST и RLAST соответственно. Тем не менее использовать порты DTPL и DRPL для двух указанных каналов неправильно в связи с тем, что протокольные ограничения для порта DRPL более строгие, чем правило формирования сигналов READY для интерфейса AXI.
На этом заканчивается описание протокола одностороннего взаимодействия для портов ODPS. Во второй части статьи будет рассмотрена модель двухстороннего взаимодействия с синхронным рукопожатием.
- Брей Б. МикропроцессорыIntel: 8086/8088, 80186/80188, 80286, 80386, 80486, Pentium, Pentium Pro, Pentium II, Pentium III, Pentium 4. Архитектура, программирование и интерфейсы. Шестое издание. Пер. с англ. СПб: БХВ‑Петер-бург, 2005.
- Угрюмов Е. П. Цифровая схемотехника. 2‑е изд. СПб: ВХВ‑Петербург, 2004.
- Carrier sense multiple access with collision detection (CSMA/CD) access method and physical layer specifications. IEEE Std 802.3. Edition, 2000.
- ST16C450 UNIVERSAL ASYNCHRONOUS RECEIVER/TRANSMITTER (UART) Rev.4.20 EXAR Corporation, September 2003.
- ST16C550 UART WITH 16‑BYTE FIFO’s Rev.5.01 EXAR Corporation, April 2005.
- AMBA APB Protocol. Version: 2.0. Specification. ARM IHI 0024C (ID041610) 2003-2010, ARM.
- AMBA AXI Protocol. Version: 2.0. Specification. ARM IHI 0022C (ID030510) 2003-2010, ARM.
- Борисенко Н. В. Синхронный системный интерфейс взаимодействия вычислительных ядер с периферийными блоками кристалла СБИС //Компоненты и технологии. 2016. № 10.
- Борисенко Н. В. Подходы к организации унифицированного ряда синтезируемых моделей буферов FIFO, реализуемых в различных семействах программируемой логики. Часть 1 // Компоненты и технологии. 2012. № 12.
- Борисенко Н. В. Схемы включения буферов FIFO с унифицированным интерфейсом в тракт данных между источником и приемником информации // Компоненты и технологии. 2013. № 2.
- Борисенко Н. В. Организация синхронных буферов FIFO с унифицированным интерфейсом, построенных на регистрах общего назначения в объеме микросхем программируемой логики // Компоненты и технологии. 2016. № 8.
- Борисенко Н. В. Организация масштабируемого блока управления синхронным буфером FIFO с унифицированным интерфейсом // Компоненты и технологии. 2017. № 1.