해결된 질문
작성
·
450
1
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 으로 사용하지 못할 것 같습니다.
해봐야 알 것 같은데, 그 부분은 질문자님께서 하실 수 있는 내용이라 판단이 되네요.
직접 해보시면 답이 되실 것 같아요.
즐공하세요 :)