Block Memory Interface 응용
367
작성한 질문수 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)로 보내주시길 바랍니다.
확인해 보고 답변드리도록 하겠습니다.
감사합니다 ~!!
season 2 코딩테스트 강의에 대한 문의드립니다.
0
5
0
4:1먹스 구현방식에 대한 질문입니다.
0
6
1
수강 순서 질문 있습니다
1
26
2
Windows 기능 켜기
1
37
2
cache에서 data miss가 나고 메모리에서 read data할때 이해가 안가는 신호가 있어서 질문 드립니다.
0
26
1
[L1-P02] 멀티플렉서 실전 결과 확인하는데 시간이 너무 걸립니다.
0
27
2
13장 파이프라인 질문 드립니다.
1
67
2
UART의 역할이 PC와 PS를 연결해 주는 역할로 알고 있습니다.
1
60
2
L2_P4 data_average 코드 리뷰 및 waveform 질문 드립니다.
1
63
2
Ubuntu 20.04.5 설치관련 문의드립니다
1
79
2
LV2-2 Patter Detector code review 부탁드립니다.
1
41
1
환경 설정하는 guide 최신화 부탁드립니다.
1
74
2
Arty A7-35T 구매 불가
0
55
2
git hub 404 error 도움 부탁드립니다.
1
59
2
LT스파이스 라이브러리 다운이 안됩니다.
0
57
2
Xil_In 함수에 관해 질문이 있습니다.
0
610
2
수업 내용중 질문드립니다.
0
398
1
수업 자료 링크 오류
0
248
1
xdc파일 핀할당에 대해 문의드립니다.
0
426
1
lwip echo server ping test 문의 드립니다.
0
447
1
W5500코드 관련 질문
0
368
1
w5500
0
370
1
자료링크 "접근이 불가능합니다"
1
276
1
한 페이지가 안보입니다.
1
308
1





