고도의 eXtensible 인터페이스

Advanced eXtensible Interface

AXI(Advanced eXtensible Interface)는 [citation needed]ARM에 의해 개발된 온칩 통신 버스 프로토콜입니다.Advanced Microcontroller Bus Architecture 3(AXI3) 및 4(AXI4) [1]사양의 일부입니다.

AXI는 2003년에 AMBA3 사양으로 도입되었습니다.2010년, AMBA의 새로운 개정판인 AMBA4는 AXI4, AXI4-Lite 및 AXI4-Stream 프로토콜을 정의했습니다.AXI는 로열티가 없으며 사양은 ARM에서 자유롭게 구할 수 있습니다.

AMBA AXI는 많은 옵션 신호를 지정하며,[2] 이 신호는 설계의 특정 요건에 따라 선택적으로 포함할 수 있으므로 AXI는 다양한 애플리케이션에 사용할 수 있는 다목적 버스입니다.

AXI 버스를 통한 통신은 단일 이니시에이터와 단일 타깃 간의 통신이지만, 사양에는 더 많은 이니시에이터와 [3]타깃이 있는 토폴로지로 버스를 확장할 수 있는 N:M 인터커넥트를 포함하는 상세한 설명과 신호가 포함되어 있습니다.

AMBA AXI4, AXI4-Lite 및 AXI4-Stream은 Xilinx 및 많은 파트너에 의해 자사 [4][5]제품의 메인 통신 버스로 채택되었습니다.

스레드 ID

스레드 ID 를 사용하면, 1 개의 이니시에이터 포토가 복수의 스레드를 서포트할 수 있습니다.각 스레드는 AXI 주소 공간에 순서대로 액세스 할 수 있습니다만, 1 개의 이니시에이터 포토로부터 개시된 각 스레드 ID 는, 서로 순서가 어긋날 가능성이 있습니다.예를 들어 저속 페리페럴에 의해 1개의 스레드 ID가 차단되어 있는 경우, 다른 스레드 ID는 제1 스레드 ID의 순서와는 독립적으로 계속된다.또 다른 예에서는 CPU 상의 1개의 스레드에 특정 이니시에이터 포트 메모리액세스(read addr1, write addr1, read addr1)용 스레드 ID를 할당할 수 있습니다.각 트랜잭션의 이니시에이터 포트 스레드 ID가 같기 때문에 이 시퀀스는 순서대로 완료됩니다.CPU에서 실행 중인 다른 스레드에는 다른 이니시에이터 포트 스레드 ID가 할당되어 있을 수 있으며 메모리액세스도 순서대로 이루어지지만 첫 번째 스레드 ID 트랜잭션과 혼재될 수 있습니다.

이니시에이터 포트의 스레드 ID는 글로벌하게 정의되어 있지 않습니다.따라서 여러 이니시에이터 포트를 가진 AXI 스위치는 내부적으로 이니시에이터 포트 인덱스를 스레드 ID에 프리픽스하고 이 연결된 스레드 ID를 타깃 디바이스에 제공한 후 트랜잭션이 발신측 포트로 반환되면 이 스레드 ID 프리픽스를 사용하여 발신측 포트를 찾습니다.이니시에이터 포트 및 접두사가 잘립니다.따라서 타깃 포트 스레드 ID는 이니시에이터 포트 스레드 ID보다 비트 단위로 폭이 넓습니다.

Axi-lite 버스는 이니시에이터당 단일 ID 스레드만 지원하는 AXI 버스입니다.이 버스는 보통 한 번에 하나의 이니시에이터 디바이스(UART 등 단순한 주변기기)와 통신해야 하는 엔드 포인트에 사용됩니다.반면 CPU는 한 번에 여러 주변기기 및 주소 공간에 대한 트랜잭션을 시작할 수 있으며 AXI 이니시에이터 포트 및 AXI 타깃 포트에서 여러 스레드 ID를 지원합니다.이것이 CPU가 일반적으로 풀스펙 AXI 버스를 지원하는 이유입니다.프론트 사이드 AXI 스위치의 일반적인 예로는 CPU 이니시에이터에 연결된 풀 사양 AXI 이니시에이터와 다른 주변 장치로부터 AXI 스위치에 연결된 여러 AXI 라이트 타깃이 있습니다.

