双端口BRAM 具有两套独立的时钟、数据、地址、控制信号,允许两套信号独立的对RAM进行随机地址访问。虽然双口BRAM两套接口都可以操作ram,但是操作的都是同一片空间。
1、真双端口bram
两套信号都可以对RAM进行读写操作。HDL code 描述如下:
reg [7:0] RAM[0:255]
// A 口
always@()
begin
if(we_A == 1'b1)
begin
RAM[addr_A] <= din_A ;
end
dout_A <= RAM[addr_A] ;
end
// B 口
always@(posedge clk)
begin
if(we_B == 1'b1)
begin
RAM[addr_B] <= din_B ;
end
dout_B <= RAM[addr_B] ;
end
2、简单双端口BRAM
A 口 写、B口读
reg [7:0] RAM[0:255] ;
// A口
always@(posedge clk)
begin
if(we == 1'b1)
begin
RAM[addr_A] <= din_A ;
end
end
//B 口
always@(posedge clk)
begin
dout_B <= RAM[addr_B] ;
end