모듈 1: 마스터
모듈 2: 슬레이브
1. 모듈 구조와 신호 정의
모듈 1: 마스터 (Master)
- 역할: 데이터를 생성한다. 슬레이브로 전송을 시작하는 모듈이다.
- 신호:
- PSEL: 슬레이브 선택 신호이다 (1: 선택됨, 0: 선택 안됨).
- PENABLE: 데이터 전송의 두 번째 단계(Access Phase)를 나타낸다 (1: 활성화, 0: 비활성화).
- PWRITE: 읽기/쓰기 제어를 한다 (1: 쓰기, 0: 읽기).
- PADDR: 전송할 데이터의 주소이다.
- PWDATA: 마스터가 슬레이브로 보낼 쓰기 데이터이다.
- PREADY: 슬레이브로부터 받는 신호이다. 데이터 수신 준비 상태를 나타낸다 (1: 준비됨, 0: 준비 안됨).
모듈 2: 슬레이브 (Slave)
- 역할: 마스터로부터 데이터를 받는다. 처리하거나 응답을 반환하는 모듈이다.
- 신호:
- PREADY: 마스터에게 보내는 신호이다. 데이터 처리 준비 상태를 나타낸다 (1: 준비됨, 0: 준비 안됨).
- PRDATA: 슬레이브가 마스터로 보낼 읽기 데이터이다.
2. APB 전송의 기본 원리
APB는 세 가지 주요 상태를 통해 동작한다:
- IDLE: 기본 상태이다. 아무 작업도 수행되지 않는다 (PSEL = 0, PENABLE = 0).
- SETUP: 데이터 전송 준비 단계이다. 슬레이브가 선택된다. 주소 및 제어 신호가 설정된다 (PSEL = 1, PENABLE = 0).
- ACCESS: 실제 데이터 전송 단계이다. PENABLE = 1이 된다. PREADY = 1일 때 데이터가 전송된다.
- 핸드셰이크: PSEL = 1, PENABLE = 1, 그리고 PREADY = 1일 때 데이터 전송이 완료된다.
- 쓰기 동작: 마스터가 PWDATA를 슬레이브로 전송한다.
- 읽기 동작: 슬레이브가 PRDATA를 마스터로 반환한다.
3. 데이터 전송 시나리오 (쓰기 동작 예시)
초기 상태
- 모든 신호가 0인 상태에서 시작된다:
- PSEL = 0 (마스터: 슬레이브 선택 안됨).
- PENABLE = 0 (마스터: 데이터 전송 단계 아님).
- PWRITE = 0 (기본값, 쓰기/읽기 미정).
- PREADY = 1 (슬레이브: 기본적으로 준비 상태로 가정된다).
- 슬레이브는 데이터를 처리하거나 저장할 준비가 되어 있다.
단계 1: SETUP 단계 시작
- 마스터: 슬레이브를 선택한다. 쓰기 동작을 준비한다.
- PSEL = 1 (슬레이브 선택).
- PENABLE = 0 (SETUP 단계).
- PWRITE = 1 (쓰기 동작).
- PADDR = [주소] (데이터를 쓸 주소 지정).
- PWDATA = [데이터] (전송할 데이터 준비).
- 슬레이브: PREADY = 1 (데이터 받을 준비 완료).
- 현재 상태:
- PSEL = 1
- PENABLE = 0
- PWRITE = 1
- PREADY = 1
단계 2: ACCESS 단계 및 데이터 전송
- 마스터: 데이터 전송 단계로 전환한다.
- PSEL = 1 유지.
- PENABLE = 1 (ACCESS 단계 시작).
- 핸드셰이크 발생:
- PSEL = 1, PENABLE = 1, PREADY = 1이므로, PWDATA가 슬레이브로 전송된다 (다음 클록 사이클에서).
- 슬레이브: 데이터를 받는다. 내부 레지스터에 저장한다.
- 현재 상태:
- PSEL = 1
- PENABLE = 1
- PWRITE = 1
- PREADY = 1
단계 3: 전송 완료 및 IDLE로 복귀
- 슬레이브: 데이터를 성공적으로 저장한다. PREADY = 1 유지.
- 마스터: 전송 완료 후 신호를 초기화한다.
- PSEL = 0 (슬레이브 선택 해제).
- PENABLE = 0 (ACCESS 단계 종료).
- 현재 상태:
- PSEL = 0
- PENABLE = 0
- PWRITE = 0 (기본값으로 복귀).
- PREADY = 1
단계 4: 슬레이브가 느려서 지연되는 경우
- 초기 상태에서 SETUP 단계:
- PSEL = 1, PENABLE = 0, PWRITE = 1, PADDR와 PWDATA 설정.
- ACCESS 단계 시작:
- PSEL = 1, PENABLE = 1.
- 슬레이브: 데이터를 처리 중이다. 지연 발생 → PREADY = 0.
- 핸드셰이크 실패:
- PREADY = 0이므로 데이터 전송이 지연된다.
- 마스터는 PSEL = 1, PENABLE = 1을 유지한다. 대기한다.
- 현재 상태:
- PSEL = 1
- PENABLE = 1
- PWRITE = 1
- PREADY = 0
단계 5: 슬레이브 준비 완료
- 슬레이브: 처리를 마친다. PREADY = 1로 전환한다.
- 핸드셰이크 발생:
- PSEL = 1, PENABLE = 1, PREADY = 1이므로 PWDATA가 슬레이브로 전송된다.
- 슬레이브: 데이터를 저장한다. 완료한다.
- 현재 상태:
- PSEL = 1
- PENABLE = 1
- PWRITE = 1
- PREADY = 1
단계 6: 전송 완료
- 마스터: 전송 완료 후 IDLE로 복귀한다.
- PSEL = 0, PENABLE = 0.
- 슬레이브: 데이터 처리를 완료한다.
- 현재 상태:
- PSEL = 0
- PENABLE = 0
- PWRITE = 0
- PREADY = 1
'AMBA BUS > APB BUS' 카테고리의 다른 글
AMBA APB BUS - 01. IDLE / SETUP / ACCESS (0) | 2025.03.05 |
---|