Note: 以下内容可能会有错误的地方,仅供参考,详细请查阅Xilinx官方产品指南《pg058-blk-mem-gen》 !

BMG即Block Memory Generator,是Xilinx配置BRAM的IP核,可将BRAM配置成如图所示的5种类型。

RAM分三种,单端口RAM、伪双端口RAM(Simple Dual)和双端口RAM(True Dual),它们之间的区别是什么呢?先看看它们的接口。

可以看到它们的接口区别

伪双端口RAM很好理解,相当于读写分开,addra、dina和wea完成写,addrb和doutb完成读,你读你的,我写我的,互不干扰。

单端口RAM的通过一个端口对存储进行读写访问是什么意思呢?通过下图的仿真可以看到,数据读端口douta一直都有输出对应地址的数据,当wea拉高时,会将数据写入对应的地址,因为该仿真选择的Operating Mode是Write First,所以wea拉高时douta输出的数据与此时写入的数据是一致的。所以单端口RAM的读写不能同时进行,在读的时候需要重新生成对应的读地址给addra,并且disable掉wea 。

输出douta对应地址addra的延时为2个时钟周期,这是因为默认勾选了Output Register选项的原因,RAM在输出前打了一拍,如果去掉这个选项,延时则变为1个时钟周期。

双端口RAM有两个端口独立,那它们是操作不同的Memory还是操作同一个Memory呢?如果是同一个Memory不会冲突吗?先看第一个仿真,仿真条件如下:

1 写使能web与wea相同 ;

2 地址addra和addrb不同 ;

3 输入数据dina和dinb相同;

从曲线看端口A和B好像是操作的不同的Memory,而注意看直线的话,会发现在wea拉高时,端口A向地址1写的是21,端口B向地址1写的是26,而wea拉低时,端口A输出的却是26,这里就可以确认端口A和B访问的是同一块Memory了。 所以通过以上仿真我们得到的结论是双端口其实是两组地址对同一块Memory进行读写。 仿真里看到当两个端口同时写一个地址的时候,写入该地址的是端口B的数据,但仿真毕竟不是真实的情况,实际上是该地址的结果是未知的。ug058里有提到 。

pg058中还有这么一段话:

The Simple Dual-Port RAM is like a true dual-port RAM where only the Write interface of the A port and the Read interface of B port are connected.

所以对于双端口RAM,我们在外部控制的时候如果只把A端口用作写,B端口用作读,那其实就和伪双端口RAM一样了。

所以结论是:

无论是单端口RAM、伪双端口RAM还是双端口RAM,他们都只有一块Memory,通过下图同样深度和宽度设置的单端口和双端口RAM的资源消耗也可以说明。并且他们都是通过寻址的方式访问这块Memory,区别对应Memory的接口数量不同,也即是所谓的端口不同。

寻址就是输入地址,输出对应地址中存储的数据,且如果写使能wea有效,则同时将与该地址同步的输入端din的数据写入该地址。同时读写的时候会有冲突,该冲突的解决方式与选择的Operating Mode有关,详情请查看Xilinx产品指南pg058。

单端口RAM:只有一个地址接口addra,对应有一对读写的数据接口dina和douta;

伪双端口RAM:有两个地址接口addra和addrb,但却只有一对读写的数据接口dina和doutb,所以叫他伪双端口;

双端口RAM:则拥有两个地址接口,并且每个地址接口都有对应的读写数据接口,所以叫真双端口RAM,真双端口RAM支持两个端口同时对Memory进行访问,有效的提高了访问速度。同样的,对于双端口的ROM,我们可以通过两个端口同时读取ROM中的数据,所以如果两个processor是访问同样的一组数据的话,就不需要例化两个相同的ROM了。

