- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SDRAM仿真
SDRAM的工作过程:
上电后进入200us的输入稳定期,空操作(NOP)
向SDRAM发送1次(1个时钟周期)预充电(precharge)命令,然后保持N个时钟周期NOP操作
向SDRAM发送8次刷新(refresh)命令,具体发送过程后面会介绍
设置SDRAM工作模式寄存器
初始化完毕,可以开始读写操作
模式寄存器:
模式寄存器设置值为: 0x0,对应到上图可以看出,我的选择为:
操作模式:突发读/突发写
潜伏期:个时钟周期
突发传输方式:顺序
突发长度:
SDRAM的命令
RAS_N CAS_N WE_N 空操作(NOP) 1 1 1 预充电(PRE) 0 1 0 刷新 0 0 1 行有效 0 1 1 开始读 1 0 1 开始写 1 0 0 模式寄存器设置 0 0 0
CKE变高,片选信号CS_变低,SDRAM开始动作, SDRAM启动后的命令为111,即NOP操作,这一过程要持续近20us,称之为输入稳定期
2、预充电,对应命令010
注意每个命令之后都有执行一段时间的NOP操作,这使得SDRAM有时间执行命令。
,对应命令001。
注意每个命令之后都有执行一段时间的NOP操作,这使得SDRAM有时间执行命令。
,对应命令000。
从波形图可以看到,加载模式寄存器命令为000,此时0x037,与设置的相符。从这幅图中应该可以很清楚的看到,SDRAM时钟频率为100Mhz,同时与FPGA的SDRAM控制器的100MHZ时钟存在相位差,这是必要的。因为,在SDRAM控制器的时钟上升沿,产生命令,然后在随后的SDRAM时钟上升沿,命令已经稳定了,这样就方便了SDRAM顺利的取得命令。数据传输也是同样的道理。
从图中可以看出,首先SDRAM控制器发出了行有效命令(011),选中了第0个逻辑块的第0行,然后在个时钟周期后,发出了写命令(100),列地址为0,同时不加延迟的把第一个数据放在了sdram的数据总线上,该命令执行一次,可以看到写入了个16bit数据,这也就对应了前面所说的突发长度。
在写命令时,地址线的值为 0x400,其中的4对应 A10,给它设置1,表示允许自动预充电。SDRAM在每次读取操作后,逻辑为1的数据被读取后会放电,很有可能会导致其逻辑值变为0,故,需要再写入数据,保证读取后值不丢失。所以,自动预充电还是蛮必要的。
写完256个数据之后发送一次预充电命令(010)关闭激活的行。
5、读数据。
当读FIFO中数据个数据小于256时则发送读命令。从图中可以看出,首先SDRAM控制器发出了行有效命令(011),选中了第0个逻辑块的第行,然后在个时钟周期后,发出了写命令(10),列地址为0,…… 、512。在读完最后一个数的前两个时钟时发送预充电命令(010)关闭当前行。
读0x001行。
读第0x002行,
原创力文档


文档评论(0)