📄 isocm_bram_elaborate.v
字号:
////////////////////////////////////////////////////////////////////////////////
// isocm_bram_elaborate.v
////////////////////////////////////////////////////////////////////////////////
module isocm_bram_elaborate
(
// instance GLOBAL
BRAM_Addr_B,
BRAM_EN_A,
BRAM_Dout_A,
BRAM_EN_B,
BRAM_Dout_B,
BRAM_Din_A,
BRAM_Din_B,
BRAM_WEN_A,
BRAM_Clk_A,
BRAM_WEN_B,
BRAM_Clk_B,
BRAM_Rst_A,
BRAM_Rst_B,
BRAM_Addr_A);
// instance GLOBAL
input [0:31] BRAM_Addr_B;
input BRAM_EN_A;
input [0:63] BRAM_Dout_A;
input BRAM_EN_B;
input [0:63] BRAM_Dout_B;
output [0:63] BRAM_Din_A;
output [0:63] BRAM_Din_B;
input [0:1] BRAM_WEN_A;
input BRAM_Clk_A;
input [0:1] BRAM_WEN_B;
input BRAM_Clk_B;
input BRAM_Rst_A;
input BRAM_Rst_B;
input [0:31] BRAM_Addr_A;
parameter C_MEMSIZE = 8192;
parameter C_PORT_DWIDTH = 64;
parameter C_PORT_AWIDTH = 32;
parameter C_NUM_WE = 2;
parameter C_FAMILY = "virtex2p";
////////////////////////////////////////////////////////////////////////////////
// internal signals
////////////////////////////////////////////////////////////////////////////////
wire [63:0] dina;
wire [63:0] dinb;
wire [63:0] douta;
wire [63:0] doutb;
wire net_gnd0;
wire [0:1] net_gnd2;
////////////////////////////////////////////////////////////////////////////////
// Power assignments
assign net_gnd0 = 1'b0;
assign net_gnd2 = 2'b00;
////////////////////////////////////////////////////////////////////////////////
// Constant assignments
////////////////////////////////////////////////////////////////////////////////
// Top-level port assignments
assign dina = BRAM_Dout_A;
assign dinb = BRAM_Dout_B;
assign BRAM_Din_A = douta;
assign BRAM_Din_B = doutb;
////////////////////////////////////////////////////////////////////////////////
// Lower-level assignments
////////////////////////////////////////////////////////////////////////////////
RAMB16_S18_S18 ramb16_s18_s18_0
(
.DIA (dina[63:48]),
.DIB (dinb[63:48]),
.DOPA (),
.DOPB (),
.CLKA (BRAM_Clk_A),
.ADDRA (BRAM_Addr_A[19:28]),
.CLKB (BRAM_Clk_B),
.DOA (douta[63:48]),
.ADDRB (BRAM_Addr_B[19:28]),
.ENA (BRAM_EN_A),
.DOB (doutb[63:48]),
.ENB (BRAM_EN_B),
.SSRA (net_gnd0),
.SSRB (net_gnd0),
.DIPA (net_gnd2),
.DIPB (net_gnd2),
.WEA (BRAM_WEN_A[0]),
.WEB (BRAM_WEN_B[0]));
////////////////////////////////////////////////////////////////////////////////
RAMB16_S18_S18 ramb16_s18_s18_1
(
.DIA (dina[47:32]),
.DIB (dinb[47:32]),
.DOPA (),
.DOPB (),
.CLKA (BRAM_Clk_A),
.ADDRA (BRAM_Addr_A[19:28]),
.CLKB (BRAM_Clk_B),
.DOA (douta[47:32]),
.ADDRB (BRAM_Addr_B[19:28]),
.ENA (BRAM_EN_A),
.DOB (doutb[47:32]),
.ENB (BRAM_EN_B),
.SSRA (net_gnd0),
.SSRB (net_gnd0),
.DIPA (net_gnd2),
.DIPB (net_gnd2),
.WEA (BRAM_WEN_A[0]),
.WEB (BRAM_WEN_B[0]));
////////////////////////////////////////////////////////////////////////////////
RAMB16_S18_S18 ramb16_s18_s18_2
(
.DIA (dina[31:16]),
.DIB (dinb[31:16]),
.DOPA (),
.DOPB (),
.CLKA (BRAM_Clk_A),
.ADDRA (BRAM_Addr_A[19:28]),
.CLKB (BRAM_Clk_B),
.DOA (douta[31:16]),
.ADDRB (BRAM_Addr_B[19:28]),
.ENA (BRAM_EN_A),
.DOB (doutb[31:16]),
.ENB (BRAM_EN_B),
.SSRA (net_gnd0),
.SSRB (net_gnd0),
.DIPA (net_gnd2),
.DIPB (net_gnd2),
.WEA (BRAM_WEN_A[1]),
.WEB (BRAM_WEN_B[1]));
////////////////////////////////////////////////////////////////////////////////
RAMB16_S18_S18 ramb16_s18_s18_3
(
.DIA (dina[15:0]),
.DIB (dinb[15:0]),
.DOPA (),
.DOPB (),
.CLKA (BRAM_Clk_A),
.ADDRA (BRAM_Addr_A[19:28]),
.CLKB (BRAM_Clk_B),
.DOA (douta[15:0]),
.ADDRB (BRAM_Addr_B[19:28]),
.ENA (BRAM_EN_A),
.DOB (doutb[15:0]),
.ENB (BRAM_EN_B),
.SSRA (net_gnd0),
.SSRB (net_gnd0),
.DIPA (net_gnd2),
.DIPB (net_gnd2),
.WEA (BRAM_WEN_A[1]),
.WEB (BRAM_WEN_B[1]));
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -