sdram读写

源代码在线查看: sdram_top.v

软件大小: 2845 K
上传用户: Whibrafy
关键词: sdram 读写
下载地址: 免注册下载 普通下载 VIP

相关代码

				`timescale 1ns / 1ps
				////////////////////////////////////////////////////////////////////////////////
				// Company		: 
				// Engineer		: 
				// Create Date	: 
				// Design Name	: 
				// Module Name	: sdram_top
				// Project Name	: 
				// Target Device: Cyclone EP1C3T144C8 
				// Tool versions: Quartus II 8.1
				// Description	: SDRAM封装控制顶层模块
				//				
				// Revision		: V1.0
				// Additional Comments	:  
				// 
				////////////////////////////////////////////////////////////////////////////////
				/*-----------------------------------------------------------------------------
				SDRAM接口说明:
					上电复位时,SDRAM会自动等待200us然后进行初始化,具体模式寄存器的
				设置参看sdram_ctrl模块。
					SDRAM的操作:
						控制sys_en=1,sys_r_wn=0,sys_wraddr,sys_data_in进行SDRAM数据写入
					操作;控制sys_en=1,sys_r_wn=1,sys_rdaddr即可从sys_data_out读出数据。
					同时可以通过查询sdram_busy的状态查看读写是否完成。	
				-----------------------------------------------------------------------------*/
				module sdram_top(
								clk,rst_n,
								sys_en,sdram_wr_ack,sdram_rd_ack,sys_r_wn,
								sys_wraddr,sys_rdaddr,sys_data_in,sys_data_out,sdram_busy,sys_dout_rdy,
								/*sdram_clk,*/sdram_cke,sdram_cs_n,sdram_ras_n,sdram_cas_n,
								sdram_we_n,sdram_ba,sdram_addr,sdram_data,sdwr_byte,sdrd_byte//,sdram_udqm,sdram_ldqm
							);
				
				input clk;		//系统时钟,100MHz
				input rst_n;	//复位信号,低电平有效
				
					// SDRAM的封装接口
				input sys_r_wn;			
				input sys_en;			
				output sdram_wr_ack;		//系统写SDRAM响应信号,作为wrFIFO的输出有效信号
				output sdram_rd_ack;		//系统读SDRAM响应信号
				input[21:0] sys_wraddr;		//读写SDRAM时地址暂存器,(bit21-20)L-Bank地址:(bit19-8)为行地址,(bit7-0)为列地址 
				input[21:0] sys_rdaddr;
				input[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数据输出完成标志
				input[8:0] sdwr_byte;		//突发写SDRAM字节数(1-256个)
				input[8:0] sdrd_byte;		//突发读SDRAM字节数(1-256个)
					// 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地址总线
				inout[15:0] sdram_data;		// SDRAM数据总线
				//output sdram_udqm;		// SDRAM高字节屏蔽
				//output sdram_ldqm;		// SDRAM低字节屏蔽
				
					// SDRAM内部接口
				wire[4:0] init_state;	// SDRAM初始化寄存器
				wire[3:0] work_state;	// SDRAM工作状态寄存器
				wire[8:0] cnt_clk;		//时钟计数	
				wire sys_r_wn;			// SDRAM读/写控制信号
								
				sdram_ctrl		module_001(		// SDRAM状态控制模块
													.clk(clk),						
													.rst_n(rst_n),
											//		.sdram_udqm(sdram_udqm),
											//		.sdram_ldqm(sdram_ldqm)													
													.sys_en(sys_en),
													//-----------input------------
													.sdram_wr_ack(sdram_wr_ack),
													.sdram_rd_ack(sdram_rd_ack),
													.sdwr_byte(sdwr_byte),
													.sdrd_byte(sdrd_byte),						
													.sdram_busy(sdram_busy),
													.sys_dout_rdy(sys_dout_rdy),
													.init_state(init_state),
													.work_state(work_state),
													.cnt_clk(cnt_clk),
													.sys_r_wn(sys_r_wn)
												);
				
				sdram_cmd		module_002(		// SDRAM命令模块
													.clk(clk),
													.rst_n(rst_n),
													.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),
													.sys_wraddr(sys_wraddr),	
													.sys_rdaddr(sys_rdaddr),									
													.sdwr_byte(sdwr_byte),
													.sdrd_byte(sdrd_byte),
													.init_state(init_state),	
													.work_state(work_state),
													.sys_r_wn(sys_r_wn),
													.cnt_clk(cnt_clk)
												);
				
				sdram_wr_data	module_003(		// SDRAM数据读写模块
													.clk(clk),
													.rst_n(rst_n),
											//		.sdram_clk(sdram_clk),
													.sdram_data(sdram_data),
													.sys_data_in(sys_data_in),
													.sys_data_out(sys_data_out),
													.work_state(work_state),
													.cnt_clk(cnt_clk)
												);
				
				
				endmodule
				
							

相关资源