Vivado中单端口和双端口RAM的区别相关推荐

  1. 单端口RAM、伪双端口RAM、双端口RAM、以及FIFO的区别

    FPGA设计中,存储器是必不可少的.FPGA中常见的存储器件有RAM以及FIFO,RAM又可细分为单端口RAM.伪双端口RAM和双端口RAM.之前对其基本概念与使用已经进行了介绍,现在只重点将他们进行 ...

  2. 数字IC设计系列----单端口RAM、双端口RAM、同步FIFO、异步FIFO

    目录​​​​​​​ 一.单端口RAM原理及实现 1.1.原理 1.2.Verilog实现 1.3.优缺点分析 2.双端口RAM原理及实现 2.1.原理 2.2.Verilog实现 2.3.优缺点分析 ...

  3. FPGA中Block RAM和分布式RAM的区别?分别适用的场景是什么?

    FPGA中Block RAM和分布式RAM的区别?分别适用的场景是什么? 1 Block RAM 2 查找表存储器--分布式RAM 3 嵌入式存储器的使用方法 FPGA芯片内有两种存储器资源:一种叫b ...

  4. 【FPGA】双端口RAM的设计(异步读写)

    上篇写了双端口RAM设计(同步读写):https://blog.csdn.net/Reborn_Lee/article/details/90647784 关于异步读写和同步读写,在单端口RAM设计中也 ...

  5. 【FPGA】双端口RAM的设计(同步读写)

    之前的博文都是讲单端口RAM的,它们仅有一套控制输入,例如cs,we,oe,还有数据总线以及地址. [FPGA]单端口RAM的设计(同步读.同步写) 附上太多链接,我也累,自己找吧. 双端口RAM,顾 ...

  6. 【linux开发】IO端口和IO内存的区别及分别使用的函数接口

    IO端口和IO内存的区别及分别使用的函数接口 每个外设都是通过读写其寄存器来控制的.外设寄存器也称为I/O端口,通常包括:控制寄存器.状态寄存器和数据寄存器三大类.根据访问外设寄存器的不同方式,可以把 ...

  7. 【计算机组成原理】双端口RAM和多模块存储器

    目的 提高CPU访问存储器的速度 双端口RAM 定义:指同一个存储器有左.右两个独立的端口. 特点: 两个端口分别具有两组相互独立的地址线,数据线和读写控制线. 允许两个独立的控制器同时异步地访问存储 ...

  8. (计算机组成原理)第三章存储系统-第五节1:双端口RAM和多模块存储器

    文章目录 一:双端口RAM 二:多模块存储器-多体并行 (1)高位交叉编址 (2)低位交叉编址 前面我们说到了存取周期的概念,存取周期是指可以连续读写的最短时间间隔.DRAM芯片,其恢复时间是比较长的 ...

  9. 【正点原子FPGA连载】第十九章IP核之双端口RAM实验 -摘自【正点原子】新起点之FPGA开发指南_V2.1

    1)实验平台:正点原子新起点V2开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=609758951113 2)全套实验源码+手册+视频下载地址:ht ...

最新文章

  1. 弹出窗口, 不显示工具栏等。
  2. Linux系统下MySQL数据库的备份和恢复
  3. snmp 获取 虚拟机硬盘_服务器出故障了怎么办?SNMP告警七步走
  4. Javascript弹出对话框 确定取消转到不同页面
  5. 同事:别加班了,今天可是你们1024程序员节啊!
  6. redhat下使用mrtg监控主机流量
  7. JQuery事件——鼠标事件
  8. recect build 打包发布后访问出现404错误的简易解决方法
  9. 图的绝对中心(bzoj 2180: 最小直径生成树)
  10. cad怎么表示出一个孔_怎么训练出一个NB的Prophet模型
  11. 每天一个实用小技巧!巧妙利用Mac标记,分类同类文件
  12. javascript学习资料汇集
  13. 【Git】Git国内官网下载地址、淘宝镜像下载地址以及卸载安装
  14. 飞鱼星的虚拟服务器设置,设置简单功能丰富 三步就能设置好_飞鱼星 G7_网络设备无线网络和技术-中关村在线...
  15. c语言oj中的wa是什么意思,杭电oj1002题一直是WA ,然而格式什么的都对啊?求教OAO...
  16. WinCC 在线变量绘制趋势图(自定义内部变量-随机数据)
  17. 7.2 可分离变量的微分方程
  18. 使用lettuce和redisTemplate操作redis cluster踩坑日记
  19. 我本不属于人间—献给全世界最伟大的女性
  20. 2021年美国大学生数学建模竞赛(题目详细介绍)

热门文章

  1. 测试CH340C的功能,制作MicroPython ESP8266,ESP32下载器
  2. 计算机导论的学科知识体,依托学科课程体系的《计算机导论》课程改革
  3. C翻译汇编语言,[求助]求人帮忙把汇编语言程序翻译成C或者C++
  4. linux io函数,Linux下普通IO文件操作函数---C语言
  5. Python3 基础语法(笔记1)
  6. IC基础知识(2)模拟和数字电子学导论
  7. 如何使用RS-232发射器和接收器?
  8. 【 MATLAB 】信号处理工具箱的信号产生函数之 square 函数简记
  9. 【FPGA】FPGA中的缓冲与驱动那些事
  10. 离散周期信号的傅里叶变换