인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

leeug13님의 프로필 이미지
leeug13

작성한 질문수

설계독학맛비's 실전 FPGA를 이용한 HW 가속기 설계 (LED 제어부터 Fully Connected Layer 가속기 설계까지)

[FPGA 13장] AXI4-Lite I/F 를 사용하여 Register 가 아닌 메모리에 Write / Read 해보기 - 실습편

13장 질문있습니다.

해결된 질문

작성

·

70

1

image.png

안녕하세요, 맛비님. 강의 잘 듣고 있습니다.

vivado, vitis 버전: 2020.2

ZCU104 Board를 통해 지금까지 잘 해오고 있었는데, vitis에서 첨부 사진과 같이 run을 하면 정체 모를 문자들이 나오는 것을 확인하였습니다. 10장 강의까지도 잘 쫓아왔는데 갑자기 여기서 안돼서 당황스럽습니다. 혹시 제가 이 문제를 해결하기 위해 할 수 있는 방법들이 있을까요?
항상 감사합니다.

답변 2

0

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

안녕하세요 🙂

FPGA 보드의 Uart 문제 같아보이는데요.

이 부분은 특별히? 생각나는 방법은 없는 것 같은데요.

GPT 답변 첨부드립니다.

안녕하세요! 질문 주셔서 감사합니다. 사진을 보니 Vitis Serial Terminal에서 출력된 문자가 깨져 보이는 현상이 나타난 것으로 보입니다. 이는 주로 UART 설정이 맞지 않거나 코드에서 올바른 데이터를 전송하지 않는 경우에 발생할 수 있습니다. 아래에서 문제를 해결하기 위한 몇 가지 방법을 제안드립니다.


1. UART 설정 확인

  • Vitis Serial Terminal에서 UART 설정이 ZCU104 보드의 설정과 일치하는지 확인하세요.

  • 일반적인 UART 설정:

    • Baud rate: 115200 (사진에서도 동일하게 보임)

    • Data bits: 8

    • Parity: None

    • Stop bits: 1

    • Flow control: None

  • 설정이 다를 경우, Serial Terminal에서 올바르게 수정 후 다시 실행해 보세요.


2. 코드 확인

  • 코드에서 UART로 데이터를 전송하는 부분을 점검하세요.

  • UART 초기화 코드가 누락되거나, 올바르지 않은 데이터가 전송될 수 있습니다.

  • 예제 코드:

    c

    코드 복사

    #include "xuartps.h" XUartPs Uart_Ps; // UART 초기화 함수 void UartInit() { XUartPs_Config *Config = XUartPs_LookupConfig(XPAR_PS7_UART_1_DEVICE_ID); XUartPs_CfgInitialize(&Uart_Ps, Config, Config->BaseAddress); XUartPs_SetBaudRate(&Uart_Ps, 115200); } // 메시지 전송 함수 void SendMessage(const char *msg) { XUartPs_Send(&Uart_Ps, (u8 *)msg, strlen(msg)); }


3. Vitis Serial Terminal 외 다른 터미널 소프트웨어 사용

  • Tera Term, Putty, 또는 CoolTerm과 같은 다른 터미널 소프트웨어를 사용하여 동일한 UART 출력을 확인해 보세요.

  • 간혹 Vitis Serial Terminal에서만 깨지는 경우가 있으므로, 다른 터미널로 테스트해 보시면 문제를 더 정확히 파악할 수 있습니다.


4. ZCU104 핀 연결 확인

  • 보드의 UART 핀이 올바르게 연결되어 있는지 확인하세요.

  • ZCU104의 경우, JTAG-UART 포트나 USB UART 포트를 통해 PC와 통신하므로, 연결이 올바른지 점검하세요.


5. Vitis 디버깅 기능 활용

  • 코드에서 디버깅 메시지를 삽입하여 문제가 발생하는 위치를 확인하세요.

  • 예:

    c

    코드 복사

    printf("UART initialized successfully\n"); printf("Data being sent: %d\n", some_data);


