BRAM은 어떻게 합성되나요?
module true_sync_dpbram (
clk,
addr0,
ce0,
we0,
q0,
d0,
addr1,
ce1,
we1,
q1,
d1
);
parameter DWIDTH = 16;
parameter AWIDTH = 12;
parameter MEM_SIZE = 3840;
input clk;
input[AWIDTH-1:0] addr0;
input ce0;
input we0;
output reg[DWIDTH-1:0] q0;
input[DWIDTH-1:0] d0;
input[AWIDTH-1:0] addr1;
input ce1;
input we1;
output reg[DWIDTH-1:0] q1;
input[DWIDTH-1:0] d1;
(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1];
always @(posedge clk)
begin
if (ce0) begin
if (we0)
ram[addr0] <= d0;
else
q0 <= ram[addr0];
end
end
always @(posedge clk)
begin
if (ce1) begin
if (we1)
ram[addr1] <= d1;
else
q1 <= ram[addr1];
end
end
endmodule
저기서 시스템이 BRAM을 사용한다는 걸 어떻게 인식할 수 있나요?
(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1];
이 한문장이 없으면 BRAM을 사용하지 않게 되나요?
아니면 단순히 코드 구성을 보고 자동으로 BRAM이 있다고 판단하여 합성해주나요?
답변 1
0
안녕하세요 :)
저 코드는 Xilinx tool 에서 만들어준 코드입니다.
tool 의 정확한 동작원리는 저도 잘 모르겠어요.
예상해본다면, (정확하지 않습니다.)
(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1];
위 라인이 없으면 BRAM 으로 사용하지 못할 것 같습니다.
해봐야 알 것 같은데, 그 부분은 질문자님께서 하실 수 있는 내용이라 판단이 되네요.
직접 해보시면 답이 되실 것 같아요.
즐공하세요 :)
HW가속기 설계에서 더 보완할 수 있는 방법이 있을까요?
1
57
2
UART0, 1 중 선택
1
90
2
datamoverbram모듈질문
1
85
2
vitis 설치엣 alveo kria versal 등 옵션을 끄고 설치를 했습니다.
1
119
2
vitis 설치 관련 질문 있습니다!
1
112
2
FPGA 공식문서 읽는법
1
115
2
보드 추가의 클릭창이 없습니다.
1
85
2
Edit in IP Packager에서 코드 수정 후 IP 수정하면 simulation에서 수정된 코드로 작동이 안됩니다
1
99
2
BRAM의 Read / Write를 다 수행했는지 확인할 때 사용되는 num_cnt / i_num_cnt 관련 질문
1
118
1
Vitis 코드 작성
1
139
2
vivado 및 vitis 리눅스 환경 설치 관련 질문드립니다.
1
319
3
[9장 led 점등 시간 제어 불가]
1
93
2
Platform Invalid 오류
1
167
3
WSL 설치 관련 문의드립니다!!
1
116
2
Vivado 툴, 파일 질문드립니다!
1
180
2
9장 LED 점등 안됨
1
129
3
Edit in IP Packager 이후에
1
98
1
Fpga 로직
1
105
2
pmu-fw is not running
1
148
2
Create Project에 대해서 궁금해요
1
102
2
장치관리자 USB 포트
1
117
2
FPGA 7장 AXI_LITE I/F질문
1
95
1
bram mover에서 합성할때
1
88
2
타이밍 위반 질문
1
88
2





