인프런 커뮤니티 질문&답변
메모리의 형태가 전체설계에 미치는 영향이 궁금합니다.
해결된 질문
작성
·
98
·
수정됨
1
[1. 질문 챕터] : HDL19장 4분 50초
[2. 질문 내용] : 같은 메모리 크기라도 Width와 Depth를 다를 수 있다고 해당 강의를 보고 이해 했습니다. 갑자기 든 궁금증은 다음과 같습니다. 가령 넓고 얕은 메모리와 좁고 깊은 메모리 중 어떤 것을 선택하느냐에 따라, FPGA 내부의 라우팅 복잡도나 타이밍 마진, 전력 소모에 어떤 실질적인 차이가 발생하는지 궁금합니다.
퀴즈
하드웨어 설계에서 FSM(Finite State Machine)의 주요 목적은 무엇일까요?
데이터 저장 용량 최대화
제어 로직을 체계적으로 설계
클럭 주파수 자동 조정
전력 소모량 실시간 측정
답변 2
0
안녕하세요 🙂
AI 인턴이 기초적인 답을 잘 달아줘서, 기본적인 이론 내용은 참고하시면 될 것 같아요.
제 추가 답변은 다음과 같습니다.
FPGA 내에는 Primitive cell 이라고 부르는, 이미 chip 안에 존재하는 로직들이 존재합니다.
FPGA 에서의 Verilog 코드 동작은 바로 이 로직들을 Verilog 코드로 만든 IP 가 사용하게 하는 것이겠죠.
PnR 과정을 거쳐서요.
Primitive bram 이 chip 내에 존재하고요. 해당 메모리 shape 이 어떻게 생겼는지를 이해해보면, 더 많은 Bram 용량을 사용할 수 있습니다.
이해를 돕기위해서 극단적으로 예를들어보면, 사용하시는 FPGA 내에 BRAM이 RAMB18E1 만 있다고 가정해보죠. https://docs.amd.com/r/en-US/ug953-vivado-7series-libraries/RAMB18E1

Din/Dout 은 16 bits 입니다.
만약에 width 를 1로 사용한다면, 15 만큼의 빈공간 (안쓰는 영역) 이 생기겠죠.
즉 한정된 자원 중에서 1/16 만큼만 사용하게 되는 불상사? 가 발생합니다.
사용하시는 FPGA Chip set 내에 BRAM 의 shape 을 잘 파악하시고, memory size 를 설계하시면 Area 효율적인 설계가 가능하실꺼에요.
즐공하세요 🙂
0
안녕하세요, 인프런 AI 인턴입니다. k33827925님.
FPGA 설계에서 메모리의 Width와 Depth 설정은 여러 측면에서 설계에 영향을 미칠 수 있습니다. 각 구성에 따른 장단점을 살펴보면 다음과 같습니다.
라우팅 복잡도 및 타이밍 마진
- 넓고 얕은 메모리 (Wide): 데이터 비트가 증가하면 버스 폭이 넓어져 더 많은 라인들이 연결되어야 합니다. 이는 라우팅 복잡도를 증가시킬 수 있으며, 타이밍 마진에서 지연 요소가 될 수 있습니다. 다만 대량의 데이터를 빠르게 처리하는 데 유리합니다.
- 좁고 깊은 메모리 (Narrow): 데이터 비트가 줄어들어 라우팅 복잡도가 상대적으로 낮아질 수 있으며, 타이밍 마진 개선에 도움이 될 수 있습니다. 그러나 같은 양의 데이터를 처리하기 위해 더 많은 클럭 싸이클이 필요합니다.
- 넓고 얕은 메모리 (Wide): 데이터 비트가 증가하면 버스 폭이 넓어져 더 많은 라인들이 연결되어야 합니다. 이는 라우팅 복잡도를 증가시킬 수 있으며, 타이밍 마진에서 지연 요소가 될 수 있습니다. 다만 대량의 데이터를 빠르게 처리하는 데 유리합니다.
전력 소모
- 전력 소모는 주로 라우팅 길이와 스위칭 활동에 의해 영향을 받음으로, 넓고 얕은 메모리는 전력 소모가 클 수 있습니다. 좁고 깊은 메모리는 상대적으로 적은 전력 소비일 수 있지만, 접근 시간 등의 다른 요소들이 또다른 전력 소모 요인이 될 수 있습니다.
- 전력 소모는 주로 라우팅 길이와 스위칭 활동에 의해 영향을 받음으로, 넓고 얕은 메모리는 전력 소모가 클 수 있습니다. 좁고 깊은 메모리는 상대적으로 적은 전력 소비일 수 있지만, 접근 시간 등의 다른 요소들이 또다른 전력 소모 요인이 될 수 있습니다.
설계의 수행 시간 및 자원 효율성
- 데이터 처리의 요구 사항에 따라 결정됩니다. 높은 대역폭으로 빠른 처리를 원한다면 넓고 얕은 구성, 메모리 자원을 효율적으로 사용하고 싶다면 좁고 깊은 구성으로 설정할 수 있습니다.
- 데이터 처리의 요구 사항에 따라 결정됩니다. 높은 대역폭으로 빠른 처리를 원한다면 넓고 얕은 구성, 메모리 자원을 효율적으로 사용하고 싶다면 좁고 깊은 구성으로 설정할 수 있습니다.
이와 관련해 더 깊이 있는 설명이 자료에 포함되어 있거나, 아래 링크에서 유사한 사례와 상세한 설명을 찾아보실 수 있습니다:
위 답변들이 더 나은 이해에 도움이 되기를 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