(또한 AXI-lite 버스는 트랜잭션당 단일 데이터 워드의 트랜잭션 길이만 지원하도록 제한된다.)

악수

AMBA AXI 프로토콜의 기본 핸드쉐이크 메커니즘.이 예에서는, 행선지 엔티티는, 자신의 READY를 아사트 하는 하이 VALID를 기다립니다.

AXI는 xVALID 및 xREADY [6]신호로 구성된 기본 핸드셰이크 메커니즘을 정의합니다.xVALID 신호는, 채널상의 payload가 유효하고, 그 클럭사이클로부터 판독할 수 있는 것을 행선지 엔티티에 통지하기 위해서 송신원에 의해서 구동됩니다.마찬가지로 xREADY 신호는 수신 엔티티에 의해 구동되며 데이터를 수신할 준비가 되었음을 알립니다.

xVALID 신호와 xREADY 신호가 모두 같은 클럭사이클에서 높을 경우 데이터 페이로드가 "전송된" 것으로 간주되며, 송신원은 높은 xVALID를 유지함으로써 새로운 데이터 페이로드 또는 xVALID를 할당 해제하여 전송을 종료할 수 있습니다.개별 데이터 전송, 즉 xVALID와 xREADY가 모두 높을 때의 클럭 사이클을 "비트"라고 합니다.

이들 신호의 제어에는 다음 2가지 주요 규칙이 정의되어 있습니다.

  • 소스는 xVALID를 아사트하기 위해 높은 xREADY를 기다릴 수 없습니다.
  • 일단 단서가 되면 핸드쉐이크가 발생할 때까지 송신원은 높은 xVALID를 유지할 필요가 있습니다.

핸드쉐이크 메커니즘에 의해, 송신원과 행선지 모두 데이터의 플로우를 제어해, 필요에 따라서 속도를 억제할 수 있습니다.

채널

AXI 사양에는 5개의 채널이 [7]설명되어 있습니다.

  • 주소 채널 읽기(AR)
  • 데이터 채널 읽기(R)
  • 주소 채널 쓰기(AW)
  • 데이터 쓰기 채널(W)
  • 쓰기 응답 채널(B)

몇 가지 기본적인 순서 [8]규칙을 제외하고 각 채널은 서로 독립적이며 자체적인 xVALID/xREADY 핸드쉐이크 신호를 [9]2개 가지고 있습니다.

AXI read channels
AXI 주소 읽기 및 데이터 읽기 채널.
AXI write channels
AXI 쓰기 주소, 쓰기 데이터 및 쓰기 응답 채널.

악시

신호.

주소 읽기 및 쓰기 채널의 신호
신호 설명 주소 채널 쓰기 주소 채널 읽기
주소 ID: 단일 채널 상의 여러 스트림을 식별합니다. AWID 건조.
버스트의 첫 번째 비트 주소 아와드 ARADR
버스트 내부의 비트 수 오렌지색[nb 1] 오렌[nb 1]
각 박자의 크기 AW AR사이즈
버스트 유형 폭발. 버스트
잠금 유형: 원자성 작업을 제공합니다. [nb 1] 키보드[nb 1]
메모리 유형, 시스템을 통해 트랜잭션이 진행되는 방법 캐시 아치형
보호 유형: 권한, 보안 수준 및 데이터/명령 액세스 AWPROT ARPROT
트랜잭션의 서비스 품질 AWQOS[nb 2] ARQOS[nb 2]
단일 물리 인터페이스에서 여러 논리 인터페이스에 액세스하기 위한 지역 ID 지역[nb 2] 지역[nb 2]
사용자 정의 데이터 AWUser[nb 2](아우유저) ARUser[nb 2](아루저)
xVALID 핸드쉐이크 신호 무효 무효
xREADY 핸드쉐이크 신호 준비 완료 준비 완료
데이터 읽기 및 쓰기 채널의 신호
신호 설명 데이터 쓰기 채널 데이터 채널 읽기
데이터 ID: 단일 채널에서 여러 스트림을 식별합니다. 와이드[nb 3] 리드
데이터 읽기/쓰기 데이터 데이터
Read response 현재 RDATA 신호의 상태를 지정합니다. RESP
바이트 스트로브: WDATA 신호의 어느 바이트가 유효한지를 나타냅니다. 무선
마지막 비트 식별자 마지막 마지막
사용자 정의 데이터 사용자[nb 2] 러서[nb 2]
xVALID 핸드쉐이크 신호 무효 무효
xREADY 핸드쉐이크 신호 준비 완료 준비 완료
쓰기 응답 채널의 신호
신호 설명 쓰기 응답 채널
응답 ID 쓰기: 단일 채널에서 여러 스트림을 식별합니다. 입찰
버스트 상태를 지정하기 위한 쓰기 응답 BRESP
사용자 정의 데이터 버스[nb 2]
xVALID 핸드쉐이크 신호 무효
xREADY 핸드쉐이크 신호 준비 완료

