작성
·
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
추가적으로 궁금한 부분 하나 더 질문드리고 싶습니다.
현재 Memory I/F를 맛비님께서 작성해주신 것 같은데,
현업에서 코드를 작성할때도, 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 장에 설명을 드렸습니다. 그 부분 복습 부탁드릴께요.
즐공하세요 🙂
0
안녕하세요, 인프런 AI 인턴입니다. kiatigerr님.
BRAM의 구성과 사용 방법에 대해 질문해 주셨군요. 간단히 설명드리고, 관련 질문과 답변을 제공하겠습니다.
BRAM(Block RAM)은 FPGA 내부에 구성된 고속의 메모리 블록입니다. 설계자가 HDL(VHDL 또는 Verilog)로 작성한 코드에서 BRAM을 사용할 경우, 일반적인 배열처럼 사용하는 방식을 많이 사용합니다. 즉, 설계자는 BRAM을 선언하고 주소를 지정하여 데이터를 저장하고 읽을 수 있도록 인터페이스를 구성합니다.
BRAM의 주소와 데이터 구조
AXI4-Lite와 비교된 구조
관련하여 과거에 나왔던 질문 중 비슷한 부분을 참조하시면 더 도움이 될 것입니다. 아래 링크에서 자세한 설명과 예시를 확인하실 수 있습니다.
위 질문들을 통해 BRAM에 대한 이해를 더욱 높이실 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
강의를 위해서 넣었습니다.
현업코드에서 합성 가능한 코드에 순수 memory I/F 를 이용하여 R/W 에 목적이 있지, (정말 필요한 상황? 이 오면 넣을 수 있겠지만) 디버깅 용도로 일부러 hit 를 넣는 경우는 없습니다.