此IP简单易用,亲自测试可以跑到145M,读写控制信号只有wr和rd两个,其余(地址、数据、突发等)均根据个人需要配置,wr和rd一样时不操作,wr为1,rd为0时为写操作,反之为读操作,需要强调突发写时需要等待writeable为1后在时钟上升沿依此放置数据,读取时在readable为1时方可在上升沿读取数据。本人使用的sdram为HY57V641620E(L/S)T(P)-6
如有bug请一定告知,谢谢
如有bug请一定告知,谢谢
RTL代码如下:
module sdram_common(clk,rst,cke,cs,ba,a,ras,cas,we,udqm,ldqm,dq,wr,rd,burst_length,addr_row,addr_column,data_in,over,bank,readable,writeable);
input clk;//sdram输入
input rst;//sdram复位
input wr;//sdram写使能
input rd;//sdram读使能,wr和rd一样时为无操作,当wr为1rd为0时为写反之为读
input [11:0] addr_row;//sdram行地址
input [7:0] addr_column;//sdram列地址
input [15:0] data_in;//数据输入
input [2:0] burst_length;//当为000时无突发,为001时突发为2,为010时突发为4,为011时突发为8,为100时为页突发(256)
input [1:0] bank;//选择四片中哪一片
inout [15:0] dq;//链接sdram的数据端口
output cke;//连接sdram的时钟使能端口
output cs;//连接sdram的片选端口
output [1:0] ba;//连接sdram的bank端口
output [11:0] a;//连接sdram的地址端口
output ras;//连接sdram的行地址选择端口
output cas;//连接sdram的列地址选择端口
output we;//连接sdram的写使能端口
output udqm;//
output ldqm;//数据掩码端口
output over;//操作结束指示信号,上升沿或高电平有效
output readable;//可读信号,高电平有效,高电平时在时钟上升沿获取读到的数据
output writeable;//突发写时在这个信号高电平时上升沿开始放着数据,单写时无需此信号
reg [15:0] dq_r;