The Advanced Microcontroller Bus Architecture (AMBA) is an open-source standard engineered by ARM. It provides specifications for on-chip interconnection and management of various functional blocks on the SoC.
This repo implements the portions of the AMBA used by the NYU Processor design team, specifically AHB, APB, and an APB Bridge device, following the AMBA 5 specification
The AHB acts as the backbone of the chip, allowing efficient, fast connections on the chip. It supports multiple bus managers, but we only implement one for now.
- Initiates read and write operations
- Provides address and control information
- Responds to the read/write operation from the manager within a given address space
- Signals back to the manager for success, failure, or data transfer await
- Routes the read data and response signals to and from the subordinates to the manager
- Decodes the address of each transfer
- Provides a select signal for the subordinate involved in a transaction
- The decoder is a centralised component
The APB is for low-power peripherals, facilitating low-bandwidth access control. It acts as the secondary bus to the AHB, providing interface for peripherals
- APB interfaces with the AHB using the APB Bridge, which handles the handshake and control signal remitting
- APB implementations contain a single bridge which converts AHB transfers into a suitable format for peripherals on the APB.
Rishyak's notes about each component are in the docs directory.
However, if you prefer to read from source1:
Footnotes
-
There are some mistakes in the documentation, such as misinterpreting the size of a "word" or switching out similar words, so use your best judgement when reading them. It seems like the person got increasingly tired, because these mistakes get worse the further you read. ↩