Подключение периферийных устройств и расширение системы
Возможные значения ответа в канале ответа на запись:
OKAY (0b00): Обычный доступ завершен успешно. Указывает, что обычный доступ был выполнен успешно.
EX_OKAY (0b01): Исключительный доступ в порядке.
SLVERR (0b10): Ошибка ведомого устройства. Соединение с подчиненным устройством было достигнуто успешно, но подчиненное устройство хочет вернуть исходному ведущему устройству сообщение об ошибке (например, недопустимые считанные данные).
DECERR (0b11): Ошибка декодирования. Генерируется, как правило, компонентом арбитром шины, чтобы указать, что по адресу транзакции нет подчиненного устройства.
Примечание: Транзакции чтения также имеют значение ответа, но этот ответ передается в канале как часть ответа на чтение.
В спецификации AXI4 задокументированы некоторые требования. Ключевые требования следующие:
- выставлен сигнал VALID (AxVALID/ VALID), он должен оставаться высоким до положительного фронта тактового сигнала, после выставления ведомым сигналов AxREADY/xREADY;
- сигнал READY интерфейса AXI, передающей стороны, не должен зависеть от сигнала READY интерфейса AXI, принимающей стороны. Однако состояние сигнала READY может зависеть от сигнала VALID;
- ответ на запись всегда должен следовать за последней передачей записи в транзакции записи, частью которой он является;
- данные для чтения всегда должны следовать за адресом, к которому относятся данные;
- ведомый должен дождаться пока оба сигнала как ARVALID, так и ARREADY будут выставлены, прежде чем он выставит RVALID, чтобы указать, что данные действительны.
Каналы являются носителями транзакций по каналам. AXI4 реализует 5 каналов:
- Адрес для чтения - AR - канал от ведущего к подчиненному;
- Данные для чтения: - R - канал от ведомого к ведущему;
- Адрес для записи - AW - канал от ведущего к подчиненному;
- Данные для записи - W - канал от ведущего к подчиненному;
- Ответ на запись - B - канал от ведомого устройства к ведущему.
Каждый канал соответствует правилам канального протокола. Возможны варианты только для чтения и записи. Это достигается путем реализации только каналов, необходимых конкретному устройству. Спецификация AXI также определяет протокол AXI4-Lite, который устанавливает более строгие правила для транзакций, генерируемых ведущим устройством. К ведущему устройству AXI4-Lite может быть подключено любое подчиненное устройство AXI4, однако к подчиненным устройствам AXI4-Lite могут быть подключены только ведущие устройства AXI4, следующие правилам AXI4-Lite.
Правила протокола
Каждый канал имеет сигнал готовности/подтверждения (VALID/READY) и сигналы полезной нагрузки.
Каналы имеют свое направление, которое соответствует направлению сигнала VALID. Приемная сторона оперирует сигналом готовности READY, которое противоположно сигналу VALID. Для каждого канала требуется, чтобы было подтверждено значение VALID, сигнализирующее о начале транзакции по каналу. Принимающая сторона подтверждает сигнал READY, чтобы сообщить ведущему каналу, что транзакция по каналу принята и можно запускать следующую транзакцию по каналу. Транзакция по одному каналу определяется как выставление данных, стробируемых сигналом VALID, подтверждение приема определяется по сигналу READY, выставленному приемной стороной - на этом цикл обмена по шине считается завершённым. Сигналы полезной нагрузки канала (данных) не должны изменяться, пока транзакция активна, и сигналVALID не должен зависеть от значения сигнала READY. VALID не может быть отменен до тех пор, пока не будет подтвержден READY.
Преимущества разделения групп сигналов на каналы заключаются в упрощении пересечения доменов синхронизации, питания и сброса, а также в разделении регистров ("разделении периодов"). Это также дополнительно проясняет соотношение сигналов, поскольку разные каналы имеют разные допустимые сигналы и префиксы, трудно случайно неправильно понять, какие сигналы допустимы на каком этапе.
Сигналы AXI4
AXI4 требует, чтобы интерфейс реализовывал ACLK, который передает тактовый сигнал, и требовал, чтобы сигналы в каждом канале были действительны на восходящем фронте этого тактового сигнала. Также требуется реализовать ARESETn, который при низком уровне сигнала сбрасывает сигналы. Пока выполняется сброс, и через один цикл после сброса требуется понизить уровень сигналов допустимости/готовности всех каналов.
| Канал AW, название сигнала | Канал AR, название сигнала | Описание |
|---|---|---|
| AWVALID | ARVALID | Сигналы стробирования/подтверждения приема |
| AWREADY | AWVALID | |
| AWID | ARID | Идентификатор несущей |
| AWADDR | ARADDR | Генерация адреса транзакции и сигналов, связанных с ним и параметрами транзакции |
| AWLEN | ARLEN | |
| AWSIZE | ARSIZE | |
| AWBURST | ARBURST | |
| AWPROT | ARPROT | |
| AWLOCK | ARLOCK | Сигналы атомарных операций |
| AWCACHE | ARCACHE | Сигналы кеширования |
| Сигнал | Описание |
|---|---|
| WVALID | Стробирующие/подтверждающие сигналы |
| WREADY | |
| WDATA | Запись данных |
| WSTRB | Строб записи (активный уровень - высокий) |
| WLAST | Signals last channel transaction for this transaction |
| Сигнал | Описание |
|---|---|
| BVALID | Стробирующие/подтверждающие сигналы |
| BREADY | |
| BID | Описание несущей |
| BRESP | Ответ |
| Сигнал | Описание |
|---|---|
| RVALID | Стробирующие/подтверждающие сигналы |
| RREADY | |
| RID | Идентификатор |
| RDATA | Данные ответа |
| RRESP | Строб ответа |
| RLAST | Сигнал последней транзакции по каналу |
Запросы на чтение
Запросы на чтение AXI4 поступают по каналам AR и R. Канал AR используется ведущим устройством для отправки запросов на чтение подчиненному устройству. Ведущий сначала устанавливает сигналы канала AR, такие как RADDR, ARSIZE, ARBURST ARLEN и другие сигналы.
Затем выставляется сигнал ARVALID, сигнализирующий о запуске новой транзакции. Ведомое устройство подтверждает, что транзакция готова, сообщая ведущему устройству, что транзакция принята, и ответ будет возвращен по каналу R. Подчиненный после завершения цикла принимает транзакцию по каналу AR и устанавливает сигналы по каналу R, такие как RRESP, RDATA и RID (рис.11.2).
