Verilog

[Verilog] AMBA, APB Protocol

hipensan 2024. 12. 23. 14:24
반응형

공부한 것을 정리하려고 쓰는 글.

 

AMBA 프로토콜들에 대해서 공부해 보려 한다.

 

먼저, 

 

AXI4

AHB

APB

 

로 크게 나뉘는데, 가장 간단한 APB 를 먼저 볼 것이다.

 

데이터시트는 여기서 확인하자.

 

AMBA APB Protocol Specification

 

Documentation – Arm Developer

 

developer.arm.com

 

기본 타이밍 다이어그램

 

Specification 문서를 읽으며 진행한다.

 

1. APB interface에 대해

The APB protocol is a low-cost interface, optimized for minimal power consumption and reduced interface complexity. The APB interface is not pipelined and is a simple, synchronous protocol. Every transfer takes at least two cycles to complete.

-> APB 프로토콜은 저렴하고, 최소한의 전력 소모 및 인터페이스 복잡성을 줄인, 최적화시킨 프로토콜이 되겠다.

파이프라인 되지 않고, 간단하며, 동기식 프로토콜이다. 각 전송은 완료까지 최소 2사이클이 걸린다.

 

2. 사용하는 신호들

* 문서의 앞쪽에 보면 나오겠지만, n이 붙으면 Active-LOW 라는 뜻이다.

한 번 사용하는 신호들을 살펴보자. 

1. 클럭 : (모든 APB 신호들은 posedge clk 으로 동작한다)

2. 리셋 신호 : (Active-LOW)

3. 주소 : (32비트까지 확장 가능, 바이트 주소를 가리킴(다른 곳에서 사용하는 그것과 동일))

4. 프로텍션 타입 : (3-27장에 나오니 나중에 보도록 한다.) + 프로텍션 타입 확장

5. PSELx : (슬레이브 선택 신호)

6. PENABLE : (전송 활성화 신호)

7. PWRITE : (1일 때 write, 0일 때 read)

8. PWDATA : (PWRITE = 1일 때 전송되는 데이터. 8비트, 16비트, 32비트 크기로 지정 가능)

9. PSTRB : 스트로브 신호는 바이트 단위로 쓸 지 결정하는 신호다. 한 메모리 row가 32-bit 로 구성되면, 4개로 나누어 진다.

10. PREADY : 버스가 준비된 상태인지, 현재 work 상태인지 알리기 위함.

11. PRDATA : PWRITE = 0일 때 버스에서 받아올 값

12. PSLVERR : slave error. 슬레이브에서 보내는 에러 신호

13. PWAKEUP : APB 인터페이스와 어떤 활동이라도 있으면 알려주는 신호인듯 함.

14. PAUSER / PWUSER / PRUSER / PBUSER(Optional) : 사용자 정의 신호

 

2-1. Address bus

An APB interface has a single address bus, PADDR, for read and write transfers. PADDR indicates a byte address.

PADDR is permitted to be unaligned with respect to the data width, but the result is UNPREDICTABLE. For example, a Completer might use the unaligned address, aligned address, or signal an error response.

-> APB 인터페이스를 PADDR 하나로 주소를 모두 표현한다. 또한 바이트 주소를 가리킴.

 PADDR은 데이터 폭에 따라 정렬되지 않은 주소(0x001, 0x002, 0x003)를 사용할 수 있지만, 그 결과는 예측할 수 없다.

슬레이브가 비정렬된 주소를 사용할 수 있지만, 이를 처리하는 방식이 명확하지 않기 때문이다.

 

2-2. Data bus

The APB protocol has two independent data buses, PRDATA for read data and PWDATA for write data,. The buses can be 8 bits, 16 bits, or 32 bits wide. The read and write data buses must have the same width. Data transfers cannot occur concurrently because the read data and write data buses do not have their own individual handshake signals.

-> Write/Read에 사용되는 2개의 독립적인 데이터 버스가 있고, 8비트 / 16비트 / 32비트로 사용 가능하다. 데이터 전송은 동시에 사용되면 안되는데, 각각의 핸드셰이크 신호가 없기 때문임.

 

 


 

3.1 Write Transfer

- with no wait state

