저번 포스트에서 APB Signal들과 Read/Write가 어떻게 이루어지는지 보았는데요.

이번 포스트에서는 APB Bus와 관련해 못다한 이야기를 좀 정리해보려고 합니다.

그럼 ARM社의 AMBA3 APB Protocol문서에 나와있는 Error Response와 Operating State에 대해서 살펴볼게요.

 

- Error Response

사실 저번 포스트에서 Signal에 대해서 정리할 때, PSLVERR라는 Signal은 따로 설명하지 않고 넘어갔었어요.

PSLVERR=Slave Error 신호로 이것이 바로 Error Response Signal입니다. 

모든게 생각한대로 흘러가지 않듯이 APB Bus를 통해서 Data를 전송할 때 예기치 못한 Error가 발생할 수 있겠죠.

Error가 발생하면 Slave는 여기 Error가 발생했어요~ 하고 Master에게 알리기 위해 PSLVERR를 HIGH로 올립니다.

참고로 이런 Error는 Read나 Write를 가리지 않고 발생할 수 있습니다. 

아래 다이어그램을 한번 봅시다.

일단 PWRITE Signal을 보니 Master가 Slave에게 어떤 Write 명령을 했습니다.

이후에 PENABLE, PREADY가 켜지고 Transfer가 이루어질텐데 PREADY와 동시에 PSLVERR가 HIGH가 되었네요.

어떤 이유인지는 모르겠지만 APB Bus를 통해서 Data를 전송하고 Write를 수행하는 과정에서 무언가 문제가 생겼고 그것을 Master에게 알리기 위해 Slave가 신호를 보내는 것 정도로 이해할 수 있을 것 같네요.

 

- Operating System

그럼 APB 3의 Operating System에 대해서 살펴보고 APB 3 Bus Protocol은 마무리하도록 할게요.

문서에 소개된 State Diagram을 한번 봅시다.

State Diagram

이 State Diagram을 보면 저번 포스트부터 말했던 모든 내용을 그림 하나로 압축해놨다고 생각이 듭니다.

복습할 겸 한번 살펴볼까요?

 

먼저 크게 IDLE, SETUP, ACCESS 3가지 State가 보입니다.

또... 어떤 조건들을 만족했을 때, 화살표를 통해 State가 변경되는 것이 보여지네요. 살펴봅시다.

 

1) IDLE State

IDLE State는 저번에도 봤듯이 전송이 일어나지 않는 상태이기 때문에 PSEL, PENABLE이 모두 0이죠.

또한 Transfer를 시작하지 않으면 계속 IDLE 상태에 머무를 것이고

Transfer를 시작하면 Setup으로 넘어갈 것이란 것도 확인할 수 있네요.

 

2) SETUP

IDLE 상태에 있다가 Transfer를 시작하고 PSEL을 통해서 필요한 Slave를 선택하게 되면 이때가 SETUP상태입니다.

SETUP 상태에서는 다른 State로 넘어갈 때 다른 조건이 존재하지 않고 바로 ACCESS State로 넘어가는 것이 보이네요.

즉, SETUP State는 항상 1 clock만을 소모하겠네요!

 

3) ACCESS State

SETUP State에서 Master가 전송 준비를 끝내고 PENABLE Signal을 1로 하면 이때가 ACCESS State입니다.

그런데 ACCESS 상태에서 나가는 화살표가 3가지나 존재하네요.

 

① PREADY = 0

PREADY가 0이라는 건 Slave가 준비가 안되었다는 소리인건 저번에 봤었죠.

따라서 Slave가 준비될 때까지 ACCESS State에 머무르게 됩니다.

 

② PREADY = 1

Master는 PENABLE=1로 준비되었음을 알렸고 Slave 또한 PREADY=1로 준비가 되었음을 알렸다면 비로소 Transfer가 이루어 지겠네요.

그건 알겠는데 Transfer 이후에 하나는 SETUP State로 가고, 하나는 IDLE로 돌아가네요.

 

별건 아니고 간단히 말해 어떤 Transfer를 끝내고 이어서 또 Transfer할게 있으면 SETUP으로 돌아가는 거고

더이상 Transfer가 필요하지 않으면 IDLE State로 돌아가는 거로 정리할 수 있습니다.

 


APB에 대해 공부하고 정리한 내용은 이상입니다.

사실 APB Bus같은 경우는 AMBA Bus중에 Signal도 적은 편이고 하다보니 두개의 포스팅으로 짧게 끝났어요 ㅎ

이후에 AHB, AXI를 공부해서 다른 Bus 설명으로 돌아오도록 할게요!

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기