Altifigence Academy

13 / 24 · Теория

События приёма и стабильность при остановках

Назначьте обязанности источника и приёмника и сохраняйте задержанные полезные данные.

Передача требует обоих сигналов на фронте

Valid обещает, что у источника есть предлагаемые полезные данные. Ready обещает, что приёмник может принять их на текущем фронте. Передний фронт с обоими высокими сигналами передаёт ровно одну транзакцию. Полезные данные включают все сопутствующие поля, например метку, операцию или адрес. Постоянно высокий valid может означать один задержанный элемент или последовательность элементов, передаваемых на последовательных фронтах с ready.

Когда valid высок, а ready низок, сохраняйте valid и все полезные данные стабильными. Наше соглашение позволяет отменить это обязательство только сбросом или явной очисткой. Если источник ждёт ready перед установкой valid, а приёмник ждёт valid перед установкой ready, оба могут ждать бесконечно. Предлагайте подготовленный элемент независимо от ready. Эти принципы подтверждения передачи и стабильности документированы в спецификации AMBA AXI от Arm, раздел A3. Этот небольшой поток не реализует полный интерфейс AXI.

ФронтvalidreadyПолезные данныеПередача
010tag4,y9Нет
110tag4,y9Нет
211tag4,y9tag4 один раз
311tag5,y12tag5 один раз
401Не имеют значенияНет

Tag4 должен оставаться неизменным во время остановки. После его передачи на фронте 2 источник может предъявить tag5. Один ready на фронте 4 не создаёт транзакцию. Подсчёт только valid может терять входы; чтение только данных может дублировать выходы.

Эти правила предполагают один тактовый домен. Они не решают пересечение тактовых доменов или метастабильность. Считайте принятые входы и выданные выходы по соответствующим подтверждённым передачам. Без сброса принятые минус выданные должны равняться внутренней незавершённой работе. Ставьте принятые метки в очередь и удаляйте только при выдаче. Совместите этот учёт с проверками задержанных полезных данных, чтобы выявить потери, дублирование и изменение идентичности, даже если арифметические значения совпадают.

Попробуйте сами

Valid высок на четырёх фронтах таблицы. Сколько происходит передач и какие метки передаются? Какое правило нарушается, если y становится 10 на фронте 1?

Прочитать объяснение

Происходят две передачи: метки 4 и 5 на фронтах 2 и 3. Изменение y на фронте 1 нарушает стабильность полезных данных транзакции, остановленной на фронте 0.

Выбор действует в этом браузере. Его можно изменить внизу страницы.