(1)单口RAM

1.无读使能rden信号的ModelSim功能仿真:

在不使用读使能rden信号的情况下,单口RAM仿真结果表明:

1.写使能wren为高时,写数据操作有效;

2.写使能wren为低时,读数据操作有效;

3.写有效(高)时,输出端q输出为刚写入的数据;

4.一般选择输出寄存一拍。

2.有读使能rden信号的ModelSim功能仿真:

在使用读使能rden信号的情况下,单口RAM仿真结果表明:

1.读使能rdren为高时,读数据操作有效;

2.写有效(高)时,读使能信号为低,则输出为上次读使能信号有效时的数据;

3.写有效(高)时,读也有效(高)时,输出端q输出为刚写入的数据。

 

另外,由于地址和数据在时钟上升沿改变,因而此刻有效值仍为改变前的值。在下一上升沿,改变后的值有效。再下一个上升沿,输出端q数据读出。所以,由时序结果好像是经过“两拍”后输出数据。这源于数据是边沿有效而不是中央有效(时序约束中也有涉及),同理SignalTap II中抓取的数据也会有这个情况。对于边沿有效,在时钟上升沿,信号的有效值为改变前的结果。

(2)双口RAM

双口RAM的仿真选用了真双口RAM,有两组PORT(A、B),初始内部数据为0。

仿真结果如下:

testbench中利用非阻塞赋值,在仿真时刻完成右值的更新,在仿真结束时刻完成左值的赋值。所以和单口RAM仿真中提到的一样,信号在第一个时钟沿改变数值,在第二个时钟沿有效,在第三个时钟沿输出数据(由于输出寄存一拍),这和实际情况也一致。

说明下图中几个标尺的解释:

1.在25000ps时刻,地址0写入数据f0h,在下一个时钟沿q_a端输出f0h,后面同理。

2.在155000ps时刻,A端口对地址2进行写操作,而B端口对地址2进行读操作,出现了Mixed Port Read-During_Write情况,在配置IP核时,我们选择了读端口输出Old memory contents appear,故此时B端口读出地址2原先的值f2h。同理,在165000ps时刻,B端口读出地址2原先的值02h。

另外对于下面的设置,有点不理解,不知和上面有何区别。

Altera自带的RAM仿真学习的更多相关文章

  1. 登录模块的进化史,带大家回顾java学习历程(二)

    接着前面的登录模块的进化史,带大家回顾java学习历程(一) 继续往下面讲 前面我们去实现登录功能,都是想着要完成这个功能,直接在处理实际业务的类中去开始写具体的代码一步步实现,也就是面向过程的编程. ...

  2. SimMechanics/Second Generation倒立摆模型建立及初步仿真学习

    笔者最近捣鼓Simulink,发现MATLAB的仿真模块真的十分强大,以前只是在命令窗口敲点代码,直到不小心敲入simulink,就一发不可收拾.话说simulink的模块化建模确实方便,只要拖拽框框 ...

  3. 晶体管放大电路与Multisim仿真学习笔记

    前言 开始写点博客记录学习的点滴,第一篇就写基本的共射极放大电路吧. 很多教材都是偏重理论,而铃木雅臣著作的<晶体管电路设计>是一本很实用的书籍,个人十分推荐! 下面开始我的模电重温之旅吧 ...

  4. eNSP仿真学习,网络入门!

    为了简单的认识Internet的框架的整体结构,简单学习华为的eNSP软件来高度模拟仿真网络框架!(华为和思科公司都发布了自己的网络设备仿真软件,当然我就用国产的吧~) 华为官方的eNSP学习论坛网站 ...

  5. altera DDR2 IP核之仿真

    在生成的IP核文件夹下,有一个testbench文件夹,里面包含了一个example测试激励和DDR2仿真模型. 如下 20 -rw-r--r-- 1 Administrator 197121 171 ...

  6. 带你零基础学习HTML5

    1个HTML5基础入门教程,4个HTML5小项目教程,带你零基础入门学习HTML5. [HTML5基础入门] 教程将会介绍HTML5中的新特性,包括结构标签.新型表单标签.文件操作.Canvas.本地 ...

  7. 专家PID控制仿真学习

    目录 专家控制 专家系统 专家控制 学习笔记,用于记录学习 资料:<智能控制>(第四版)--刘金琨 专家系统 一.专家系统的定义 专家系统是一类包含知识和推理的智能计算机程序,其内部包含某 ...

  8. 35.Android之带删除按钮EditText学习

    今天实现Android里自定义带删除功能的EditText,效果如下: 当输入内容时,EditText变为带有一个删除功能按钮的编辑框,如图: 实现代码很简单,直接上代码, 布局文件xml: < ...

  9. 登陆模块的进化史,带大家回顾java学习历程(一)

    一直在想着写点特别点的东西,让有兴趣学编程的人确实能学到点干货,今天就来随意写写. 大家在网上查找资料看到最多的demo估计就是登陆功能的演示了,为何大家偏爱拿登陆来做demo呢?因为行业应用类程序的 ...

随机推荐

  1. awk overview

    VARIABLES, RECORDS AND FIELDS AWK  variables are dynamic; they come into existence when they are fir ...

  2. Jenkins安装与构建部署

    Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:1.持续的软件版本发布 ...

  3. Windows下使用python

    Windows下使用python,一般安装python就有IDLE了,再这个里面使用就好了,很方便 安装完之后.py的文件右键会有Edit with IDLE,可是我脑残想要默认打开就是IDLE,结果 ...

  4. HTTP 请求:GET vs. POST

    两种在客户端和服务器端进行请求-响应的常用方法是:GET 和 POST. GET - 从指定的资源请求数据 POST - 向指定的资源提交要处理的数据 GET 基本上用于从服务器获得(取回)数据.注释 ...

  5. Memcached 常见的问题

    memcached是怎么工作的? Memcached的奇妙来自两阶段哈希(two-stage hash).Memcached就像一个巨大的.存储了非常多<key,value>对的哈希表. ...

  6. CSDN学院 免费技术答疑公开课,本周四场即将开播~~~

    为了酬谢广大学员,CSDN学院特推出免费技术答疑公开课,让您开启一段充实的学习之旅~ 本周四场即将开播! ----------------------------------------------- ...

  7. CentOS 5 上安装Oracle11g

    原创作品,出自 "深蓝的blog" 博客.欢迎转载.转载时请务必注明下面出处.否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlo ...

  8. linux 分区格式查看

    Linux分区格式查看 两个文件 /etc/fstab 和/etc/mtab /etc/fstab是用来存放文件系统的静态信息的文件,当系统启动的时候. 系统会自动地从这个文件读取信息,并且会自动将此 ...

  9. linux系统启动过程具体解释-开机加电后发生了什么 --linux内核剖析(零)

    本文參考了例如以下文章 深入理解linux启动过程 mbr (主引导记录(Master Boot Record)) 电脑从开机加电到操作系统main函数之前执行的过程 详细解释linux系统的启动过程 ...

  10. Shader 优化笔记

    如果shader中采了深度图,但是实际上相机没开深度图的话,会严重降帧. 做uv动画时应该 o.uv1.xy = v.uv * _Layer1_ST.xy + frac(_Layer1_ST.zw * ...