Initial commit: Loongson FPGA SoC project for 2026 CIC-IEC
This commit is contained in:
47
rtl/ip/bram0/my_bram0.v
Normal file
47
rtl/ip/bram0/my_bram0.v
Normal file
@@ -0,0 +1,47 @@
|
||||
`timescale 1ns / 1ps
|
||||
|
||||
module my_bram0 #(
|
||||
parameter DATA_WIDTH = 32, // 数据位宽,默认 32 bit
|
||||
parameter ADDR_WIDTH = 10 // 地址位宽 10 bit,对应深度 1024
|
||||
)(
|
||||
// ======== Port A (Write Only) ========
|
||||
input wire clka,
|
||||
input wire ena,
|
||||
input wire wea,
|
||||
input wire [ADDR_WIDTH-1:0] addra,
|
||||
input wire [DATA_WIDTH-1:0] dina,
|
||||
|
||||
// ======== Port B (Read Only) ========
|
||||
input wire clkb,
|
||||
input wire enb,
|
||||
input wire [ADDR_WIDTH-1:0] addrb,
|
||||
output reg [DATA_WIDTH-1:0] doutb
|
||||
);
|
||||
|
||||
// 声明二维数组作为存储介质
|
||||
// 使用 (* ram_style = "block" *) 强制 Vivado 综合器将其映射为 BRAM 资源
|
||||
(* ram_style = "block" *) reg [DATA_WIDTH-1:0] ram [0:(1<<ADDR_WIDTH)-1];
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Port A: 同步写入逻辑
|
||||
//-------------------------------------------------------
|
||||
always @(posedge clka) begin
|
||||
// ena 是整个端口的使能,wea 是具体的写使能标志
|
||||
// 在你的例化中 wea 恒为 1'b1,所以实际由 ena 控制写入
|
||||
if (ena) begin
|
||||
if (wea) begin
|
||||
ram[addra] <= dina;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Port B: 同步读出逻辑
|
||||
//-------------------------------------------------------
|
||||
always @(posedge clkb) begin
|
||||
if (enb) begin
|
||||
doutb <= ram[addrb];
|
||||
end
|
||||
end
|
||||
|
||||
endmodule
|
||||
Reference in New Issue
Block a user