[10]

  1. ^ a b c d AXI3와 AXI4 사이의 다른 동작
  2. ^ a b c d e f g h i AXI4에서만 이용 가능
  3. ^ AXI3에서만 사용 가능

버스트

FIXED, INCR 및 WRAP 버스트의 예

AXI는 버스트 기반 프로토콜입니다.[11] 즉, 단일 요청에 대해 여러 데이터 전송(또는 비트)이 있을 수 있습니다.이것에 의해, 대량의 데이터를 특정의 주소의 패턴으로부터 전송 할 필요가 있는 경우에 편리합니다.AXI에서 버스트는 신호 ARBUST(읽기용) 또는 AWBUST(쓰기용)[12]에 의해 선택되는 세 가지 유형 중 하나입니다.

  • 고정된.
  • 인크루
  • 싼다

FIXED 버스트에서는, 전송내의 각 비트는 같은 주소를 가집니다.이것은, FIFO 를 읽거나 쓸 때 등, 같은 메모리 로케이션에서의 반복적인 액세스에 도움이 됩니다.

한편, INCR 버스트에서는, 각 비트에는, 앞의 것과 같은 주소와 전송 사이즈를 더한 주소가 있습니다.이 버스트 유형은 일반적으로 순차 메모리 영역을 읽거나 쓰는 데 사용됩니다.

WRAP 버스트는 INCR 버스트와 비슷합니다.각 전송에는 이전 주소와 전송 사이즈가 같기 때문입니다.그러나 WAP 버스트의 경우 현재 비트의 주소가 "높은 주소 경계"에 도달하면 "랩 경계"로 재설정됩니다.

와 함께

트랜잭션

읽는다

AXI 읽기 트랜잭션의 예.발신측은 INCR 타입의 주소 0x0부터4 비트(ARLEN + 1)를[13] 요구합니다.타겟은 주소 0x0에 대해 0x10, 주소 0x4에 대해 0x11, 주소 0x8에 대해 0x12, 주소 0xc에 대해 0x13을 모두 OK 상태로 반환합니다.여기서는 가장 관련성이 높은 신호만 보여 줍니다.

읽기 트랜잭션을 시작하려면 이니시에이터가 읽기 주소 채널에 다음을 제공해야 합니다.

  • ARADDR의 시작 주소
  • 버스트 타입(ARBUST 시 FIXED, INCR 또는 WRAP)
  • ARLEN의 버스트 길이(존재하는 경우)

또, 다른 보조 신호가 존재하는 경우는, 보다 구체적인 전송을 정의하기 위해서 사용됩니다.

통상적인 ARVALID/ARREADY 핸드쉐이크 후 타깃은 읽기 데이터 채널에서 다음을 제공해야 합니다.

  • RDA의 지정된 주소에 대응하는 데이터TA
  • RESP의 각 박자의 상태

기타 옵션 신호도 사용할 수 있습니다.타깃 응답의 각 비트는 RVALID/RREADY 핸드쉐이크로 이루어집니다.마지막 전송에서는 타깃이 RLAST를 아사트하여 새로운 읽기 요청이 없으면 더 이상 비트가 이어지지 않음을 알려야 합니다.

