지난 포스팅에서 IP 설계의 중요성에 대해 언급했다. 우리가 FPGA 칩을 통해 원하는 어플리케이션을 구현하기 위해서는 해당 기능을 수행하는 IP를 설계해야 한다. 그리고 그 IP의 상태를 읽고 쓰는 방식이 바로 이번 시간에 다룰 'AXI4-Lite Interface'이다.
2021.05.05 - [Digital Logic/FPGA] - FPGA 설계에 있어 중요한 점은? 큰 줄기를 잡고 가자
AXI4는 무엇인가?
AXI는 AMBA 시스템의 한 종류로써, AMBA는 ARM Advanced Microcontroller Bus Architecture의 약자이다.
그리고 AXI는 Advanced eXtensible Interface 의 약자로 IP 블록의 통신을 제어하게 하는 protocol인 것이다.
현재 대다수의 HW IP들이 이 AMBA protocol을 따르고 있기 때문에 표준과도 같은 것이다. 그러므로 알아두고 사용하면 매우 유용하다.
AXI4-Lite Interface로 무엇을 하는 가?
HW IP의 상태를 Read하거나 Write 하기 위한 Interface이다. 이 과정은 Register에 접근하여 수행한다.
그러하니 IP를 설계함에 있어서 필수적으로 사용되는 부분이다.
그럼 이 AXI4-Lite interface를 사용하기 위해 알아두어야 할 특징 2가지를 알아보고자 한다.
Ready / Valid handshake
Ready와 Valid 신호가 동시에 '1' 일 때 Data가 정상적으로 전송된다.
Data의 전송은 Transmitter -> Receiver로 이루어지며, Transmitter는 아무때나 데이터를 보내지 않고 Receiver도 아무때나 데이터를 받지 않는다. Transmitter가 valid에 '1' 값을 실어 보내면 Receiver가 이 값을 받고 준비가 되었을 때 ready에 '1' 값을 실어서 보내준다.
그렇게 valid와 Ready 값이 모두 '1'인 타이밍에 Transmitter -> Receiver로 데이터가 전송된다. 물론 Clock 타이밍에 맞춰서 말이다.
이것이 AXI4-Lite interface의 기본 규칙이다.
5개의 AXI Channels
AXI4-Lite는 Read/Write를 위해 아래와 같이 5개의 Channel을 갖고 있다. (화살표 하나당 1 Channel)
여기에 있는 모든 Channel은 Ready / Valid handshake 규칙을 따른다. 즉 어떤 Channel 이냐에 따라 Transmitter와 Receiver가 정해진다.
AXI통신은 Master가 먼저 Slave에게 Read 혹은 Write 하고자 하는 Register의 Address를 물어보면서 시작된다.
AXI Read Transactions
Master가 읽고 싶은 레지스터의 주소를 보내면 Slave가 그에 맞는 데이터 정보를 보내준다.
AXI Write Transactions
Master가 쓰고 싶은 레지스터의 주소를 보내고 Ready/Valid handshake가 만족하면 쓰고 싶은 데이터를 보낸다. 그러면 Slave가 그에 대한 ACK와 같은 확인 결과를 Master에게 보내준다.
참조: forums.xilinx.com/t5/Design-and-Debug-Techniques-Blog/AXI-Basics-1-Introduction-to-AXI/ba-p/1053914
'Digital Logic > FPGA' 카테고리의 다른 글
FPGA Acceleration(가속화), 꼭 알아두어야 할 그것. (0) | 2021.07.12 |
---|---|
[FPGA/Digital 회로 설계] 'WaveDrom'으로 Timing diagram 쉽게 그리기 (0) | 2021.05.31 |
FPGA 설계에 있어 중요한 점은? 큰 줄기를 잡고 가자 (0) | 2021.05.05 |
Vivado로 FPGA 설계 예시 - Frame grabber (0) | 2021.04.11 |
Vivado 프로그램 이란? (0) | 2021.04.11 |
댓글