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 으로 사용하지 못할 것 같습니다.
해봐야 알 것 같은데, 그 부분은 질문자님께서 하실 수 있는 내용이라 판단이 되네요.
직접 해보시면 답이 되실 것 같아요.
즐공하세요 :)
UART0, 1 중 선택
1
58
2
datamoverbram모듈질문
1
66
2
vitis 설치엣 alveo kria versal 등 옵션을 끄고 설치를 했습니다.
1
101
2
vitis 설치 관련 질문 있습니다!
1
87
2
FPGA 공식문서 읽는법
1
99
2
보드 추가의 클릭창이 없습니다.
1
72
2
Edit in IP Packager에서 코드 수정 후 IP 수정하면 simulation에서 수정된 코드로 작동이 안됩니다
1
83
2
BRAM의 Read / Write를 다 수행했는지 확인할 때 사용되는 num_cnt / i_num_cnt 관련 질문
1
108
1
Vitis 코드 작성
1
130
2
vivado 및 vitis 리눅스 환경 설치 관련 질문드립니다.
1
295
3
[9장 led 점등 시간 제어 불가]
1
83
2
Platform Invalid 오류
1
153
3
WSL 설치 관련 문의드립니다!!
1
98
2
Vivado 툴, 파일 질문드립니다!
1
157
2
9장 LED 점등 안됨
1
113
3
Edit in IP Packager 이후에
1
88
1
Fpga 로직
1
92
2
pmu-fw is not running
1
128
2
Create Project에 대해서 궁금해요
1
91
2
장치관리자 USB 포트
1
102
2
FPGA 7장 AXI_LITE I/F질문
1
91
1
bram mover에서 합성할때
1
80
2
타이밍 위반 질문
1
81
2
rvalid 초기화
1
68
2





