⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdr_test.v

📁 sdram读写
💻 V
字号:
`timescale 1ns / 1ps
////////////////////////////////////////////////////////////////////////////////
// Company		: 
// Engineer		: 
// Create Date	: 
// Design Name	: 
// Module Name	: sdr_test
// Project Name	: 
// Target Device: Cyclone EP1C3T144C8 
// Tool versions: Quartus II 9.1
// Description	: 
//				
// Revision		: V1.0
// Additional Comments	:  
// 
////////////////////////////////////////////////////////////////////////////////
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_ldqm,sdram_udqm, led,
	/*			sdram_rd_req,sdram_wr_ack,sdram_rd_ack,
				sys_data_out,sdram_busy,sys_data_in,sys_dout_rdy,
			*/	rdf_dout/*,rdf_rdreq*/
			);

input clk;			//系统时钟,100MHz
input rst_n;		//复位信号,低电平有效

	// FPGA与SDRAM硬件接口
output sdram_clk;			//	SDRAM时钟信号
output sdram_cke;			//  SDRAM时钟有效信号
output sdram_cs_n;			//	SDRAM片选信号
output sdram_ras_n;			//	SDRAM行地址选通脉冲
output sdram_cas_n;			//	SDRAM列地址选通脉冲
output sdram_we_n;			//	SDRAM写允许位
output[1:0] sdram_ba;		//	SDRAM的L-Bank地址线
output[11:0] sdram_addr;	//  SDRAM地址总线
//output sdram_udqm;			// SDRAM高字节屏蔽
//output sdram_ldqm;			// SDRAM低字节屏蔽
inout[15:0] sdram_data;		// SDRAM数据总线

output rs232_tx;		//RS232发送数据信号
output[3:0] led;

output sdram_udqm;
output sdram_ldqm;

assign sdram_ldqm=1'b0;
assign sdram_udqm=1'b0;
////////////////////////////////////////////////
	// SDRAM的封装接口测试引出
/*output sdram_rd_req;			//系统读SDRAM请求信号
output sdram_wr_ack;		//系统写SDRAM响应信号
output sdram_rd_ack;		//系统读SDRAM响应信号	
output[15:0] sys_data_in;	//写SDRAM时数据暂存器,4个突发读写字数据,默认为00地址bit15-0;01地址bit31-16;10地址bit47-32;11地址bit63-48

output[15:0] sys_data_out;	//读SDRAM时数据暂存器,(格式同上)
output sdram_busy;			// SDRAM忙标志,高表示SDRAM处于工作中
output sys_dout_rdy;			// SDRAM数据输出完成标志
*/
output[15:0] rdf_dout;		//sdram数据读出缓存FIFO输出数据总线	
//output rdf_rdreq;			//sdram数据读出缓存FIFO数据输出请求,高有效

////////////////////////////////////////////////


	// SDRAM的封装接口
wire sys_en;			//系统写SDRAM请求信号
wire sys_r_wn;			//系统读SDRAM请求信号
wire sdram_wr_ack;			//系统写SDRAM响应信号,作为wrFIFO的输出有效信号
wire sdram_rd_ack;			//系统读SDRAM响应信号,作为rdFIFO的输写有效信号	
//wire[21:0] sys_addr;		//读写SDRAM时地址暂存器,(bit21-20)L-Bank地址:(bit19-8)为行地址,(bit7-0)为列地址 

wire[8:0] sdwr_byte = 9'd256;		//突发写SDRAM字节数(1-256个)
wire[8:0] sdrd_byte = 9'd256;		//突发读SDRAM字节数(1-256个)
wire[21:0] sys_wraddr;		//写SDRAM时地址暂存器,(bit21-20)L-Bank地址:(bit19-8)为行地址,(bit7-0)为列地址 
wire[21:0] sys_rdaddr;		//读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;			// SDRAM忙标志,高表示SDRAM处于工作中
wire sys_dout_rdy;			// SDRAM数据输出完成标志

	//wrFIFO输入控制接口
wire[15:0] wrf_din;		//sdram数据写入缓存FIFO输入数据总线
wire wrf_wrreq;			//sdram数据写入缓存FIFO数据输入请求,高有效
	//rdFIFO输出控制接口
wire[15:0] rdf_dout;		//sdram数据读出缓存FIFO输出数据总线	
wire rdf_rdreq;			//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),
							.sys_en(sys_en),
							.sys_r_wn(sys_r_wn),
							.sdram_wr_ack(sdram_wr_ack),
							.sdram_rd_ack(sdram_rd_ack),	
							.sys_wraddr(sys_wraddr),
							.sys_rdaddr(sys_rdaddr),
							.sys_data_in(sys_data_in),
							.sys_data_out(sys_data_out),
							.sdwr_byte(sdwr_byte),
							.sdrd_byte(sdrd_byte),	
							.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),
						.rst_n(sys_rst_n),
						.wrf_din(wrf_din),//SDRAM wrfifo的数据输入总线,即外部数据存入SDRAM的数据总线
						.wrf_wrreq(wrf_wrreq),//SDRAM wrfifo的写请求信号
						.sdram_wr_ack(sdram_wr_ack),//SDRAM数据写入响应信号,数据在写入SDRAM时为高电平,写入完毕或读状态时为低,出现下降沿表示数据写入完成
						.sys_data_in(sys_data_in),//内部信号,SDRAM数据输入总线(wrfifo输出,SDRAM DATABUS输入)
						.sys_en(sys_en),//内部信号,sdram工作使能信号,0:SDRAM不工作
						.sys_data_out(sys_data_out),//内部信号,SDRAM数据输出总线(rdfifo输入,SDRAM DATABUS输出)
						.rdf_rdreq(rdf_rdreq),//用户读SDRAM rdfifo请求信号
						.sdram_rd_ack(sdram_rd_ack),//SDRAM数据读出响应信号,读SDRAM时为高电平
						.rdf_dout(rdf_dout),//sdram rdfifo数据输出
						.sys_r_wn(sys_r_wn),
						.syswr_done(syswr_done),
						.tx_start(tx_start)		
						);	
						
//------------------------------------------------
//例化模拟写入数据到sdram模块
wire syswr_done;		//所有数据写入sdram完成标志位
datagene			uut_datagene(
						.clk(clk_25m),
						.rst_n(sys_rst_n),
						.wrf_din(wrf_din),
						.wrf_wrreq(wrf_wrreq),
						.sys_wraddr(sys_wraddr),
						.sys_rdaddr(sys_rdaddr),
						.syswr_done(syswr_done),
						.sdram_busy(sdram_busy),
						.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)
					);

led_test uut_led_test(
					.clk(clk_25m),
					.sys_rst_n(sys_rst_n),
					.led(led)
					);
endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -