金牌会员
 
- 积分
- 1866
- 金钱
- 1866
- 注册时间
- 2017-10-8
- 在线时间
- 227 小时
|

楼主 |
发表于 2025-3-18 11:46:46
|
显示全部楼层
仿真代码内容是:`timescale 1ps/100fs
//`define clock_period 20
module tp_top_ddr3_rw;
parameter DQ_WIDTH = 32;
parameter MEMORY_WIDTH = 16;
localparam NUM_COMP = DQ_WIDTH/MEMORY_WIDTH;
parameter clk_period = 10000;
reg sys_clk ; //系统时钟,50MHz
reg sys_rst_n ; //复位,低有效
// DDR3 IO接口 ;
wire ddr3_reset_n ;
wire [0:0] ddr3_ck_p_sdram ;
wire [0:0] ddr3_ck_n_sdram ;
wire [0:0] ddr3_cke_sdram ;
wire [0:0] ddr3_cs_n_sdram ;
wire ddr3_ras_n_sdram ;
wire ddr3_cas_n_sdram ;
wire ddr3_we_n_sdram ;
wire [3:0] ddr3_dm_sdram ;
wire [2:0] ddr3_ba_sdram ;
wire [13:0]ddr3_addr_sdram ;
wire [31:0]ddr3_dq_sdram ;
wire [3:0] ddr3_dqs_p_sdram ;
wire [3:0] ddr3_dqs_n_sdram ;
wire ddr3_odt_sdram;
//用户
wire [1:0] led ; //led灯
//复位信号
initial begin
sys_rst_n = 1'b0;
#200000
sys_rst_n = 1'b1;
end
//时钟信号
initial sys_clk=1'b0;
always sys_clk =#(clk_period) ~sys_clk;
top_ddr3_rw u_top_ddr3_rw(
.sys_clk (sys_clk) , //系统时钟,50MHz
.sys_rst_n (sys_rst_n) , //复位,低有效
.ddr3_dq (ddr3_dq_sdram) , //ddr3 数据
.ddr3_dqs_n (ddr3_dqs_n_sdram) , //ddr3 dqs负
.ddr3_dqs_p (ddr3_dqs_p_sdram) , //ddr3 dqs正
.ddr3_addr (ddr3_addr_sdram) , //ddr3 地址
.ddr3_ba (ddr3_ba_sdram) , //ddr3 banck 选择
.ddr3_ras_n (ddr3_ras_n_sdram) , //ddr3 行选择
.ddr3_cas_n (ddr3_cas_n_sdram) , //ddr3 列选择
.ddr3_we_n (ddr3_we_n_sdram) , //ddr3 读写选择
.ddr3_reset_n (ddr3_reset_n) , //ddr3 复位
.ddr3_ck_p (ddr3_ck_p_sdram) , //ddr3 时钟正
.ddr3_ck_n (ddr3_ck_n_sdram) , //ddr3 时钟负
.ddr3_cke (ddr3_cke_sdram) , //ddr3 时钟使能
.ddr3_cs_n (ddr3_cs_n_sdram) , //ddr3 片选
.ddr3_dm (ddr3_dm_sdram) , //ddr3_dm
.ddr3_odt (ddr3_odt_sdram) , //ddr3_odt
.led (led) //led灯
);
genvar i;
generate
for (i = 0; i < NUM_COMP; i = i + 1) begin: gen_mem
ddr3_model u_comp_ddr3
(
.rst_n (ddr3_reset_n ),
.ck (ddr3_ck_p_sdram ),
.ck_n (ddr3_ck_n_sdram ),
.cke (ddr3_cke_sdram ),
.cs_n (ddr3_cs_n_sdram ),
.ras_n (ddr3_ras_n_sdram),
.cas_n (ddr3_cas_n_sdram),
.we_n (ddr3_we_n_sdram ),
.dm_tdqs (ddr3_dm_sdram[(2*(i+1)-1) 2*i)]),
.ba (ddr3_ba_sdram ),
.addr (ddr3_addr_sdram ),
.dq (ddr3_dq_sdram[16*(i+1)-1:16*(i)]),
.dqs (ddr3_dqs_p_sdram[(2*(i+1)-1) 2*i)]),
.dqs_n (ddr3_dqs_n_sdram[(2*(i+1)-1) 2*i)]),
.tdqs_n (),
.odt (ddr3_odt_sdram)
);
end
endgenerate
endmodule
|
|