单端口和双端口RAM的区别

article/2025/9/28 21:58:36

1---不详细的讲一下Xilinx的BMG:单端口和双端口RAM的区别

==真双口 RAM 有两个时钟(clka & clkb)、两组输入输出数据线(dina & douta & dinb & doutb)、两组地址线(addra & addrb),两个使能端(ena & enb)、两个写使能端(wea & web)。两个端口都可以进行读写操作(Port a 和 Port b 可以一起读或者一起写或者一个读一个写)。整体上,读、写可以同时进行。

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

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

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

这里写图片描述

可以看到它们的接口区别

RAM类型官方解释数据读写接口数量地址接口数量
单端口允许通过一个端口对存储进行读写访问11
伪双端口提供了两个端口A和B,通过端口A进行写访问,通过端口B进行读访问。12
双端口提供两个端口A和B,这两个端口都可以对存储进行读写访问22

——
伪双端口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不会冲突吗?先看第一个仿真,仿真条件如下:

  • 写使能web与wea相同
  • 地址addra和addrb不同
  • 输入数据dina和dinb相同

这里写图片描述

从图中可以看到addra和addrb都同时在访问Memory,因为地址不同,所以好像没有什么冲突,那如果他们同时操作一个地址会怎么样呢?

  • 写使能web与wea相同
  • 地址addra和addrb相同
  • 输入数据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了。

        其他参考:https://www.baidu.com/link?url=4okOVygu4L_WGRQRNyRLX79tuneRIDt1bazfKr5jNeFFWGY4L0rumD7aopWurLBCuSYIueftvu0b-D8UKpriiq&wd=&eqid=9392a0de000cc234000000035da19582

http://chatgpt.dhexx.cn/article/Cc6KncIP.shtml

相关文章

如何实现三种不同RAM?(单端口RAM、伪双端口RAM、真双端口RAM|verilog代码|Testbench|仿真结果)

如何实现三种不同RAM? 一、前言二、单端口2.1 原理2.2 verilog代码2.3 Testbench2.4 仿真结果 三、真双端口3.1 原理3.2 verilog代码3.3 Testbench3.4 仿真结果 四、伪双端口4.1 原理4.2 verilog代码4.3 Testbench4.4仿真结果 五、总结 数字IC经典电路设计 经典电路…

真双口RAM读写设计

dual port ram ---DP RAM 1.1 概念1.2 读写冲突处理1.3 三种端口比较1.4 真双口RAM读写代码1.5 仿真波形 1.1 概念 真双端口RAM有两个独立的读写端口,每个端口都可以独立发起读或者写。1.2 读写冲突处理 1、读和写冲突:如果读和写同时有效,且…

计算机组成原理_双口RAM和多模块存储器

计算机组成原理总目录 双口RAM和多模块存储器 1. 双口RAM 双口RAM,即RAM存储器有两个可供CPU读写的端口 在这样的结构体下,CPU在读写RAM时会出现以下四种情况 两个端口对不同地址单元进行读写操作,则二者互不影响两个端口对同一地址单元进行…

双口ram读写

项目名称 双口ram读写 具体要求 将0-1023存入ram并读出,a端口写入数据,b端口读出数据,两个端口的时钟频率设置相同,仿真时以50m写入12.5m读取 单端口时读和写不能同时进行,双端口ram多了一个读地址,可以同时读写 …

单口RAM、双口RAM、FIFO

单口RAM、双口RAM、FIFO 单口与双口 单口与双口的区别在于,单口只有一组数据线与地址线,因此读写不能同时进行;而双口有两组数据线与地址线,读写可同时进行;FIFO读写可同时进行,可以看作是双口&#xff1…

双口RAM浅谈

双口RAM, 基本上是10年前的东西了,当前设计的项目应该很少会用到这类器件了,不光是双口RAM,其它随着MCU性能的不断增加,很多器件都会被替代到,不再需要了,比如CPLD,之前公司的板子上…

FPGA之RAM详解,真双口RAM的使用

真双口RAM IP练习 真双口RAM可以说是灵活性最大的RAM IP核,因为它赋予了用户最大的设计空间,两个可以独立读写地址空间的端口,充分释放了FPGA程序设计上的可能。 但是实际上真双口RAM在工程项目中还是和单双口RAM一样使用频率比较低的&#x…

双口ram

