2016-08-30 6 views

답변

1

읽기와 쓰기가 약간 씩 다릅니다.

읽기의 경우 (단순한 경우) 단일 트랜잭션은 RA 채널의 일부 주소를 요청하는 마스터와 해당 주소의 데이터 (R 채널의)로 응답하는 슬레이브 또는 오류로 구성됩니다 . 슬레이브의 응답은 여러 비트에 걸쳐있는 "버스트 (burst)"의 형태를 취할 수 있습니다. 요청 및 응답은 많은 클럭 사이클에 의해 분리 될 수있다 (실제로 일반적으로 임). 한 가지 이유는 요청 된 주소에서 데이터를 검색하기 위해 슬레이브가 일부 작업을 수행해야하는 경우가 종종 있으며,이 작업에는 여러 클럭 사이클이 걸릴 수 있습니다.

예를 들어 마스터가 슬레이브에서 64 바이트의 데이터를 읽으 려한다고 가정 해보십시오. 전체 단일 트랜잭션은 이러한 64 바이트 데이터를 요청하고 가져 오는 것으로 구성됩니다. 그러나 데이터를 전송하기위한 데이터 버스가 16 바이트라고 가정하십시오. (더 넓어지면 더 많은 공간을 차지합니다.)이 경우, 슬레이브는 한 번에 마스터의 16 바이트 데이터 만 보낼 수 있습니다. 따라서 64 바이트를 모두 얻으려면 마스터는 한 번에 16 바이트의 데이터를 4 번 요청하여 총 64 바이트를 요청합니다 (일반적으로). 이 전체 프로세스에는 단일 요청 (RA 채널에서)과 네 개의 응답 (R 채널에서)이 필요하며 각각 16 바이트의 응답을 제공합니다.

일반적으로 RA 요청과 R 응답 데이터의 첫 번째 비트 사이에는 많은 클럭 사이클이 경과합니다. 후속 R 비트는 첫 번째 R 비트 이후의 후속 사이클에 종종 도착하지만, 필수는 아닙니다. 실제 요청/응답은 마스터/슬레이브간에 성공적인 AXI 핸드 셰이크가있을 때만 발생하며, 각 에이전트는 준비가되었을 때 각 에이전트가 상대방에게 알릴 수 있습니다.

쓰기 상황은 비슷합니다. 하나의 트랜잭션은 WA 채널에 쓸 주소를 보내는 마스터와 W 채널에 쓸 데이터를 단일 트랜잭션으로 구성한 다음 B에서 슬레이브의 응답을 기다리고 있습니다 채널. 다시 말하지만, 데이터 버스의 너비가 허용하는 것보다 많은 바이트를 쓰고 싶다면 여러 비트에 걸쳐 쓰기 데이터를 분할해야 할 수도 있습니다.이 비트는 여전히 모든 단일 트랜잭션의 일부입니다.