본문 바로가기
Digital Design/SoC

[AMBA] APB (Advanced Peripheral Bus)

by 스테고사우르스 2023. 2. 6.

※ 본 게시글의 그림 저작권은 ARM사에 있습니다.

 

앞으로 AMBA Bus Protocol을 하나하나 설명할 예정인데요,

오늘은 그 중 가장 간단한 APB로 시작하겠습니다.

 


 

APB (Advanced Peripheral Bus)

 

APB의 장점

  • Low power
  • Low cost
  • Low complexity

APB의 단점

  • Low bandwidth
  • Non pipelined

 


APB Signals

우선 모든 signal들은 APB의 P를 앞에 붙여줍니다.

 

PADDR은 APB의 Address Bus를 전송합니다.

PSELx는 어떤 slave device를 선택할 지 결정합니다.

PWRITE는 읽을 지 쓸 지 결정합니다. (1이면 Write, 0이면 Read)

PWDATA는 write data로 쓸 data를 보냅니다.

 

PREADY는 전송을 연장합니다.

이게 무슨말인지 헷갈릴 수 있는데 간단히 설명해보겠습니다.

M에서 S에 데이터를 쓰거나 읽을 경우 아무때나 이를 수행할 수 있는 것은 아닙니다.

다른 작업을 수행중이거나 아직 준비가 안됐을 때 기다려달라고 요청하는 신호입니다.

만약 PREADY=0이면 준비가 안됐다는 뜻으로 PREADY=1이 될 때까지 잠시 기다립니다.

 

PRDATA는 read data로 S에서 M으로 읽은 데이터를 전송합니다.

 

PSLVERR는 error를 알려주는 신호입니다.

예상하는 건데 slave error가 아닐까 싶네요.

 

 

비트 수를 보면 최대 32bit까지 사용 가능한 것을 알 수 있습니다.

또한 data bus가 read data와 write data로 분리되어 있습니다.

 


APB State Diagram

다음은 APB의 동작 순서에 대해 말씀드리겠습니다.

1. IDLE

PSELx = 0   PENABLE = 0

아무것도 하지 않는 상태입니다.

전송이 없으면 IDLE 상태를 유지합니다.

 

 

2. SETUP

PSELx = 1   PENABLE = 0

준비 상태입니다.

여기서는 Addr과 Data 정보를 전송합니다.

SETUP state에는 한 클락만 머뭅니다.

 

 

3. ACCESS

PSELx = 1   PENABLE = 1

접근 상태입니다.

여기서 data를 쓰거나 읽습니다.

만약 추가적인 전송이 있을 경우 다시 SETUP state로 돌아갑니다.

추가적인 전송이 없다면 IDLE state로 돌아갑니다.

PREADY=0이면 PREADY=1이 될 때까지 지연됩니다.

 


Write Transfer

  • With no wait state

연장이 없을 경우입니다.

 

T0: PSEL=0  PENABLE=0으로 IDLE state입니다.

      아무일도 일어나지 않습니다.

 

T1: PSEL=1  PENABLE=0으로 SETUP state입니다.

      위의 Timing diagram은 PWRITE=1이라 쓰는 작업을 수행합니다.

      PADDR(어디에 쓸지), PWDATA(무엇을 쓸지) 정보를 전송합니다.

 

T2: PSEL=1  PENABLE=1로 ACCESS state입니다.

      받아온 데이터를 Slave에 작성합니다.

      PREADY=1이므로 지연 없이 수행할 수 있습니다.

 

T3: PSEL=0  PENABLE=0으로 IDEL state입니다.

      T2에서 더 전송할 정보가 없었기 때문에 IDLE state로 돌아갔습니다.

 

 

  • With wait states

이번엔 wait가 포함된 상황입니다.

 

앞에는 다 같은데 ACCESS state인 T2에서 PREADY=0입니다.

따라서 PREADY=1이 될 때까지 연장됩니다.

 

T4에서 PREADY=1이 되자 data를 write하고 T5에서 IDLE state로 돌아갑니다.

 


Read Transfer

  • With no wait state

Write와 유사합니다.

Read Transfer에서는 PWRITE=0으로 Read를 수행합니다.

 

T2: PSEL=1  PENABLE=1로 ACCESS state입니다.

      PREADY=1이므로 PRDATA에 읽은 data를 올려줍니다.

 

 

  • With wait states

T2와 T3는 ACCESS state인데 PREADY=0이라 연장됩니다.

T4에서 PREADY=1과 동시에 PRDATA에 읽은 데이터는 올려줍니다.

T5가 되면 IDLE state로 돌아갑니다.

 


Error Response

Error가 발생하면 PSLVERR=1로 올려주어서 error가 발생했음을 Master에게 알려줍니다.

PSLVERR=0이면 Okay입니다.

에러는 APB의 마지막 Cycle에서 알려줍니다.

 


 

댓글