之前写了两篇关于Modelsim仿真的blog,其中模块管脚的命名可能让人觉得有些奇怪,其实不然,之前的两篇内容都是为了仿真SDRAM操作做铺垫的。
由于SDRAM的仿真过程相对比较复杂,也比较繁琐。故可能需要不止一篇blog来完成。
在开始仿真之前,如果对SDRAM原理以及时序不是很了解的朋友,推荐看一下如下这篇文章:
OK,下面正式开始仿真的过程。
通过看内存技术指南,我们大概可以总结出SDRAM的工作过程:
- 上电后进入200us的输入稳定期,空操作(NOP)
- 向SDRAM发送1次(1个时钟周期)预充电(precharge)命令,然后保持N个时钟周期NOP操作(N值可查芯片具体SDRAM芯片手册,与SDRAM工作的时钟频率有关)
- 向SDRAM发送8次刷新(refresh)命令,具体发送过程后面会介绍
- 设置SDRAM工作模式寄存器
- 初始化完毕,可以开始读写操作
PS:除了上述操作外,还有一个周期性的操作就是自刷新。拿我使用的芯片来说,需要每15us进行一次自刷新操作。(15us*4096=61.44ms < 64ms,为什么这么设置,请参考终极内存技术指南)
--------------------------------------------------------------------------------------------------------------------------------------------------------
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
---------------------------------------------------------------------------------------------------------------------------------------------------------
下面贴几张初始化相关的图片:

模式寄存器设置!!!

本文主要介绍了如何使用ModelSim进行SDRAM操作的仿真。首先,建议对SDRAM原理和时序不太熟悉的读者阅读相关文章。仿真前,SDRAM需要经过输入稳定期、预充电、刷新等步骤。然后设置工作模式寄存器,初始化完成后即可进行突发读/突发写的读写操作,突发长度通常为8,意味着每次传输16字节数据。
最低0.47元/天 解锁文章
2506

被折叠的 条评论
为什么被折叠?