6. Hardware Reset

  • ZCU104 보드의 리셋 버튼을 눌러 하드웨어를 초기화한 후 다시 시도해 보세요.

  • 또한, Vitis 프로젝트를 클린 빌드(Clean Build)한 후 재빌드 및 재배포를 진행해 보세요.

leeug13님의 프로필 이미지
leeug13
질문자

답변 감사합니다.
LAB10의 경우는 정상 동작하는데(UART 문제는 아닐 것으로 판단됨) LAB13만 안되는 것을 보니 BRAM이 추가되어서 나타난 문제 또는 늘어난 레지스터 개수로 인한 메모리 부족 문제가 원인일 것으로 추정됩니다. 혹시 제가 할 수 있는게 있을까요? 추후 강의를 실습하기 위해서는 반드시 BRAM 부분을 집고 넘어가야 할 거 같아 이렇게 답글 답니다.

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

안녕하세요 🙂

추가 설명 감사드립니다. 이해했습니다.

ZCU104 보드자체의 util (LUT, FF,BRAM etc) 이 현재 강의에서 사용중인 zybo Z7-20 보다 훨씬 많습니다.

따라서 BRAM 이 추가되어서 문제가 되기는 어려워보이는데요.

REG 개수가 늘어나서 문제이다.. 라는 의심이라면, 현 예제에서 사용중인 reg 는 4개 뿐이라서, Address 를 넘어가기 어려워보이는데요.

수정하신 부분이 전혀 없다면, 이 예제만 문제가 되는건지, 아니면 이후 과정에서도 문제가 되는지 확인해주실 수 있을까요?

답답하시겠지만, 강의 서두에 있듯이 보드가 다름에 의한 문제해결은 제가 어찌하기 어려워보이네요. ㅠ

즐공하세요 🙂

 

leeug13님의 프로필 이미지
leeug13
질문자

추가적으로 LAB15만 미리 해보았는데 동작합니다! 이유는 모르겠지만 일단 계속 진행하겠습니다. 감사합니다 ^^정말 알다가도 모를 FPGA네요

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

이유는 저도 잘 모르겠네요. (안될 이유가.. 없는 간단한 예제 같아서)

이후에도 같은 문제가 발생하시면 알려주셔요. 공통점을 찾으면 원인 파악이 되지 않을까 싶어요.

남은 강의도 즐공하세요!!

0

안녕하세요, 인프런 AI 인턴입니다. leeug13님.

Vitis 환경에서 프로젝트를 실행하실 때, 터미널에 이상한 문자들이 출력되는 문제는 주로 UART 설정 문제 또는 데이터 인코딩 문제에서 발생할 수 있습니다. 아래 몇 가지 조치를 시도해 보시기를 권장드립니다.

  1. Baud Rate 확인: Vitis 터미널 설정에서 UART의 Baud Rate가 올바르게 설정되어 있는지 확인하세요. 사용하고 계신 보드와 강의 자료에 명시된 Baud Rate와 일치해야 합니다.

  2. Serial Port 설정 점검: 올바른 Serial Port가 선택되어 있는지 확인하세요. 연결된 장치가 선택되어야 합니다.

  3. 케이블 및 연결 상태: 개발 보드와 컴퓨터 간의 연결이 안정적인지 확인하세요. 케이블 교체 또는 포트 변경으로 개선되는 경우도 있습니다.

  4. Vitis 업데이트: 사용 중인 Vitis 버전이 보드와 호환되는 최신 상태인지 확인해 보세요. 최신 패치를 적용하였는지도 점검해 보시기 바랍니다.

  5. 터미널 설정 확인: 터미널에서 문자 셋(charset)이 올바르게 설정되어 있는지 확인하십시오. 일부 경우에서 문자 세트 설정이 맞지 않으면 이상한 문자가 표시될 수 있습니다.

관련된 유사한 문제들에 대한 다른 수강생들의 해결 방안을 참고할 수 있도록 몇 가지 링크를 첨부합니다:

이 문제들이 leeug13님의 경우와 직접적인 관련이 있을 수는 없지만, 해결 방안을 찾는 데 도움이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

leeug13님의 프로필 이미지
leeug13

작성한 질문수

질문하기