기입

AXI 쓰기 트랜잭션의 예.이니시에이터 드라이브는 INCR 타입의 주소 0x0부터 시작하여 주소 0x10, 주소 0x4의 경우 0x11, 주소 0x8의 경우 0x12, 주소 0x13으로 각각 4바이트씩[13] 비트를 칩니다.대상은 전체 트랜잭션에 대한 쓰기 응답으로 '확인'을 반환합니다.여기서는 가장 관련성이 높은 신호만 보여 줍니다.

쓰기 작업을 시작하려면 이니시에이터가 주소 정보와 데이터 정보를 모두 제공해야 합니다.

주소 정보는 읽기 작업과 유사한 방식으로 쓰기 주소 채널을 통해 제공됩니다.

  • 시작 주소는 AWADDR로 제공되어야 합니다.
  • 버스트 타입(AWBUST 시 FIXED, INCR 또는 WRAP)
  • AWLEN의 버스트 길이(존재하는 경우)

모든 옵션 신호(존재하는 경우)가 있습니다.

이니시에이터는 데이터 쓰기 채널의 지정된 주소와 관련된 데이터도 제공해야 합니다.

  • WDA에 관한 데이터TA
  • 개별 WDATA 바이트를 조건부로 '유효' 또는 '무효'로 마크하는 WSTRB의 '스트로브' 비트(존재하는 경우)

읽기 길에서나 마찬가지로 마지막 데이터 말에, WLAST이 발기인이 주장하여야 한다.

둘 다 거래의 완성 후, 목표는 발기인에Write 응답 채널은 BRESP 신호에 걸쳐 그 결과적으로 쓰기의 상태를 보내.

AXI4-Lite

그 AXI4 프로토콜의 AXI4-Lite 하위 집합이며 할인 기능과 복잡성과register-like 구조를 제공하고 있다.[14]주목할 만한 차이가 있습니다.

  • 모든 폭발 1로 이겼다로 구성된다.
  • 모든 데이터 액세스 하는 될 수 있는 32개나 64비트가 전체 데이터 버스 폭을 사용한다.

AXI4-Lite지만 남은 이들의 AXI4 명세를 따르는 AXI4 신호의 일부를 제거합니다.AXI4의 하위 집합이므로, AXI4-Lite 거래 완전히 AXI4들을 가지고 AXI4-Lite 주관자와 AXI4 목표 사이의 추가 전환 논리 없이 상호 운용성을 허용하게 호환됩니다.[15]

신호.

채널 주소를 써라 데이터 채널 써라 응답 채널 써라 채널 주소를 읽으세요 데이터 채널을 읽어라
무효 무효 무효 무효 무효
준비 완료 준비 완료 준비 완료 준비 완료 준비 완료
아와드 데이터 BRESP ARADR 데이터
AWPROT 무선 ARPROT RESP

[16]

AXI-스트림

「 」를 참조해 주세요.

레퍼런스

  1. ^ "AMBA Documentation". Arm Holdings.
  2. ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 109–118. Retrieved 5 July 2019.
  3. ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 23–24. Retrieved 5 July 2019.
  4. ^ "AMBA AXI4 Interface Protocol". www.xilinx.com. Xilinx Inc.
  5. ^ "AXI4 IP". www.xilinx.com. Xilinx Inc.
  6. ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 37–38. Retrieved 5 July 2019.
  7. ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 22–23. Retrieved 5 July 2019.
  8. ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 40. Retrieved 5 July 2019.
  9. ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 38. Retrieved 5 July 2019.
  10. ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 28–34. Retrieved 5 July 2019.
  11. ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 22. Retrieved 5 July 2019.
  12. ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 45–47. Retrieved 5 July 2019.
  13. ^ a b Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 44. Retrieved 5 July 2019.
  14. ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 121–128. Retrieved 5 July 2019.
  15. ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 124. Retrieved 5 July 2019.
  16. ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 122. Retrieved 5 July 2019.

외부 링크