지난 챕터에서 SoC를 이루는 3요소로 프로세서, 페리프럴, 버스를 소개했습니다.
이 요소들을 인체기관으로 빗대어보어 각기 대응하면 뇌, 감각·운동기관, 신경기관이라고 소개했었습니다.
- 코어가 명령을 내리고 페리프럴에게 잘 전달하고, 페리프럴이 연산을 수행한 후, 그에 대한 리스폰스를 다시 코어에게 전달하는데 이 때마다 전달을 할 수 있게 해주는 역할이 바로 '버스'입니다.
만일, 버스가 없다면 프로세서와 페리프럴이 1:1 대응을 하여 모든 입력과 출력이 동작하게 될 것입니다. 그렇게 된다면 프로세서에서 처리할 인풋과 아웃풋이 매우 많아지겠죠. 하지만 이 때 버스를 이용한다면 공통적인 패스(Path)를 만들기 때문에, 그러한 1:1 대응을 할 필요가 없어지게 된다는 것입니다.
Master | Read / Write를 시작하는 지점 [Processor] |
Slave | 마스터의 요청을 받아 데이터를 R/W하는 지점. [Memory, UART, etc.] |
Decoder | 마스터의 요청이 어떠한 Slave를 타켓으로 하는지를 결정해줍니다. |
Mux | Slave 1, 2, 3에서 출력이 나올 수 있다. 마스터가 요청한 한 데이터를 받아야 하는데 어떠한 신호를 선택하여 마스터에 전달해야 하는지를 결정하는 것을 Mux라고 합니다. |
Control | 버스가 운용될 수 있도록 W/R 혹은 전송의 단위가 byte / word / half word인지와 같은 것을 결정하는 라인입니다. |
Data | Write일 경우 마스터가 데이터를 전달할 것이고, Slave가 Read할 경우 Slave가 데이터를 전달할 것입니다. |
Addr | 마스터가 슬레이브를 선택할 때 활용하는 것. 프로세서에서 전달하는 주소. 이를 기반으로 메모리 맵에 맵핑이 됩니다. |
ex) Master → Slave
마스터에서 addr을 주면 어떠한 Slave를 타겟으로 하는지를 알려줘야 하는 담당을 Decoder가 하는데 addr을 받아 해당 addr를 해석하여 Memory Map을 기반으로 해 타겟을 정합니다. ex) Slave 1이 0x0~0x10, Slave 2가 0x11~0x20, Slave 3이 0x21~0x30을 차지한다고 가정을 해봅니다. addr가 0x15일 때는 slave 1과 slave 3에는 0을 넣고 slave 2에만 1을 넣어 ctrl, data, addr을 받을 수 있도록 합니다.
ex) Slave → Master
세 Slave에서 하나만의 Source를 선택해 Master로 전달해줘야 합니다. 이를 결정하기 위해 Decoder에서 활용했던 addr를 Mux로 신호를 보냅니다.
AMBA : Advanced Microcontroller Bus Architecture
) AMBA1에서부터 차례로 업데이트 한 순서.
- AXI는 대용량 버스입니다.
- AHB는 기본적으로 멀티 버스를 지원합니다. 마스터가 한 개 이상이여서 코어, DSP 엔진 등이 될 수 있다는 장점이 있습니다.
[Slave에서의 시그널]
asdasdasd
- 슬레이브는 마스터에 의해 전달받은 값을 수행합니다.
- HSELx 신호는 어드레스 디코더의 아웃풋이며 한 번에 한 슬레이브를 택해야만 합니다.
[Master에서의 시그널]
- 마스터는 R/W을 수행하기 위해 Addr, Data, Control 신호를 제공하게 됩니다.
- 또한, 슬레이브로부터의 반응을 받는데 이 시그널에는 데이터, 레디, 리스폰스가 포함됩니다.
[Decoder에서의 시그널]
- 현재 어드레스 버스에 따른 선택할 슬레이브에 대한 신호를 내보냅니다. 또한 Mux에도 전달하게 됩니다.
- Then, 왜 Master에서는 수많은 신호가 있었는데 디코더에는 존재하지 않는지?
=> CLK에 따른 값을 출력하는 것이 아닌 단순 입력에 대해 값을 출력하는 것이기 때문에 다른 신호는 필요로 하지 않습니다.
[Slave Mux에서의 시그널]
- HRDATA와 RESPONSE를 하나의 입력으로 받고 어느 신호를 택해야할지를 Decoder에서 나온 Select 신호로 판별하여 아웃풋을 결정하여 내보내게 됩니다.
[AHB Lite Signal List]
- 마스터에서 다시 마스터로 돌아오기까지 한 사이클이 아닌 두 사이클이다.
Address Phase = Master → Slave
Data Phase = Slave → Master
'IDEC > Cortex - M0' 카테고리의 다른 글
6. VGA Peripheral (1) (0) | 2023.07.20 |
---|---|
5. Timer / GPIO / 7-Segment Peripherals (0) | 2023.07.19 |
4. AHB UART Peripheral (0) | 2023.07.19 |
2. Cortex-M0 Overview / Register (0) | 2023.07.14 |
1. SoC란 무엇인가? (0) | 2023.07.14 |