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


- 操作模式:突发读/突发写
- 潜伏期:两个时钟周期
- 突发传输方式:顺序
- 突发长度:8 (SDRAM芯片:4Block,1M*16bit,共64Mbit)故突发长度8代表每次读或写命令传输的数据量为8*位宽=8*16bit=128bit=16字节 (暂不考虑数据掩码DQM)
| CKE | CS_n | RAS_n | CAS_n | WE_n | |
| 空操作(NOP) | 1 | 0 | 1 | 1 | 1 |
| 预充电(PRE) | 1 | 0 | 0 | 1 | 0 |
| 刷新 | 1 | 0 | 0 | 0 | 1 |
| 行有效 | 1 | 0 | 0 | 1 | 1 |
| 开始读 | 1 | 0 | 1 | 0 | 1 |
| 开始写 | 1 | 0 | 1 | 0 | 0 |
| 模式寄存器设置 | 1 | 0 | 0 | 0 | 0 |
(PS: _n结尾的信号代表低电平有效)
8次刷新操作,对应命令10001,注意每个命令之后都有执行一段时间的NOP操作,这使得SDRAM有时间执行命令。





用ModelSim仿真SDRAM操作的更多相关文章
- ModelSim仿真入门
ModelSim仿真入门之一:软件介绍 编写这个教程之前,为了让不同水平阶段的人都能阅读,我尽量做到了零基础入门这个目标,所有的操作步骤都经过缜密的思考,做到了详细再详细的程度. 如果您是FPGA开发 ...
- cordic算法的verilog实现及modelsim仿真
1. 算法介绍 CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,是J.D.Volder1于1959年首次提出,主要用于三角函数.双曲 ...
- 【黑金原创教程】【Modelsim】【第一章】Modelsim仿真的扫盲文
声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...
- 45.modelsim仿真include文件
modelsim仿真include文件会出现找不到文件的情况,这是因为include文件路径有两种,一种是相对路径,另一种是绝对路径. 相对路径: 如果 ‘include "primitiv ...
- 14.quartus联合modelsim仿真
在quartus调用modelsim仿真过程中,出现了一个错误,如下所示: Check the NativeLink log file I:/Quartus11.0/Myproject/testi_n ...
- 用Modelsim仿真QuartusII综合后网表时库的添加方法(转)
这两天做综合后仿真,发现FPGA器件库又不会加了,无奈上网找方法.说起来不好意思,很早就接触Modelsim这个仿真软件了,可是没有好好琢磨.把这两天找的方法贴出来,再加上自己的理解,以后忘了可以上博 ...
- modelsim 仿真时出现无限迭代(iteration reach limitation)的原因及其解决办法
modelsim 仿真时出现无限迭代(iteration reach limitation) 出现这种故障的原因: 一般都是代码里出现的组合逻辑无限循环或者组合逻辑A产生signal_A,signa ...
- modelsim仿真时让状态机波形显示状态的名字
在使用Verilog编写有限状态机等逻辑的时候,状态机的各个状态通常以参数表示(如IDLE等).当使用ModelSim仿真的时候,状态机变量在wave窗口中以二进制编码的形式显示,如下面所示,这种显示 ...
- ModelSim仿真教程
本文章详细介绍了怎样用ModelSim仿真Verilog,虽然只是很简单的一个二分频器的例子,但却正式小白入门所需要的. 本教程以ModelSim SE 10.4为例 1. 新建工程 file-> ...
随机推荐
- iOS7 iOS8 毛玻璃效果的分别实现
iOS8用系统的, iOS7用第三方的(效果还是挺快的.) https://github.com/KiranPatel-iOS/KPBlurEffect [_headBGIV sd_setImageW ...
- 致改变——总结&规划(2016·一)
今天是立夏,过完这一天意味着农历2016年的第一季度已经过去了,也意味着真正的夏天已经来了.如果说春天是作物的播种期的话,那夏天可以看做是作物的成长期,也是农民伯伯们最繁忙的时期.本文主要对自己过去的 ...
- 基于WebForm+EasyUI的业务管理系统形成之旅 -- 首页Portal界面拖拽(Ⅵ)
上篇<基于WebForm+EasyUI的业务管理系统形成之旅 -- 构建Web界面>,主要介绍系统界面布局.导出数据等. 本篇将介绍首页Portal界面拖拽. 一.首页Portal界面拖拽 ...
- POJ -- 3233 求“等比矩阵”前n(n <=10^9)项和
Matrix Power Series Description Given a n × n matrix A and a positive integer k, find the sum S = ...
- HW输入字符串长度,字符串,计数m。从前往后计数,当数到m个元素时,m个元素出列,同时将该元素赋值给m,然后从下一个数计数循环,直到所有数字都出列,给定的数全部为大于0的数字。输出出队队列。
package huawei; import java.util.Scanner; public class 约瑟夫环 { private static class Node { public int ...
- MYSQL存储过程中的IN、OUT和INOUT
MYSQL存储过程中的IN.OUT和INOUT,不能简单理解为一个方法的参数和返回值,而是面向整个过程上下文变量的. 一.MySQL 存储过程参数(in) 基本可以理解为传入function的参数,而 ...
- 取正在运行的DLL或EXE的路径
function GetSelfPath: string;var ModuleName: string; i: Integer;begin SetLength(ModuleName, 255); ...
- hdu 3996 (最大权闭合图)
题意:有n个区域布局,每个区域有一些金矿,挖开金矿需要一定的费用,可以得到一定的利润,要想挖开一个金矿,必须挖开所有在这个金矿上边的金矿,求最大利益,给的数据价值太大,用64位. 分析:如果一个金矿可 ...
- 抽象类Abstract的简单使用
写了一个比较简单易懂的例子,如下图 AbstractBaseClass是抽象的基类,Class1,Class2是继承他的子类,并实现他的方法. //AbstractBaseClass.cs里的代码 p ...
- 如何生成一副Poker
import java.util.LinkedList;import java.util.Random;//扑克类class Poker{ String color;//花色 String ...