# What is AMBA
Advaced Microcontroller Bus Architecture의 약어로 Soc 설계에서 내부 모듈간의 연결 및 관리를 위한 표준 interconnect Spec이다.
# What is AXI
Advanced eXtensible Interface의 약어로 AMBA의 interface중 하나이다.
# When is AXI4-Lite
사용자가 ip를 만들었는데 현재 제어하는 방식을 다르게 하고싶을 때,데이터를 다르게 Write하고 싶을 때 사용
ex) user가 led를 blink하는 속도를 바꿔주고싶다.
혹은 설계한 HW IP의 제어와 상태를 확인하고 싶을때 사용한다.
제어와 상태를 확인하려면 reg변수에있는 값을 READ하면 HW IP의 제어 상태를 알 수 있게된다.
이것을 하는것이 AXI4-interface이다
# How to use AXI4-Lite
Ready / Valid Handshake가 무엇이냐면, data를 전송할 때 ready / valid 신호 둘 다 '1'로 set 되었을 때 전송이 되었다 라는 rule이다
Data를 전달하는 입장에서는 전달할 Data가 있다면, Valid 신호를 1로 set함과 동시에 함께 전송할 Data를 출력시킨다.
받는 입장에서는 받을 준비가 되었을 때 Ready 신호를 1로 set한다.
왜 이런 Ready/Valid Handshake를 사용하는가?
모듈 A,B가 있을 때 언제 유효한 Data가 나오고 언제 그 Data를 가져갈 준비가 되었는지를 서로 알 수 없기 때문이다. 받을준비가 안되었는데 Data를 무작정 주게되면 원치않는 결과가 나오게 된다.
결론 : Ready /Valid신호가 서로 '1'일 때 Data가 정상적으로 전송이 된다.
# AXI Channel
하나의 채널 당 하나의 hand-shake를 가진다
master가 값을 읽고싶은 메모리의 주소를 slave에 전달하면 slave는 메모리의 데이터를 한개 보내준다.
Write동작
1. Master가 write하고싶은 Address를 Write Address channel을 통해 Slave에 전송한다.
2. 그 다음 Master가 Write하고 싶은 Data(1개)를 Write Data channel을 통해 Slave에 전송한다.
3. Slave에서 해당 Address의 Data의 Write가 완료되면, Write Respose channel을 통해 Master에게 전송한다.
# AXI4 Lite Interface 이해하기
ip를 만들 때 4개의 레지스터를 설정했었는데 4개의 레지스터에 write하고 read한 결과가 서로 같은지를 확인하고 종료하는 시뮬레이션
# Adress 단위 ==> 1Byte
# Write simulation
# Read Simulation
# 코드 확인
Write strobes
= 바이트 단위로 write 할수 있음