Read Operation
The read transfer is determined by the 0 state of the granted master's
s_apb_pwrite_i during the APB request. The 0 state
of s_apb_pwrite_i is evaluated together with the assertion of the
granted master's s_apb_psel_i, s_apb_paddr_i,
s_apb_pwdata_i, s_apb_pwdata_par_i,
s_apb_pstrb_i, and s_apb_pstrb_par_i.
At 1 clock cycle after the assertion of the granted master's s_apb_psel_i
, the granted master's s_apb_penable_i needs to be asserted to
start the read transfer.
s_apb_penable_i does
not assert or assert at ≥ 1 clock cycle after the assertion of the
s_apb_psel_i, the granted master loses the active priority.The minimum latency between the granted master's input signals and the slave's interface output signals is 2 clock cycles. Upon receiving a read transfer request from the granted master, the slave may need some time to process the request.
While waiting for the slave to complete the read transfer, the granted master needs to
maintain the signal state of s_apb_psel_i,
s_apb_penable_i, s_apb_pwrite_i,
s_apb_paddr_i, s_apb_pwdata_i,
s_apb_pwdata_par_i, s_apb_pstrb_i, and
s_apb_pstrb_par_i.
When the slave finishes the read transfer, it asserts apb_pready_i. The
APB Interconnect core takes a minimum of 1 clock cycle to propagate
the asserted apb_ready_i to the granted master's
s_apb_pready_o. This marks the end of the current read
transfer.
At the end of the read transfer, the granted master needs to de-assert
s_apb_penable_i and may change the signal state of
s_apb_psel_i, s_apb_pwrite_i,
s_apb_paddr_i, s_apb_pwdata_i,
s_apb_pwdata_par_i, s_apb_pstrb_i, and
s_apb_pstrb_par_i for the next APB request (or no request).
The read operation with no wait state illustrates a situation where the
slave responses immediately to the granted master's request, i.e., the slave asserts
apb_pready_i at the same clock cycle as the assertion of
apb_penable_o.
The read operation with wait state is a typical situation, where upon
receiving the granted master's request, the slave may take ≥ 1 clock cycle to
response.