AXI (Advanced eXtensible Interface)
Master Interface와 Slave Interfacesms R/W 동작으로 연결됩니다. Read Operation 부분은 Write와 다르게 Reponse Channel이 존재하지 않는 모습을 확인 할 수 있습니다.
각각의 Channel은 독립적으로 동작합니다.
Master입장에서는 Slave가 값을 정상적으로 전달 받았는지 확인하기가 어렵습니다. 그렇기 때문에 Write Response Channel을 활용하여, Data 잘 전달되었는지 확인하는 동작이 필요합니다.
Read 에서는 Write와 다르게 Response Channel이 존재하지 않습니다. 왜 그럴까요?
※ Slave에서 Data를 읽어올 때, 더 이상 읽을 Data가 존재하지 않으면 보낼 수 없기 때문에 멈춥니다. 그 자체로 Read를 다 했다는 신호이기 때문에 별도의 Channel이 존재하지 않습니다.
Read Operation
오늘은 AXI의 Read Operation을 확인해보겠습니다.
Vivado에서 새로운 Project를 생성하고
IP Catalog를 열어줍니다.
component name modify to 'rom32x8'
Port Width는 Data Size를, Port Depth는 Address Size를 의미합니다.
douta는 8bit data, address는 5bit로 32(0~31)개의 Address 주소를 할당합니다.
https://www.xilinx.com/products/intellectual-property/block_memory_generator.html#documentation
위 링크에서
위 데이터 시트를 열고
74page의 COE 코드를 복사하여 .txt파일을 생성합니다.
그 후에 Memory Initialization에서 연결시켜주면 됩니다.
; Sample initialization file for a
; 8-bit wide by 16 deep RAM
memory_initialization_radix = 16;
memory_initialization_vector =
00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 0A, 0B, 0C, 0D, 0E, 0F, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F;
저는 위처럼 vector값을 변경하여 32개(0~31) 추가하여 변경해주었습니다.
Code 및 Simulation은 다음 포스팅에서 이어 작성하겠습니다.
'Circuit Design > 🔥HDL' 카테고리의 다른 글
[Verilog] 15. AXI Write (0) | 2024.06.27 |
---|---|
[Verilog] 14. AXI Read / Handshake (0) | 2024.06.27 |
[Vitis] 0. Preview(Hello World) (0) | 2024.06.24 |
[Verilog] Vivado Setting [Dark Theme(Vivado 다크모드)] (0) | 2024.06.10 |
[Verilog] 12. UART(3) TX (0) | 2024.06.10 |