본문 바로가기
인터페이스/AMBA 인터페이스

[SoC] AMBA 인터페이스란?

by RTLog 2024. 3. 28.
728x90
반응형

안녕하세요. RTLog입니다. 

이 카테고리에는 AMBA 인터페이스에 대해 공부하고, 구현을 하려고 합니다. (가지고 있는 FPGA 보드가 AXI 인터페이스만 지원해서, 보드를 사용한 실습은 AXI만 가능할 듯 싶습니다.) 

오늘은 AMBA 인터페이스에 대한 Overview 느낌으로 작성해볼까 합니다. 

 

AMBA 인터커텍트/인터페이스 

AMBA History

 

"The Advanced Microcontroller Bus Architecture (AMBA) specification defines an on-chip communications standard for designing high-performance embedded microcontrollers."

 

ARM의 AMBA(Advanced Microcontroller Bus Architecture)는 SoC설계에 사용되는 On-Chip 통신 프로토콜 스펙으로, SoC에서 활용되는 BUS 인터페이스라고 생각하시면 됩니다. AMBA는 SoC 내의 블록들을 연결하여 프로세서, 메모리 컨트롤러, Peripherals 및 Accelerator와 같은 다양한 구성 요소 간의 효율적인 통신을 가능하게 합니다.

 

SoC의 구성 요소에는 MCU, DSP, Memory, DMA, USBs, SPI, I2C, Timer 등이 포함될 수 있는데요. 이런 블럭들을 연결하는데 쓰인다고 생각하시면 됩니다. 아래는 SoC 구조 샘플인데요. 확인할 수 있는 ASB/AHB/APB는 대표적인 AMBA 인터페이스입니다. 

Microcontroller -based system on a chip (Wiki)

 

Key AMBA Specification

AMBA2와 AMBA4에서 가장 대표적인 인터페이스인 APB, AHB, AXI에 대해 다룰 생각입니다. CHI (Coherent Hub Interface)와 ACE(AXI coherency Extensios)에 대해서도 언젠가 공부해보겠습니다.

AMBA2

위에 있는 그림에는 ASB(Advanced System Bus)가 빠져있는데요. AMBA1에서는 ASB, APB (Advanced Peripehral Bus)가 제안되었고, AMBA2에서는 AHB(Advanced High-performance Bus)가 추가로 제안되었습니다. ASB는 최근에 거의 사용되지 않아 생략된 것으로 보입니다. 

  • APB (Advanced Peripehral Bus)
    • up to 32-bit data transfer 
    • low-power consuption 
    • latched address and control
    • interface which are memory-mapped reigsters/programmed control
    • no high-bandwidth interfaces

AMBA APB는 SoC에서 저전력 peripheral들을 연결하도록 설계되었습니다. 파이프라이닝 & Burst 동작이 구현되지 않아, 낮은 클럭 주파수로 동작하는 Peripheral들의 Programmable Register를 제어하기 위한 용도로 많이 사용됩니다. 

  • AHB(Advanced High-performance Bus)
    • up to 64-bit data transfer
    • multiple bus masters
    • bursts transfer 
    • split transactions
    • pipelined operation

AMBA AHB는 SoC에서 고성능, 높은 클록 주파수로 동작하는 블록들을 연결하도록 설계되었습니다. AHB는 processor, on-chip memory , DMA(Direct Mermoy Access) 및 기타 고성능 peripheral과의 연결을 지원합니다.  파이프라이닝 & 버스트 동작이 구현되어 고속으로 데이터를 송수신할 수 있습니다. 

 

AMBA2

 

AHB와 APB 그리고 AXI 등의 인터커넥트가 존재할 때, 스펙이 다른 인터커넥트들의 연결을 위해서 "Bridge"를 사용합니다. 연결하는 버스 표준에 따라, AHB to APB Bridge, APB to AHB Bridge, AXI to APB Bridge 등 다양한 Bridge가 존재합니다.

 

APB 인터페이스에서 Bridge는 Master가 되고 각 Peripheral들은 Slave가 되며, 모든 Peripheral들은 같은 시그널을 공유하여 통신합니다. 속도가 느릴 수 밖에 없겠죠 (Single Master, Multi Slave). 반면, AHB는 Multi-Master, Multi-Slave 컨셉을 지원합니다.  

 

AMBA4

AMBA4에서는 최근 가장 많이 사용되고 있는 AXI4(Advanced eXtensible Interface)가 제안되었습니다. AXI는 기본 프로토콜 외에도, AXI-Lite & AXI-Stream도 함께 개발되어 사용되고 있습니다. AXI는 AHB보다 높은 성능으로, 높은 주파수로 동작하는 블럭들과 연결 될 수 있습니다.

 

AXI4-Lite가 APB와 비슷한 포지션이고, AXI가 AHB와 비슷한 포지션인데요. 최근에는 AHB보다 AXI를 사용하고 Peripheral들은 APB로 제어하는 추세인 것 같습니다. (AXI가 APB/AHB에 비해 요구하는 리소스가 큽니다) 물론, Master/Slave 개수, Bit-Width 등 고려해야할 사항에 따라 달라지겠지만요. ARM Core에 따라서는, Cortex-A or Cortex-R Series이면, AXI/AHB/APB를 사용하여 설계하고 Cortex-M이면 AHB/APB를 사용하여 설계합니다 

 

  • AXI(Advanced eXtensible Interface)
    • up to 256-bit data transfer
    • multiple outstanding transactions
    • separate read/write channel
    • burst transactoin 

AXI & AHB & APB BUS Architecture

 

아래 링크는 APB/AHB/AXI 인터페이스를 카테고리별로 비교한 내용인데요. 참고해주세요. 

https://medium.com/@mohansardar76/amba-protocol-apb-ahb-axi-0f9dd07321ee

 

AMBA Protocol: APB/AHB/AXI

What is AMBA protocol?

medium.com

 

감사합니다. 

728x90
반응형