5. AMBA APB
5장 AMBA APB 개요
APB (Advanced Peripheral Bus) 는 ARM의 AMBA(Advanced Microcontroller Bus Architecture) 표준 중 저속, 저전력 주변장치(peripheral) 를 위한 버스 프로토콜이다. AHB(고속 bus)와 AHB2APB bridge를 통해 연결된다.
AMBA APB Protocol
AMBA Family
- AHB (Advanced High-performance Bus): CPU, Memory 등 고속 시스템 버스
- APB (Advanced Peripheral Bus): UART, Timer, GPIO 같은 저속 주변장치
- AXI (Advanced eXtensible Interface): Out-of-order, multi-outstanding transaction 지원 고성능
APB 특징
- 비파이프라인(non-pipelined): 간단한 setup + access phase만
- Low-power, Low-performance
- APB slave는 경량으로 구현 → peripheral에 적합
Signals
- PCLK: bus clock
- PRESETn: active-low reset
- PSEL: slave 선택 (master가 활성화)
- PENABLE: 두번째 cycle (access phase)에서 high
- PADDR: address (32-bit)
- PWRITE: 1=write, 0=read
- PWDATA: master → slave 데이터 (write)
- PRDATA: slave → master 데이터 (read)
- PREADY: slave ready signal (wait state 조절)
- PSLVERR: error 응답

APB Read Transfer
① No Wait State
T0 T1 T2 T3 T4
PCLK __/\__/\__/\__/\__
PADDR __[Addr 1]________
PWRITE __[_______ 0 ]____
PSEL __/‾‾‾‾‾‾\____
PENABLE ____/‾‾‾\____ ← Master가 가져감
PRDATA ______[Data 1]____ ← 데이터가 의미 있음
PREADY ______/‾‾‾‾\____
- T1: Setup (PSEL=1, PENABLE=0)
- T2: Access (PENABLE=1) → slave에서 data 준비
- T3: Master가 PRDATA를 sample → transfer 완료
② With Wait State
T0 T1 T2 T3 T4 T5 T6
PCLK __/\__/\__/\__/\__/\__/\__
PADDR __[____ Addr 1 _______]____
PSEL __/‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾\____
PENABLE ____/‾‾‾‾‾‾‾‾‾‾‾‾\____ ← Master가 받을 준비
PRDATA ________[___ Data 1 __]__ ← 데이터 유효 X → 데이터를 줌
PREADY ____________/‾‾‾‾‾\____ ← 데이터를 받아감
- Slave가 준비 안되면 PREADY=0 유지
- PREADY=1일 때 data valid → master가 sample
Operating States (APB Slave FSM)
APB slave는 IDLE → SETUP → ACCESS 3개 상태의 FSM:
[IDLE] (PSELx=0, PENABLE=0)
│ ↑
│ │ No transfer
│ │
Transfer (전송할게 있을 때)
│
▼
[SETUP] (PSELx=1, PENABLE=0)
│
▼
[ACCESS] (PSELx=1, PENABLE=1)
│ ↑
│ │ PREADY=0 (slave 준비 X)
│ │
PREADY=1 and transfer (계속 전송할게 있을 때)
│
▼
[SETUP] (or [IDLE] if no transfer)
- IDLE: 전송 없음
- SETUP: Master가 transaction 시작 (PSEL 활성화)
- ACCESS: 실제 data 전송 (PENABLE=1), PREADY를 기다림
AHB to APB Bridge
고속 AHB와 저속 APB 사이 Bridge:
- AHB master → Bridge → APB slave
- Bridge가 주소 decode → 해당 APB slave 선택
- Wait state 삽입으로 clock domain/속도 차이 보상

Write Transfer
Read와 대칭. PWRITE=1, PWDATA에 write data 제공.
T0 T1 T2 T3
PCLK _/\_/\_/\_/\_
PADDR _[Addr]______
PWRITE _[__1_]______
PSEL _/‾‾‾\______
PENABLE ___/‾‾\______
PWDATA _[__Data__]__
PREADY ___/‾‾‾\____
APB vs AHB
| 특성 | AHB | APB |
|---|---|---|
| Pipeline | Address + Data phase 파이프라인 | Non-pipelined (2 cycle) |
| Burst | 지원 (INCR, WRAP) | 미지원 |
| Multi-master | 지원 (arbiter) | 단일 master (bridge) |
| 성능 | 고성능 | 저성능 |
| 용도 | CPU, DMA, Memory | UART, Timer, GPIO |
정리
| 개념 | 핵심 |
|---|---|
| APB Setup phase | PSEL=1, PENABLE=0 |
| APB Access phase | PSEL=1, PENABLE=1, PREADY로 완료 |
| Wait state | PREADY=0 유지로 transaction 지연 |
| AHB2APB Bridge | Master AHB, Slave APB peripherals |
| FSM: IDLE → SETUP → ACCESS | 2-cycle 기본 transaction |
APB는 단순하고 저전력이라 ARM Cortex-M 계열 SoC의 모든 peripheral (UART, SPI, I2C, Timer, GPIO 등)이 APB slave로 구현된다.
Comments (0)
No comments yet. Be the first to comment!
Please to write a comment.