AMBA – 1 APB overview

AMBA에 대하여

AMBA 버스 종류
AMBA 버스 종류

AMBA(Advanced Microcontroller Bus Architecture)는 ARM에서 개발한 버스 protocol로 여러 가지 종류가 있지만 대부분 APB, AHB, AXI 버스를 주로 사용합니다. 버스는 Chip의 모듈 간에 신호를 주고받는 통로인데 왜 이렇게 분류하는 걸까요?? 그건 모듈마다 성능이 다르기 때문입니다.

예를 들어, 높은 성능을 가지고 있는 CPU와 처리 속도가 느린 DRAM, 혹은 peripheral이 하나의 버스로 연결된다면 데이터 처리가 늦어짐에 따라 버스는 busy 한 상태로 유지될 겁니다. 그러면 CPU나 다른 고성능 모듈들은 버스의 신호가 다 처리될 때까지 기다려야 합니다.

그래서 고성능 모듈은 고성능 버스에 연결하고, 상대적으로 성능이 낮은 모듈들은 성능이 낮은 버스에 연결하여 전체 시스템의 performance를 최적화합니다.

High-performance 모듈들은 AHB 버스에, UART 같은 저성능 모듈들은 버스에 연결되고 두 버스를 bridge로 이어준 것을 확인할 수 있습니다. 버스 성능은 AXI > AHB > APB 순으로 높습니다.

그러면 위의 버스들을 하나씩 알아봅시다.

APB bus

Advanced Peripheral Bus는 이름에서 알 수 있듯이 peripheral을 위한 버스입니다. 인터페이스를 단순화하여 low-cost, low power consumption 등의 이점이 있습니다.

APB Block diagram
Block diagram

Block diagram을 보면 여러 signal 들이 나오는데요, specification을 보면서 하나하나 파헤쳐봅시다.

Signals

APB Signals
Signals

Signals의 자세한 내용은 description을 참고하시면 됩니다. 그러면 transfer 예시를 보면서 protocol에 대해 이해해봅시다.

Basic transfer

Write transfer with no wait states

Write transfer wo. wait
Write transfer wo. wait

Write transfer 예시입니다. 기본적으로 clock posedge에서 데이터가 전송되는데요, 구간별로 설명하겠습니다.

  • T1 – T2 : Addr 1이 PADDR에 실렸습니다. 이 주소에 trasfer를 진행하는데 PWRITE이 High이니 write transfer인것을 알 수 있습니다. PSEL signal로 slave가 선택되었으나 아직 Master에서 PENABLE 하지 않았네요. 그래서 DATA가 load 됐지만 Slave로 넘어가지 못했습니다.
  • T2 – T3 : PENABLE이 High가 되었고 Slave도 데이터를 받을 준비가 되어 PREADY High 신호를 보냈습니다. 그러면 clock posedge인 T3에서 데이터 transfer가 일어납니다.

다음은 Slave가 데이터를 받을 준비가 안됐을 때 예시입니다.

Write transfer with wait states

Write transfer w. wait
Write transfer w. wait

T2 – T3에서 PREADY가 Low인 것으로 봐선 Slave가 데이터를 받을 준비가 되지 않았네요. 그래서 다른 signal 들이 PREADY High 신호가 뜰 때까지 대기하는 것을 알 수 있습니다.

T4 – T5에서 Slave 준비가 되어서 T5 시점에 transfer가 일어났네요.

Read transfer with no wait states

Read transfer wo. wait
Read transfer wo. wait

다음은 Read transfer입니다. Write transfer와 차이는 PWRITE이 Low이며 PWDATA로 데이터를 주고받는 것이 아니라 PRDATA로 주고받습니다. Write transfer를 이해했다면 어렵지 않으실 겁니다. 마지막으로 wait state가 있는 예시를 보면서 글을 마무리하겠습니다.

Read transfer with wait states

Read transfer w. wait
Read transfer w. wait

wait state는 PREADY 신호가 low일 때, 그니까 slave가 transfer 할 준비가 되지 않았을 때 생깁니다. 하지만 실무에서는 PREADY 신호가 거의 high로 tie(고정) 되어 있습니다.

그니까 이 bus protocol에서 wait state는 없다고 보시면 됩니다. (그 정도로 간단한 버스이기 때문입니다)

Slave error signal

Slave가 통신 중에 무슨 이유에서든지 에러가 발생하면 PSLVERR signal을 통해 이를 알립니다. PSLVERR은 transfer의 마지막 cycle에서 의미가 있고, 그때 PSEL, PENABLE, PREADY는 High 상태여야 합니다.

그럼, Timing diagram 예시를 보며 protocol에 대한 설명을 마무리하겠습니다.

Write transfer with slave error signal

Error on write transfer
Error on write transfer

Read transfer with slave error signal

Error on read transfer
Error on read transfer

하지만 실무에서는 PSLVERR 신호도 low로 tie 되어 있기 때문에 slave response signal은 PRDATA만 있다고 보시면 됩니다.

참고: ARM® AMBA APB Protocol Specification

Similar Posts