고도의 eXtensible 인터페이스
Advanced eXtensible InterfaceAXI(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
이 섹션은 어떠한 출처도 인용하지 않습니다.(2020년 5월 (이 및 타이밍 ) |
스레드 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 버스는 트랜잭션당 단일 데이터 워드의 트랜잭션 길이만 지원하도록 제한된다.)
악수
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개 가지고 있습니다.
악시
신호.
| 신호 설명 | 주소 채널 쓰기 | 주소 채널 읽기 |
|---|---|---|
| 주소 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 핸드쉐이크 신호 | 준비 완료 |
버스트
AXI는 버스트 기반 프로토콜입니다.[11] 즉, 단일 요청에 대해 여러 데이터 전송(또는 비트)이 있을 수 있습니다.이것에 의해, 대량의 데이터를 특정의 주소의 패턴으로부터 전송 할 필요가 있는 경우에 편리합니다.AXI에서 버스트는 신호 ARBUST(읽기용) 또는 AWBUST(쓰기용)[12]에 의해 선택되는 세 가지 유형 중 하나입니다.
- 고정된.
- 인크루
- 싼다
FIXED 버스트에서는, 전송내의 각 비트는 같은 주소를 가집니다.이것은, FIFO 를 읽거나 쓸 때 등, 같은 메모리 로케이션에서의 반복적인 액세스에 도움이 됩니다.
한편, INCR 버스트에서는, 각 비트에는, 앞의 것과 같은 주소와 전송 사이즈를 더한 주소가 있습니다.이 버스트 유형은 일반적으로 순차 메모리 영역을 읽거나 쓰는 데 사용됩니다.
WRAP 버스트는 INCR 버스트와 비슷합니다.각 전송에는 이전 주소와 전송 사이즈가 같기 때문입니다.그러나 WAP 버스트의 경우 현재 비트의 주소가 "높은 주소 경계"에 도달하면 "랩 경계"로 재설정됩니다.
와 함께
트랜잭션
읽는다
읽기 트랜잭션을 시작하려면 이니시에이터가 읽기 주소 채널에 다음을 제공해야 합니다.
- ARADDR의 시작 주소
- 버스트 타입(ARBUST 시 FIXED, INCR 또는 WRAP)
- ARLEN의 버스트 길이(존재하는 경우)
또, 다른 보조 신호가 존재하는 경우는, 보다 구체적인 전송을 정의하기 위해서 사용됩니다.
통상적인 ARVALID/ARREADY 핸드쉐이크 후 타깃은 읽기 데이터 채널에서 다음을 제공해야 합니다.
- RDA의 지정된 주소에 대응하는 데이터TA
- RESP의 각 박자의 상태
기타 옵션 신호도 사용할 수 있습니다.타깃 응답의 각 비트는 RVALID/RREADY 핸드쉐이크로 이루어집니다.마지막 전송에서는 타깃이 RLAST를 아사트하여 새로운 읽기 요청이 없으면 더 이상 비트가 이어지지 않음을 알려야 합니다.
기입
쓰기 작업을 시작하려면 이니시에이터가 주소 정보와 데이터 정보를 모두 제공해야 합니다.
주소 정보는 읽기 작업과 유사한 방식으로 쓰기 주소 채널을 통해 제공됩니다.
- 시작 주소는 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 |
AXI-스트림
이 섹션은 확장해야 합니다.여기에 추가하시면 도움이 됩니다. (2021년 7월) |
「 」를 참조해 주세요.
레퍼런스
- ^ "AMBA Documentation". Arm Holdings.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 109–118. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 23–24. Retrieved 5 July 2019.
- ^ "AMBA AXI4 Interface Protocol". www.xilinx.com. Xilinx Inc.
- ^ "AXI4 IP". www.xilinx.com. Xilinx Inc.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 37–38. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 22–23. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 40. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 38. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 28–34. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 22. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 45–47. Retrieved 5 July 2019.
- ^ a b Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 44. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. pp. 121–128. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 124. Retrieved 5 July 2019.
- ^ Arm Holdings. "AMBA AXI and ACE Protocol Specification" (PDF). developer.arm.com. p. 122. Retrieved 5 July 2019.