Block Memory Interface 응용
349
작성한 질문수 4
안녕하세요, 해당 강의 10강 block memory interface 부분을 응용하여 프로젝트를 진행하고 있습니다.
제가 목표로 하는 것은 microblaze - axi interconnect - AXI AHBLite Bridge 로 이어지는 Block design 후, microblaze의 내부 메모리에 data를 저장하여 write / read 동작을 시켜 ahb bus를 사용하는 외부 ip에 시스템을 연결하려 합니다.

현재 block design 구성 및 address 설정은 다음과 같습니다.
아래 코드는 제가 write 동작을 위해 작성한 vitis에 c code입니다.
#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
#include "xil_io.h"
#include "xil_types.h" // added on 20240411 by dykim
#include <unistd.h>
#define XPAR_M_AHB_0_BASEADDR 0x44A10000 // added by DYKIM on 20240326
#define TMC_JXSE_BASE_ADDR (XPAR_M_AHB_0_BASEADDR + 4) // added by DYKIM on 20240326
#define TMC_JXSE_ENC_CMD 0x0000 // added by DYKIM on 20240326
#define TMC_JXSE_ENC_SRST 0x0004 // added by DYKIM on 20240326
#define TMC_JXSE_INT_STAT 0x0010 // added by DYKIM on 20240326
#define TMC_JXSE_INT_RAW 0x0014 // added by DYKIM on 20240326
#define TMC_JXSE_INT_EN 0x0018 // added by DYKIM on 20240326
#define TMC_JXSE_ENC_TGT_SIZE 0x0020 // added by DYKIM on 20240326
#define TMC_JXSE_ENC_PIC_SIZE 0x0024 // added by DYKIM on 20240326
#define TMC_JXSE_ENC_PIC_FMT 0x0028 // added by DYKIM on 20240326
#define TMC_JXSE_ENC_PROF 0x002C // added by DYKIM on 20240326
#define TMC_JXSE_ENC_NL 0x0034 // added by DYKIM on 20240326
#define TMC_JXSE_ENC_MODE 0x0038 // added by DYKIM on 20240326
#define TMC_JXSE_ENC_WGT_SET 0x003C // added by DYKIM on 20240326
#define TMC_JXSE_ENC_ERR_INFO0 0x0040 // added by DYKIM on 20240326
#define TMC_JXSE_ENC_ERR_MASK0 0x0044 // added by DYKIM on 20240326
typedef unsigned short u2;
typedef unsigned short u1;
void SI5386_init (u32 ID) ;
void AHB_Out32 (u32 address, u32 data, u2 trans, u1 write);
u32 AHB_In32 (u32 address, u2 trans, u1 write);
void AHB_RegWrite (u32 address, u32 value, u2 trans, u1 write);
u32 AHB_RegRead (u32 address, u2 trans, u1 write);
int main()
{
init_platform();
SI5386_init(0);
SI5386_init(1);
// print("Hello World\n\r");
// print("Successfully ran Hello World application");
cleanup_platform();
return 0;
}
void AHB_RegWrite (u32 address, u32 value, u2 trans, u1 write){
u32 data;
u2 htrans;
u1 we;
data = 0x00000000;
htrans = 2;
we = 1;
AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_CMD, data, htrans, we);
data = 0x00000101;
AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_INT_STAT, data, htrans, we); // 0x0010
data = 0x00000101;
AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_INT_EN, data, htrans, we); // 0x0018
data = 0x00093ee0;
AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_TGT_SIZE, data, htrans, we); // 0x0020
data = 0x021c0780;
AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_PIC_SIZE, data, htrans, we); // 0x0024
data = 0x00000084;
AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_PIC_FMT, data, htrans, we); // 0x0028
data = 0x00000000;
AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_PROF, data, htrans, we); // 0x002c
data = 0x00000205;
AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_NL, data, htrans, we); // 0x0034
data = 0x00000001;
AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_MODE, data, htrans, we); // 0x0038
data = 0x00000001;
AHB_Out32(TMC_JXSE_BASE_ADDR + TMC_JXSE_ENC_CMD, data, htrans, we); // 0x0000
usleep(3000);
}
void AHB_Out32(u32 address, u32 data, u2 trans, u1 write)
{
if (trans == 2 && write == 1) Xil_Out32(address, data);
}
위 코드에서, trans나 write 변수는 axi ahblite bridge의 output 신호로 둔 것인데 이를 어떻게 c code로 컨트롤 해야할 지 감이 잡히지 않습니다.
이후 보드에 프로그램을 올려 ILA 결과를 확인해보니 아래와 같이 입력으로 준 Ready 신호만 들어오는 것을 확인했습니다.

긴 내용에 죄송스럽습니다.
현재 해당 문제에 대해 혼자 해결해야 하는 문제라 정말 막막하고 어렵습니다. 제가 어느 부분에서 잘못되었는지 알려주시면 정말 감사하겠습니다.
답변 1
0
안녕하세요.
코드를 압축해서 (프로젝트 파일 전체) 메일(alex@ihil.co.kr or jungatk@naver.com)로 보내주시길 바랍니다.
확인해 보고 답변드리도록 하겠습니다.
감사합니다 ~!!
[HDL 32장-2부] 참고 링크 관련
1
35
2
강의 만료일 연장 신청
0
32
2
기초예제 파일 불러오기 문의
0
25
2
Zybo 환경에서 PL RTL UART 보드 검증 방법
0
30
2
혹시 별도의 자료가 있나요?
0
32
2
queue assignment pattern 문의 건
0
32
1
Mission 5 문의 건
0
45
2
Zynq z7 FPGA single-ended 관련
0
39
1
강의자료 PDF 어떻게받나요?
0
42
2
Differential Amp의 4가지 종류
0
41
1
[HDL 22장] F/F CE 관련 질문
1
45
2
UART0, 1 중 선택
1
50
2
fpga 개발보드
0
28
2
vivado 2022.1 version memory IP 구조
0
38
1
강의 ppt 자료 요청건
0
56
2
Xil_In 함수에 관해 질문이 있습니다.
0
582
2
수업 내용중 질문드립니다.
0
382
1
수업 자료 링크 오류
0
229
1
xdc파일 핀할당에 대해 문의드립니다.
0
411
1
lwip echo server ping test 문의 드립니다.
0
432
1
W5500코드 관련 질문
0
354
1
w5500
0
354
1
자료링크 "접근이 불가능합니다"
1
265
1
한 페이지가 안보입니다.
1
296
1





