2012. 4. 16. 22:30

AMBA AXI PROTOCOL v1.0 - BASIC TRANSACTIONS I

오늘은 READ BURST, OVERLAPPING READ BURST, WRITE BURST 트랜잭션의 타이밍 다이어그램을 살펴보도록 합시다.

 

1.3 Basic transactions
This section gives examples of basic AXI protocol transactions. Each example shows
the VALID and READY handshake mechanism. Transfer of either address information
or data occurs when both the VALID and READY signals are HIGH. The examples are
provided in:
• Read burst example
• Overlapping read burst example
• Write burst example

 
1.3.1 Read burst example
Figure 1-4 shows a read burst of four transfers. In this example, the master drives the
address, and the slave accepts it one cycle later.

- Note -

 The master also drives a set of control signals showing the length and type of the burst, but these signals are omitted from the figure for clarity.

After the address appears on the address bus, the data transfer occurs on the read data
channel. The slave keeps the VALID signal LOW until the read data is available. For
the final data transfer of the burst, the slave asserts the RLAST signal to show that the
last data item is being transferred.

 

AXI BUS PROTOCOL은 AHB BUS PROTOCOL과 마찬가지로 모든 시그널은 RIGING EDGE에서 샘플링됩니다. 그리고 각 시그널에 대한 레퍼런스는 AMBA AXI PROTOCOL v1.0 SPEC P.31의 SIGNAL DESCRIPTION에 설명되어 있습니다.

위의 타이밍 다이어그램을 살펴보면, 모든 시그널의 샘플링을 전역으로 참조할 수 있도록 ACLK이 있고 녹색으로 표시된 부분은 마스터가 슬레이브에게 보내는 시그널이며 파란색으로 표시된 부분은 슬레이브가 마스터에게 보내는 시그널을 의미합니다(혼돈하기 쉽기 때문에 표시하였습니다). 그리고 각 시그널에는 AR, AW, R, W와 같이 시그널 앞에 PREFIX가 붙어 있는데요. AR은 "Read Address"를 뜻하고 AW는 "WRITE ADDRESS"를 의미합니다. 그냥 R과 W는 DATA에 대한 R/W를 말합니다. 몇 가지 예를 들어보도록 하겠습니다.

ARADDR = READ ADDRESS (FROM MASTER TO SLAVE)

RDATA   = READ DATA (FROM MASTER TO SLAVE)

RREADY = READ DATA READY (FROM SLAVE TO MASTER)

위와 같이 해석합니다. 전혀 어렵지 않죠? READ BRUST 동작은 간단합니다. 버스의 모든 동작은 항상 마스터가 아비터로부터 버스 사용 권한을 획득하여 컨트롤 시그널과 어드레스 시그널을 슬레이브에게 보냄으로써 시작됩니다. 컨트롤 시그널은 버스트 타입, 크기, 길이와 같은 정보들을 포함하고 있으며 어드레스 시그널은 특정 SLAVE의 주소 공간을 의미합니다. 그렇다면 MASTER가 여러 개의 SLAVE가 존재하는 버스에서 R/W할 대상 SLAVE는 어떻게 선택할까요?

그 해답은 아래와 같이 AXI PROTOCOL 특징에 설명되어 있습니다.

 

In memory mapped AXI (AXI3, AXI4, and AXI4-Lite), all transactions involve the concept
of a target address within a system memory space and data to be transferred.
Memory mapped systems often provide a more homogeneous way to view the system,
because the IPs operate around a defined memory map.

(AXI REFERENCE GUIDE P.11 - MEMORY MAPPED PROTOCOLS)

 

따라서, AMBA BUS를 사용하는 모든 IP들은 하나의 메모리 레이아웃으로 맵핑되어 있기 때문에 어떤 SLAVE인지는 관심가질 필요가 없으며 단지 SLAVE 영역에 해당하는 어드레스에 접근하기만 하면 됩니다.

 

첫 번째 T0에서 T1 사이클을 보면, 마스터가 슬레이브로 읽는 동작이 유효할 경우 ARVALID 시그널을 HIGH로 트랜지션합니다. 그 직후 바로 해당 슬레이브의 ADDRESS로 ISSUE(ISSUE는 보낸다는 의미)합니다. 언제까지 ISSUE할까요? 물론 SLAVE가 ARREADY 시그널이 HIGH로 트랜지션할 때까지 말이죠. T2 사이클에 ARREADY의 시그널이 HIGH로 샘플링됨과 동시에 ARVALID와 ARADDR이 LOW로 TRANSTION합니다(첫 번째 빨간 박스). T3에서 T4 사이클을 보면 RREADY 시그널이 HIGH로 되어 있는데 즉, 마스터는 이미 데이터를 받을 준비가 되어 있는 상태임을 알 수 있습니다. T5에서 T6 사이클에서 슬레이브가 마스터에게 보낼 데이터가 유효하다는 RVALID - HIGH 시그널을 보내고 바로 DATA를 전송함으로써 RREADY가 LOW로 트랜지션되는 것을 볼 수 있습니다. 이후 똑같은 과정으로 모든 데이터 전송을 진행하다가 마지막 DATA TRANSFER를 보낼 때 마지막이라는 것을 슬레이브가 마스터에게 알리기 위해 RLAST 시그널을 전송함으로써 하나의 버스트 트랜잭션을 완료합니다(세번 째 빨간 박스). 오늘은 READ BURST까지만 정리하고 다음 시간에는 OVERLAPPING READ BURST, WRITE BURST의 WAVEFORM을 살펴 보도록 하겠습니다.

 

Written by Simhyeon, Choe