1 : PSEL이 high 가 되었을 때, PADDR, PWRITE, PWDATA 가 유효한 값을 가지고 있어야 함.

2 write transfer Access phase : T2에서 PENABLE 이 high, 슬레이브가 PREADY high를 보내서 데이터 수신 준비가 완료되었음을 알려야 함. / 다른 제어 신호들은 전송이 완료될 때 까지 안정적이어야 함(자기 값을 유지해야 함)
3 : 전송 완료시 PENABLE 비활성화, PSEL 비활성화(같은 슬레이브에 대해 추가 전송이 있으면 계속 활성화 될 수 있음)

 

 

- with wait state

1 : Access 단계 동안 PENABLE 신호가 high 상태일 때, 슬레이브가 PREADY 를 LOW 로 설정해 전송을 연장할 수 있음.

-> 이는 슬레이브가 데이터 처리 / 수신 준비 되지 않은 상태임을 알리는 방법

2: PREADY 가 LOW 인 동안 유지되는 신호

PADDR

PWRITE

PSELx

PENABLE

PWDATA

PSTRB

PPROT

PAUSER

PWUSER

 

PREADY 는 PENABLE = 0이면 어떤 값을 가져도 상관 없다(Don't care).

고정된 2클럭 주기로 동작하는 슬레이브는 PREADY 를 항상 HIGH 로 고정시킬 수 있다.

 

 

 

3.2 Write strobe

- 각 바이트를 지정해서 들고오는 형태임.

- 읽기 동작에서는, 모든 PSTRB 가 LOW 가 되어야 함

 

 

 

3.3 Read transfer

- with no wait state

: PADDR, PSEL, PENABLE 은 write 할 때와 동일하게 동작.

PWRITE 의 경우 0일 때 read 이므로 이것만 다름.

슬레이브가 읽기 시에 가장 마지막에 데이터를 제공해야 함.

 

 

 

 

- with wait state

write 할 때와 다른 점은, PWRITE와 PRDATA 밖에 없다.

PWRITE = 0이여야 read,

PRDATA : 마지막 데이터만 마스터가 가져옴. (한 클럭 동안 ready signal 이 high)

 

 

 

 

3.4 Error response

PSLVERR : 전송에 있어서 에러가 발생했는지를 알려주기 위해 사용되는 신호.

APB 전송의 마지막 사이클에서만 valid 한지를 판단한다. (PSEL, PENABLE, PREADY 모두 high)

 

권장 사항(필수는 아님) : PSEL, PENABLE 이 LOW인 경우 / PREADY가 LOW인 경우 -> PSLVERR이 LOW로 유지되는게 권장

 

지원 여부 : 슬레이브가 PSLVERR 지원하지 않는 경우, 마스터로 전달되는 PSLVERR 입력은 LOW 로 고정

없어도 잘 동작한다.

 

다른 프로토콜들과의 브릿징 할 때 매핑하는 방법도 있는데 넘어가도록 함.

 

 

 

3.5 Protection unit support

  HIGH(1) LOW(0)
PROT[0] normal privilege
PROT[1] non-secure secure
PROT[2] instruction data

 

보안 및 접근 제어 관련된 신호임. 미구현 해도 동작에는 지장 X

 

 

3.6 Wake-up signal

- APB5 protocol interface 에만 추가되어 있음

- PWAKEUP은 저전력 설계 지원, 데드락 방지, 트랜잭션 지연 최소화 등을 위해 추가됨

 

모든 슬레이브가 항상 활성 상태라면 PWAKEUP 은 불필요.

 

 

 

유저 신호는 패스.

 

 


 

4.1 Operating state

IDLE : PSELx, PENABLE 비활성 상태

SETUP : PSELx 신호 활성화, SETUP 상태는 1클럭 동안 유지, 다음 rising edge 에서 ACCESS 로 자동 전환

ACCESS : 실제 데이터 전송이 이루어짐. (PENABLE 신호에 따름)

 

SETUP -> ACCESS 전환 시 변경되지 않아야 하는 신호

1. PADDR

2. PPROT

3. PWRITE

4. PWDATA

5. PSTRB

6. PAUSER

7. PWUSER

 

ACCESS 에서 PREADY 가 1이 되면 전송 종료

 

 

 


 

 

 

 

 

 

 

 

반응형