AMBA Bus Protocol에 대한 내용 중 APB, AHB Bus에 이어 AXI Bus에 대해서 정리해보도록 하겠습니다.

APB Bus는 최적화된 저가형 인터페이스였고 AHB Bus는 Performance에 초점을 맞춘 인터페이스였는데

AXI Bus는 AHB Bus보다도 더 높은 Performance, 더 높은 Frequency가 필요한 Design을 타겟으로 한 인터페이스에요.

 

AXI Bus의 여러가지 특징 중 가장 대표적인 특징으로는
Write Address/Data, Read Address/Data, Response 총 5개의 Channel로 분리가 되어 있어서 Read와 Write가 동시에 가능하다는 것입니다.

그럼 Channel에 대해서 살펴봅시다.

 

- Channel

Channel

위처럼 AXI에는 

Write에 사용되는 Write Address Channel, Write Data Channel, Write Response Channel
Read에 사용되는 Read Address Channel, Read Data Channel

총 5개의 독립적인 Channel이 존재합니다. 

 

이렇게 Channel들을 통해 Address나 Data가 전달될 때는 각 Channel에 존재하는 VALIDREADY Signal을 이용해서 HandShake과정을 거치게 되는데요.
HandShake는 악수죠.

즉, 보내는 쪽에서 보낼 준비가 됐다라고 VALID를 보내고 받는 쪽에서 받을 준비가 됐다라고 READY를 보내면
악수하듯이 HandShake가 이루어지게 됩니다. 

 

예를 들어

Master가 Write를 할 Address와 Data를 각각 Write Address Channel과 Write Data Channel을 이용해서 보내주고
Slave가 이 Address와 Data를 받아먹는 입장이죠. 

그리고 Slave는 Write가 잘 됐는지 안됐는지를 Write Response Channel을 통해 Master에게 보냅니다.

따라서 Write Address Channel과 Write Data Channel에서는
Master가 준비가 됐을 때 VALID를 보내고 Slave가 받을 준비가 됐을 때 READY를 보냅니다.

반대로 Write Response Channel에서는 보내는 쪽이 Slave이죠.
따라서 Slave가 준비가 되면 VALID를 보내고 Master가 받을 준비가 됐을 때 READY를 보냅니다.
Read Transfer시에도 마찬가지로 생각해보시면 아래처럼 되는게 이해가 되실거에요.

HandShake with VALID, READY

아래는 AXI에 존재하는 HandShake Signal들을 모아봤어요. 

AXI HandShake Signal


AXI의 대표적인 특징인 HandShake에 대해서 알아봤고 이제 Transfer를 알아볼텐데
사실 APB, AHB를 공부하면서 배운 Signal들과 겹치는 내용들이 좀 있습니다. 

따라서 Signal들에 대해서 따로 모아서 설명하지는 않고 Transfer Diagram을 보면서 어떻게 동작하는지 살펴보고
그 와중에 나오는 새로운 Signal들에 대해서 짚고 넘어가는 방식으로 해볼게요.

 

AHB에서 Performace를 위해 Transfer를 주루룩 하는 Burst Transfer에 대해서 배웠었죠.
AXI도 High Performance를 타겟으로 하는 Bus이기 때문에 Burst Transfer 기반인데 AXI Burst 동작을 한번 살펴봅시다.

참고로 AXI Burst관련 Signal들은 AHB Burst Signal과 동일하기 때문에 여기서는 따로 짚고 넘어가지 않을게요.

 

- Read Burst in AXI

Read Burst in AXI

자 먼저 앞서 살펴본 HandShake를 살펴볼까요?

ARVALIDARREADY가 HIGH가 되면서 Read Address Channel에서 HandShake가 일어나 Address가 전송되고
RVALIDRREADY가 HIGH가 될 때 Read Data Channel에서 HandShake가 일어나 Data가 전송되네요.

 

그리고 RLAST라는 처음보는 Signal이 보이는데이는 Burst Transfer 중 마지막 Transfer가 완료될 때 HIGH가 되어
Burst Transfer가 완료되었음을 알려주는 Signal입니다.

 

그런데 특이하게 Burst 동작으로 4개의 주소(ex. A, A+4, A+8 ...)에서 Read를 해올텐데
ARADDR를 보면 A하나만 덜렁 존재합니다.

이는 AHB에서의 Burst Transfer와의 차이점이기도 한데

AXI Bus에서는 Burst 시작 Address와 몇번의 Transfer를 할지의 Burst Length(ARLEN),
한번의 Transfer에서 몇 Byte를 Transfer할지의 Burst Size(ARSIZE)만 결정해주면
그에  맞게 알아서 Address를 계산하여 접근한답니다.

 

- Write Burst in AXI

Write Burst in AXI

Write Burst도 Read Burst에서 설명한 내용들과 크게 다를건 없어보이네요.

Read Burst에서 알아본 내용들을 Write Burst에서도 한번 확인해보시고
Write Transfer에서는 Write Response Channel에서 BVALID와 BREADY가 HandShake가 이루어지면서
Write가 어떻게 수행되었는지 알려주는 BRESP가 나타나는 것을 추가적으로 확인해볼 수 있습니다.


APB, AHB Bus를 살펴보고 와서 그런지 AXI Bus를 공부하면서 Diagram을 보고 이해하는 것도 많이 익숙해진 것 같다고 느껴지네요.

다음 포스트에서는 이번 포스트에 이어 AXI Bus에 대해 추가적인 특징들에 대해서 알아보도록 할게요.

고생하셨습니다 :)

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