Finish top-module(axi_slave array_ctrl apb_cfg): 2025-08-13 16:39:12
This commit is contained in:
154
rtl/array_ctrl.v
Normal file
154
rtl/array_ctrl.v
Normal file
@@ -0,0 +1,154 @@
|
||||
module array_ctrl(
|
||||
input clk,
|
||||
input rst_n,
|
||||
|
||||
//axi2array_frame bus
|
||||
input axi2array_frame_valid,
|
||||
input [152:0] axi2array_frame_data,
|
||||
output axi2array_frame_ready,
|
||||
//array2axi_rdata bus
|
||||
output array2axi_rdata_valid,
|
||||
output [127:0] array2axi_rdata,
|
||||
//array if
|
||||
output array_csn,
|
||||
output [15:0] array_raddr,
|
||||
output array_caddr_vld_wr,
|
||||
output [5:0] array_caddr_wr,
|
||||
output array_wdata_vld,
|
||||
output [127:0] array_wdata,
|
||||
output array_caddr_vld_rd,
|
||||
output [5:0] array_caddr_rd,
|
||||
input array_rdata_vld,
|
||||
input [127:0] array_rdata,
|
||||
//apb_cfg
|
||||
input mc_work_en,
|
||||
input [7:0] array_inner_tras,
|
||||
input [7:0] array_inner_trp,
|
||||
input [7:0] array_inner_trcd_wr,
|
||||
input [7:0] array_inner_twr,
|
||||
input [7:0] array_inner_trcd_rd,
|
||||
input [7:0] array_inner_trtp,
|
||||
input array_ref_en,
|
||||
input [24:0] array_inner_tref0,
|
||||
input [24:0] array_inner_tref1,
|
||||
input array_inner_ref_sel
|
||||
|
||||
);
|
||||
|
||||
wire [1:0] array_mux_sel;
|
||||
wire array_wr_frame_valid;
|
||||
wire [151:0] array_wr_frame_data;
|
||||
wire array_rd_frame_valid;
|
||||
wire [151:0] array_rd_frame_data;
|
||||
wire array_ref_start;
|
||||
|
||||
wire array_wr_frame_ready;
|
||||
wire array_wr_done;
|
||||
wire array_wr_csn;
|
||||
wire [15:0] array_wr_raddr;
|
||||
|
||||
wire array_rd_frame_ready;
|
||||
wire array_rd_done;
|
||||
wire array_rd_csn;
|
||||
wire [15:0] array_rd_raddr;
|
||||
|
||||
wire array_ref_done;
|
||||
wire array_ref_csn;
|
||||
wire [15:0] array_ref_raddr;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
array_status_ctrl u_array_status_ctrl (
|
||||
.clk (clk),
|
||||
.rst_n (rst_n),
|
||||
.axi2array_frame_valid (axi2array_frame_valid),
|
||||
.axi2array_frame_data (axi2array_frame_data),
|
||||
.axi2array_frame_ready (axi2array_frame_ready),
|
||||
.array_wr_frame_valid (array_wr_frame_valid),
|
||||
.array_wr_frame_data (array_wr_frame_data),
|
||||
.array_wr_frame_ready (array_wr_frame_ready),
|
||||
.array_wr_done (array_wr_done),
|
||||
.array_rd_frame_valid (array_rd_frame_valid),
|
||||
.array_rd_frame_data (array_rd_frame_data),
|
||||
.array_rd_frame_ready (array_rd_frame_ready),
|
||||
.array_rd_done (array_rd_done),
|
||||
.array_ref_start (array_ref_start),
|
||||
.array_ref_done (array_ref_done),
|
||||
.array_mux_sel (array_mux_sel),
|
||||
.mc_work_en (mc_work_en),
|
||||
.array_ref_en (array_ref_en),
|
||||
.array_inner_tref0 (array_inner_tref0),
|
||||
.array_inner_tref1 (array_inner_tref1),
|
||||
.array_inner_ref_sel (array_inner_ref_sel)
|
||||
);
|
||||
|
||||
// 实例化被测试模块(DUT)
|
||||
array_wr u_array_wr(
|
||||
.clk (clk),
|
||||
.rst_n (rst_n),
|
||||
.array_wr_frame_valid(array_wr_frame_valid),
|
||||
.array_wr_frame_data(array_wr_frame_data),
|
||||
.array_wr_frame_ready(array_wr_frame_ready),
|
||||
.array_wr_done (array_wr_done),
|
||||
.array_wr_csn (array_wr_csn),
|
||||
.array_wr_raddr (array_wr_raddr),
|
||||
.array_caddr_vld_wr (array_caddr_vld_wr),
|
||||
.array_caddr_wr (array_caddr_wr),
|
||||
.array_wdata_vld (array_wdata_vld),
|
||||
.array_wdata (array_wdata),
|
||||
.array_inner_tras (array_inner_tras),
|
||||
.array_inner_trp (array_inner_trp),
|
||||
.array_inner_trcd_wr(array_inner_trcd_wr),
|
||||
.array_inner_twr (array_inner_twr)
|
||||
);
|
||||
|
||||
// 实例化被测试模块(DUT)
|
||||
array_rd u_array_rd(
|
||||
.clk (clk),
|
||||
.rst_n (rst_n),
|
||||
.array_rd_frame_valid(array_rd_frame_valid),
|
||||
.array_rd_frame_data(array_rd_frame_data),
|
||||
.array_rd_frame_ready(array_rd_frame_ready),
|
||||
.array_rd_done (array_rd_done),
|
||||
.array_rd_csn (array_rd_csn),
|
||||
.array_rd_raddr (array_rd_raddr),
|
||||
.array_caddr_vld_rd (array_caddr_vld_rd),
|
||||
.array_caddr_rd (array_caddr_rd),
|
||||
.array_rdata_vld (array_rdata_vld),
|
||||
.array_rdata (array_rdata),
|
||||
.array_inner_tras (array_inner_tras),
|
||||
.array_inner_trp (array_inner_trp),
|
||||
.array_inner_trcd_rd(array_inner_trcd_rd),
|
||||
.array_inner_trtp (array_inner_trtp),
|
||||
.array2axi_rdata_valid(array2axi_rdata_valid),
|
||||
.array2axi_rdata (array2axi_rdata)
|
||||
);
|
||||
|
||||
// 实例化待测试模块
|
||||
array_ref u_array_ref (
|
||||
.clk (clk),
|
||||
.rst_n (rst_n),
|
||||
.array_ref_start (array_ref_start),
|
||||
.array_ref_done (array_ref_done),
|
||||
.array_ref_csn (array_ref_csn),
|
||||
.array_ref_raddr (array_ref_raddr),
|
||||
.array_inner_tras (array_inner_tras),
|
||||
.array_inner_trp (array_inner_trp)
|
||||
);
|
||||
|
||||
array_mux u_array_mux (
|
||||
.array_wr_csn (array_wr_csn),
|
||||
.array_wr_raddr (array_wr_raddr),
|
||||
.array_rd_csn (array_rd_csn),
|
||||
.array_rd_raddr (array_rd_raddr),
|
||||
.array_ref_csn (array_ref_csn),
|
||||
.array_ref_raddr (array_ref_raddr),
|
||||
.array_mux_sel (array_mux_sel),
|
||||
.array_csn (array_csn),
|
||||
.array_raddr (array_raddr)
|
||||
);
|
||||
|
||||
endmodule
|
Reference in New Issue
Block a user