AMBA
{{ headerTitle }}
{{ ctrlTop }}
Controller
{{ wire.label }}
GPU
Component
{{ hintLabel }}
{{ hintText }}
Q-Channel / Overview

A four-wire low-power handshake

The Q-Channel lets a controller ask a component to become quiescent — so its clock or power can be safely removed — and bring it back. It is the simplest AMBA low-power interface: one request wire, two acknowledge wires, and an activity hint. Start with the Quiescence Handshake to watch the waveform and state machine move together.

{{ c.name }} {{ c.dirBadge }}
{{ c.desc }}
{{ c.polarity }}
The six handshake states
{{ s.label }} {{ s.levels }} {{ s.short }}
Q-Channel / Quiescence Handshake

Step the handshake, watch the state

Step through a transaction with ◀ ▶. The waveform and the state machine move together — or click any state node to jump there. Start with Accept, then try the harder paths.

{{ s.label }}
{{ stepCounter }}
{{ stepLabel }}
{{ stepText }}
{{ waveFile }}
{{ qWave }}
state machine click a node to jump
{{ qSM }}
{{ curStateLabel }} {{ l.sig }} {{ l.val }}
{{ inspLabel }} · {{ inspText }}
Q-Channel / State Machine

The full state machine

Two loops share Q_RUN and Q_REQUEST: the upper accept path gates the clock; the lower deny path keeps the component running. Every transition is one signal edge. Click a state to inspect it.

{{ smStandalone }}
Node values — Rn=QREQn · An=QACCEPTn · D=QDENY  (1=HIGH, 0=LOW)
{{ selLabel }}
{{ selOperational }}
{{ l.sig }} {{ l.lvl }}
{{ selDesc }}
Q-Channel / Signal Reference

Signals & state table

Four wires, six states. CTL→CMP = driven by the controller, CMP→CTL = driven by the component.

SignalDriverAssertedMeaning
{{ r.sig }} {{ r.dirBadge }} {{ r.assert }} {{ r.meaning }}
State table
StateQREQnQACCEPTnQDENYMeaning
{{ r.label }} {{ r.req }} {{ r.acc }} {{ r.den }} {{ r.meaning }}
Only one of the acknowledge signals (QACCEPTn / QDENY) changes per transition — this keeps the handshake safe across asynchronous clock/power domains. QACTIVE is independent of the handshake and can change at any time.
P-Channel / Overview

Negotiated power-state transitions

The P-Channel lets a power controller move a component between power states — on, retention, off — through a four-phase handshake. Where the Q-Channel has a single request wire, the P-Channel adds PSTATE to carry which state is wanted and PACTIVE as a per-mode activity vector. Open Power Transition to step a request through.

Device power states
{{ p.name }} {{ p.sub }}
{{ p.desc }}
{{ c.name }} {{ c.dirBadge }}
{{ c.desc }}
{{ c.polarity }}
The six handshake states
{{ s.label }} {{ s.levels }} {{ s.short }}
P-Channel / Power Transition

Step a power-state request

Step through a transition with ◀ ▶. The waveform and the state machine move together — or click any state node to jump there. Start with Power-down, then try a denial and a wake-up.

{{ s.label }}
{{ pStepCounter }}
{{ pStepLabel }}
{{ pStepText }}
{{ pWaveFile }}
{{ pWave }}
state machine click a node to jump
{{ pSM }}
{{ pCurStateLabel }} {{ l.sig }} {{ l.val }}
{{ inspLabel }} · {{ inspText }}
P-Channel / State Machine

The four-phase handshake

Two loops share P_STABLE and P_REQUEST: the upper accept path commits the new PSTATE; the lower deny path keeps the current state. Every transition is one signal edge. Click a state to inspect it.

{{ pSmStandalone }}
Node values — R=PREQ · A=PACCEPT · D=PDENY  (1=HIGH, 0=LOW)
{{ pSelLabel }}
{{ pSelOperational }}
{{ l.sig }} {{ l.lvl }}
{{ pSelDesc }}
P-Channel / Signal Reference

Signals & state table

Five wires, six states. CTL→CMP = driven by the controller, CMP→CTL = driven by the component.

SignalDriverAssertedMeaning
{{ r.sig }} {{ r.dirBadge }} {{ r.assert }} {{ r.meaning }}
State table
StatePREQPACCEPTPDENYMeaning
{{ r.label }} {{ r.req }} {{ r.acc }} {{ r.den }} {{ r.meaning }}
PSTATE must be valid before PREQ is asserted and held stable until the handshake completes. Only one of PACCEPT / PDENY is asserted per transition. PACTIVE is independent of the handshake and can change at any time.