双口ram的功能实在很妙,能把二个除理器合二为一,强强联合,发挥更强的功能。如小时候看过的动画片,当打不过怪物时,动画的主角总会合体,增加战斗力,把怪物打败。又口ram提供了处理器“合体”的方…

数字IC笔面基础,项目常用IP——双口RAM(简介及Verilog实现)

双口RAM简介及Verilog实现 写在前面的话双口RAM简介伪双口RAM框图:(Xilinx FPGA)真双口RAM框图:(Xilinx FPGA)RAM读写时序图伪双口RAM读写实列 简单的双口RAM的Verilog实现总结 写在前面的话 RAM&#xff…

双口RAM及Vivado RAM IP核的使用

目录 1.双口RAM概述 2.Vivado 双口RAM IP核 2.1 Block Memory Generator概述 2.2 真双口RAM的设置 2.2.1 Basic设置 2.2.2 Port设置 3.双口RAM例程 4.仿真 4.后记 5.参考文献 1.双口RAM概述 双口RAM(dual port RAM)在异构系统中应用广泛&…

网络原理(一):初识网络

网络发展史 独立模式 独立模式:计算机之间相互独立; 在计算机最初的时候,每个计算机都是独立存在的。 我们拿游戏来举例,但是的计算机只能玩玩单机游戏,游戏通过了就没意思了。 随着时代的发展,来到了…

网络原理(小结)

网络原理 前言网络七层/五层模型OSI七层网络模型TCP/IP 五层网络模型封装和分用 TCP/IP五层网络模型各层代表协议的详解应用层常见状态码HTTP常见Header头ServletSession和CookieHTTP协议的特点HTTPSHTTP与HTTPS的区别 传输层网络传输的五元组端口号UDP协议TCP协议TCP如何保证数…

网络原理 | 网络初识之网络基础概念学习

目录 局域网与广域网 网络通信基础 IP地址 端口号 网络协议 五元组 局域网与广域网 根据网络互联的规模,可以将网络划分为局域网(LAN)和广域网(WAN). 网络互连即将多台计算机连接在一起,完成数据共享,数据共享的本质是网络数据传输&…

网络的基本原理

文章目录 一、计算机网络背景二、局域网和广域网1.局域网(LAN)2.广域网(WAN) 三、认识协议1.协议的概念2.协议分层3.网络OSI七层模型4.TCP/IP五层模型5.数据的封装和解包 四、局域网内主机交互与跨网段主机交互 一、计算机网络背景 我们用计算机完成一项工作时,不可…

网络:网络协议基本原理

引入 进程间通信,其实是通过内核的数据结构完成的,主要用于在一台linux上两个进程之间的通信。但是,一旦超出一台机器的范畴,我们就需要一种跨进程的通信机制。一台机器将自己想要表达的内容,按照某种约定好的格式发送…

网络原理(初识)

网络原理(网络初识) 1、局域网LAN(Local Area Network) (1)Local 即标识了局域网是本地,局部组建的一种私有网络。局域网内的主机之间能方便的进行网络通信,又称为内网;局…

网络原理(IP协议)

目录 IP协议IP地址IP 地址由网络和主机两部分标识组成IP 地址的分类广播地址IP多播子网掩码 路由IP 地址与路由控制 IP 分包与组包什么是IP分片为什么要进行IP分片IP分片是如何组装的路径 MTU 发现 IP协议 IP(IPv4、IPv6)相当于 OSI 参考模型中的第3层—…

网络原理——网络协议

目录 传输层协议TCP协议TCP协议格式段TCP原理连接管理可靠传输流量控制拥塞控制延迟应答和捎带应答错误检测TCP异常 UDP协议UDP协议格式段UDP协议特点无连接不可靠面向数据报大小受限 网络层协议IP协议 数据链路层协议​以太网MTUARP协议 传输层协议 ​ 传输层负责数据能够从发…

网络原理 2

文章目录 1. 网络层2. 数据链路层3. DNS 前言 : 上文已经 将 网络层 和 传输层 说完了, 下面我们来学习以下 网络层 和 数据链路层 里 相关的知识 , 关于 网络层 和 数据链路层 的知识 简单了解一下即可 . 1. 网络层 网络层 主要 做两件事 : 1.地址管…

计算机网络原理最详细解说

一、计算机网络概述 时代不同了,大家现在生活都好了,家家户户基本都有电脑,而且我们都习惯了使用电脑办公,打打游戏,聊聊天等等。 那我们一起来想一个场景:如果没有了网络,我们是不是就不能使…