module sdr_test(
clk,rst_n,
sdram_clk,sdram_cke,sdram_cs_n,sdram_ras_n,sdram_cas_n,sdram_we_n, sdram_ba,sdram_addr,sdram_data,//sdram_udqm,sdram_ldqm rs232_tx,
sdram_rd_req,sdram_wr_ack,sdram_rd_ack, sys_data_out,sdram_busy,sys_data_in,sys_dout_rdy,
/*
*/ rdf_dout/*,rdf_rdreq*/ );
//系统时钟,100MHz //复位信号,低电平有效
input clk; input rst_n;
// FPGA与SDRAM硬件接口
// SDRAM时钟信号 // SDRAM时钟有效信号 // //
SDRAM片选信号
// SDRAM行地址选通脉冲 // SDRAM列地址选通脉冲 // SDRAM写允许位 SDRAM的L-Bank地址线
output sdram_clk; output sdram_cke; output sdram_cs_n; output sdram_ras_n; output sdram_cas_n;
output sdram_we_n; output[1:0] sdram_ba; output[11:0] sdram_addr; //output sdram_udqm; //output sdram_ldqm; inout[15:0] sdram_data;
output rs232_tx;
// SDRAM地址总线 // SDRAM高字节屏蔽 // SDRAM低字节屏蔽 // SDRAM数据总线
//RS232发送数据信号
//////////////////////////////////////////////// // SDRAM的封装接口测试引出 /*output sdram_rd_req; output sdram_wr_ack; output sdram_rd_ack; output[15:0] sys_data_in;
//系统读SDRAM请求信号 //系统写SDRAM响应信号
//系统读SDRAM响应信号
//写SDRAM时数据暂存器,4个突发读写字数据,默认为00地
址bit15-0;01地址bit31-16;10地址bit47-32;11地址bit63-48
output[15:0] sys_data_out; //读SDRAM时数据暂存器,(格式同上) output sdram_busy; output sys_dout_rdy;
// SDRAM忙标志,高表示SDRAM处于工作中 // SDRAM数据输出完成标志 //sdram数据读出缓存FIFO输出数据总线
//sdram数据读出缓存FIFO数据输出请求,高有效
*/
output[15:0] rdf_dout; //output rdf_rdreq;
////////////////////////////////////////////////
// SDRAM的封装接口 wire sdram_wr_req; //系统写SDRAM请求信号 wire sdram_rd_req; //系统读SDRAM请求信号 wire sdram_wr_ack; wire sdram_rd_ack;
//系统写SDRAM响应信号,作为wrFIFO的输出有效信号 //系统读SDRAM响应信号,作为rdFIFO的输写有效信号
wire[21:0] sys_addr; //读写SDRAM时地址暂存器,(bit21-20)L-Bank地址:(bit19-8)为行地址,(bit7-0)为列地址 wire[15:0] sys_data_in;
//写SDRAM时数据暂存器
wire[15:0] sys_data_out;//sdram数据读出缓存FIFO输入数据总线 wire sdram_busy; wire sys_dout_rdy;
// SDRAM忙标志,高表示SDRAM处于工作中 // SDRAM数据输出完成标志
//wrFIFO输入控制接口
wire[15:0] wrf_din; //sdram数据写入缓存FIFO输入数据总线 wire wrf_wrreq; //sdram数据写入缓存FIFO数据输入请求,高有效 //rdFIFO输出控制接口 wire[15:0] rdf_dout; wire rdf_rdreq;
//sdram数据读出缓存FIFO输出数据总线
//sdram数据读出缓存FIFO数据输出请求,高有效
//系统控制相关信号接口
wire clk_25m; //PLL输出25MHz时钟
wire clk_100m; //PLL输出100MHz时钟 wire sys_rst_n;
//------------------------------------------------ //例化系统复位信号和PLL控制模块 sys_ctrl
uut_sysctrl( .clk(clk),
.rst_n(rst_n),
.sys_rst_n(sys_rst_n), .clk_25m(clk_25m), .clk_100m(clk_100m), .sdram_clk(sdram_clk) );
//系统复位信号,低有效
//------------------------------------------------ //例化SDRAM封装控制模块 sdram_top
uut_sdramtop( // SDRAM .clk(clk_100m), .rst_n(sys_rst_n),
);
// //
.sdram_wr_req(sdram_wr_req), .sdram_rd_req(sdram_rd_req), .sdram_wr_ack(sdram_wr_ack), .sdram_rd_ack(sdram_rd_ack), .sys_addr(sys_addr), .sys_data_in(sys_data_in), .sys_data_out(sys_data_out), .sys_dout_rdy(sys_dout_rdy), //.sdram_clk(sdram_clk), .sdram_busy(sdram_busy), .sdram_cke(sdram_cke), .sdram_cs_n(sdram_cs_n), .sdram_ras_n(sdram_ras_n), .sdram_cas_n(sdram_cas_n), .sdram_we_n(sdram_we_n), .sdram_ba(sdram_ba), .sdram_addr(sdram_addr), .sdram_data(sdram_data) .sdram_udqm(sdram_udqm), .sdram_ldqm(sdram_ldqm)
//------------------------------------------------ //读写SDRAM数据缓存FIFO模块例化 sdfifo_ctrl
uut_sdffifoctrl( .clk_25m(clk_25m),
.clk_100m(clk_100m), .wrf_din(wrf_din),
.wrf_wrreq(wrf_wrreq), .sdram_wr_ack(sdram_wr_ack), //.sys_addr(sys_addr), .sys_data_in(sys_data_in),
.sdram_wr_req(sdram_wr_req), .sys_data_out(sys_data_out), .rdf_rdreq(rdf_rdreq), .sdram_rd_ack(sdram_rd_ack), .rdf_dout(rdf_dout),
.sdram_rd_req(sdram_rd_req), .syswr_done(syswr_done), .tx_start(tx_start)
);
//------------------------------------------------
//例化模拟写入数据到sdram模块 wire syswr_done; datagene
//所有数据写入sdram完成标志位 uut_datagene( .clk(clk_25m), .rst_n(sys_rst_n),
);
.wrf_din(wrf_din), .wrf_wrreq(wrf_wrreq), .moni_addr(sys_addr), .syswr_done(syswr_done), .sdram_rd_ack(sdram_rd_ack)
//------------------------------------------------ //例化串口数据发送控制模块 wire tx_start; //串口发送数据启动标志位,高有效 uart_ctrl
uut_uartctrl( .clk(clk_25m), .rst_n(sys_rst_n),
.tx_data(rdf_dout[7:0]), .tx_start(tx_start),
///////////
.fifo232_rdreq(rdf_rdreq), .rs232_tx(rs232_tx) );
Endmodule
module datagene( clk,rst_n, wrf_din,wrf_wrreq,
);
//FPAG输入时钟信号25MHz //FPGA输入复位信号
moni_addr,syswr_done, sdram_rd_ack
input clk; input rst_n;
//wrFIFO输入控制接口 output[15:0] wrf_din; //sdram数据写入缓存FIFO输入数据总线 output wrf_wrreq;
//sdram数据写入缓存FIFO数据输入请求,高有效
output[21:0] moni_addr; //sdram读写地址产生 output syswr_done; //所有数据写入sdram完成标志位

