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

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

kiatigerr님의 프로필 이미지
kiatigerr

작성한 질문수

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

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

BRAM의 실제 구조가 어떤지 모르겠어요

작성

·

61

1

안녕하세요 🙂

[1. 질문 챕터] : FPGA 12장 AXI-4 Lite BRAM

[2. 질문 내용] : BRAM이라는 것이 HDL상에서

memory type을 Block이라고 넣으면 메모리 공간이 할당되는 것 같은데, address랑 data라는 개념은 설계자가 간단하게 사용할 수 있도록 interface처럼 사용하는건가요?

address가 따로 원래 정해져 있는 것이아니라 단순히 배열처럼 사용자가 지정해서 사용하는 것 이라고 느껴져서 질문드립니다.

 

결론적으로는

BRAM을 활성화하면, Memory 공간이 할당되어, 사용자가 임의로 주소랑 data로 이루어진 structure를 인터페이스처럼 만들어서 사용하는 것인지 궁금합니다.

[3. 시도했던 내용, 그렇게 생각하는 이유] : AXI4-Lite의 register 에 메모리 할당하는 경우는, 주소가 자동으로 할당되어서 Vitis와 같이 소프트웨어 언어에서 기술할 때, 헤더파일에 주소가 들어가 있는데, BRAM같은 경우는 그런 것이아니라 사용자가 직접 할당해서 쓰는 것 같아서 이런 생각이 들었습니다.

 

답변 3

1

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

추가적으로 궁금한 부분 하나 더 질문드리고 싶습니다.

현재 Memory I/F를 맛비님께서 작성해주신 것 같은데,

현업에서 코드를 작성할때도, hit와 같이 확인용 데이터를 하나씩 넣어놓는지, 아니면 강의를 위해서 넣어주신 부분인지 궁금합니다.

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

강의를 위해서 넣었습니다.

현업코드에서 합성 가능한 코드에 순수 memory I/F 를 이용하여 R/W 에 목적이 있지, (정말 필요한 상황? 이 오면 넣을 수 있겠지만) 디버깅 용도로 일부러 hit 를 넣는 경우는 없습니다.

 

0

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

안녕하세요 🙂

이는 FPGA 내에 BRAM 이라는 resource 가 존재하는 것입니다.

이를 우리가 사용하는 것이고, FPGA 칩셋에 따라 resource 제약이 있겠죠.

BRAM 은 Xilinx FPGA 에서 사용하는 SRAM 과 유사한 형태로 구성되어 있습니다.

https://docs.amd.com/r/en-US/am007-versal-memory/Block-RAM-Resources

BRAM 을 사용하기 위해서는 memory I/F 를 통해서 사용해야합니다.

그 방법은 문서로 정의되어 있습니다.

이 문서의 룰 기반으로 Verilog code 를 작성하였고, 해당 부분은 Verilog S1 chapter 18,19,20 장에 설명을 드렸습니다. 그 부분 복습 부탁드릴께요.

image.png

 

즐공하세요 🙂

 

0

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

BRAM의 구성과 사용 방법에 대해 질문해 주셨군요. 간단히 설명드리고, 관련 질문과 답변을 제공하겠습니다.

BRAM(Block RAM)은 FPGA 내부에 구성된 고속의 메모리 블록입니다. 설계자가 HDL(VHDL 또는 Verilog)로 작성한 코드에서 BRAM을 사용할 경우, 일반적인 배열처럼 사용하는 방식을 많이 사용합니다. 즉, 설계자는 BRAM을 선언하고 주소를 지정하여 데이터를 저장하고 읽을 수 있도록 인터페이스를 구성합니다.

  1. BRAM의 주소와 데이터 구조

    • BRAM의 주소 및 데이터 구조는 설계자가 원하는 대로 설정할 수 있으며, 시뮬레이션 및 합성을 통해 FPGA에 구현됩니다.
    • 설계 시 메모리의 크기, 데이터 폭 등을 정의하여 Vivado와 같은 도구가 내부적으로 적절히 할당하게 됩니다.
  2. AXI4-Lite와 비교된 구조

    • AXI4-Lite 인터페이스는 특정 프로토콜을 기반으로 하여 소프트웨어와 하드웨어 간의 통신을 간소화합니다. 여기서 주소할당이 자동으로 이루어지지만, BRAM은 설계자가 필요한 구조에 맞춰 직접 구조를 설정하여 사용합니다.

관련하여 과거에 나왔던 질문 중 비슷한 부분을 참조하시면 더 도움이 될 것입니다. 아래 링크에서 자세한 설명과 예시를 확인하실 수 있습니다.

위 질문들을 통해 BRAM에 대한 이해를 더욱 높이실 수 있을 것입니다.

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

kiatigerr님의 프로필 이미지
kiatigerr

작성한 질문수

질문하기