Internal CPUIF Protocol#
Internally, the bus decoder uses a small set of common request/response signals that each CPU interface adapter must drive. This protocol is intentionally simple and supports a single outstanding transaction at a time. The CPU interface logic is responsible for holding request signals stable until the transaction completes.
Signal Descriptions#
Request#
- cpuif_req
When asserted, a read or write transfer is in progress. Request signals must remain stable until the transfer completes.
- cpuif_wr_en
When asserted alongside
cpuif_req, denotes a write transfer.- cpuif_rd_en
When asserted alongside
cpuif_req, denotes a read transfer.- cpuif_wr_addr / cpuif_rd_addr
Byte address of the write or read transfer, respectively.
- cpuif_wr_data
Data to be written for the write transfer.
- cpuif_wr_byte_en
Active-high byte-enable strobes for writes. Some CPU interfaces do not provide byte enables and may drive this as all-ones.
Read Response#
- cpuif_rd_ack
Single-cycle strobe indicating a read transfer has completed. Qualifies
cpuif_rd_errandcpuif_rd_data.- cpuif_rd_err
Indicates that the read transaction failed. The CPU interface should return an error response if possible.
- cpuif_rd_data
Read data. Sampled on the same cycle that
cpuif_rd_ackis asserted.
Write Response#
- cpuif_wr_ack
Single-cycle strobe indicating a write transfer has completed. Qualifies
cpuif_wr_err.- cpuif_wr_err
Indicates that the write transaction failed. The CPU interface should return an error response if possible.
Transfers#
Transfers have the following characteristics:
Only one outstanding transaction is supported.
The CPU interface must hold
cpuif_reqand request parameters stable until the correspondingcpuif_*_ackis asserted.Responses shall arrive in the same order as requests.