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

article/2025/9/28 22:00:28

      伪双口RAM从灵活度上来说,刚好介于单口RAM和真双口RAM之间,但是不得不说它是RAM中应用最广的配置类型,其难能可贵地兼顾了真双口RAM的读写灵活性,也兼顾了单口RAM的设计稳定性。因为伪双口RAM只有一个端口可以向地址中写入数据,而另外一个端口只可以从地址中读出数据,所以这既避免了真双口RAM的大概率性读写冲突的窘境,也完善了单口RAM无法同时读写地址的缺陷。

      在这个练习中去用伪双口RAM IP来实现异步时钟FIFO的功能,用RAM来实现FIFO,这也是RAM在工程项目当中非常重要的一个应用,看到这里有些同学可能会问明明已经有现成的FIFO IP核了,为何还需要多此一举再用RAM模拟FIFO的功能呢,通过前面的博客学习实践,其实大家也已经逐渐掌握了FIFO和RAM之间的异同点以及适用背景,这里用RAM来实现FIFO的功能在工程应用中可以弥补了FIFO不能重复读出数据、和不能覆盖数据的缺陷,可以理解成升级版的FIFO。

       这里来设计一个经典的模块通过伪双口RAM来实现异步时钟FIFO功能,本模块包含读写位宽均为8位,读写深度是32的伪双口RAM,然后类似上一小节的FIFO练习,上游模块最多可以写入30个数据,每次输入写进本模块的数据信号ram_din和其指示信号ram_din同时到来,然后下游模块输入rdy信号时,本模块即向下游模块输出读出数据信号ram_ dout和其指示信号ram_dout_vld,同时为了方便观察,也把ram_wea写使能信号例化出来,如图2到4分别为伪双口RAM IP核的内存类型配置和端口AB的配置,本练习的信号列表如表1所示。

       在这个练习中,我们wr_cnt和rd_cnt用以计数写入RAM数量和读出RAM数量,如图1伪双口RAM IP练习中各个信号的波形图,因为本模块相对设计比较复杂些,所以笔者在这里也用TimeGen把整个模块的各个信号量的波形图绘制出来,具体细节请大家参考图5伪双口RAM IP练习的代码设计,因为写入ram数据需要同一时钟下,在给出具体ram_wr_addr的同时ram_wea 为高且ram_wr_din被写入正确的数据,而读出ram数据,需要在给定ram_rd_addr后的一个时钟周期,ram_rd_dout才可以读出其正确的数据,在这里ram_dout_vld用了时序逻辑,来人为弥补ram_rd_dout较ram_rd_addr误差的一个时钟周期。如图6是本模块的输入信号激励设计,大家代入Modelsim后可以观察到如图7的仿真结果,可以观察到在ram_din_vld被拉高的周期内,上游模块输入了ram_din写入数据,而再下游模块输入rdy的信号时,本模块立刻拉高ram_dout_vld信号,并输出对应的ram_dout读出数据,仿真结果完全符合设计预期。

        这篇博客也是最后一篇FPGA基础实践,后期FPGA博客更新将主要围绕上篇博客列举的20个经典实战例程展开。

信号列表

信号名

I/O

位宽

clk_in

I

1

rst_n

I

1

rdy

I

1

ram_din

I

8

ram_din_vld

I

1

clk_out

I

1

ram_dout

O

8

ram_dout_vld

O

1

ram_wr_addr

O

5

ram_rd_addr

O

5

ram_wea

O

1

表1 伪双口RAM IP练习设计中的信号列表

图1 伪双口RAM IP练习中各个信号的波形图

图2 伪双口RAM IP核的内存类型配置

图3  伪双口RAM IP核的端口A配置

图4 伪双口RAM IP核的端口B配置

图5 伪双口RAM IP练习的代码设计

图6 伪双口RAM IP核练习的输入信号激励设计

图7 伪双口RAM IP核练习的仿真结果


http://chatgpt.dhexx.cn/article/6PCLBZT6.shtml

相关文章

数字 IC 技能拓展(24)单口、伪双口、真双口 RAM、单口、双口 ROM 的区别与联系

正文 打开 IP Catalog,搜索 Block Memory Generator,即可看到其 Memory Type 可分为 5 中,分别是单口 RAM(Single Port RAM)、伪双口 RAM(Simple Dual Port RAM)、真双口 RAM(True Dual Port RAM)、单口 ROM(Single Port ROM)、双口 ROM(Dual Port ROM)。 一、单口…

FPGA系列8——Block RAM(单口RAM、伪双口RAM、真双口RAM)区别

1、Block RAM Xlinx的BRAM可以配置成单口RAM、伪双口RAM、真双口RAM、单口ROM和双口ROM五种类型。 2、Block RAM使用的资源 下图以36Kb的BRAM为例,不论BRAM配置成什么模式(上面提到的五种模式),存储的阵列的大小只和数据位宽和地址大小配置有关&#x…

双口RAM,值得研究

在FPGA设计过程中,使用好双口RAM,也是提高效率的一种方法。 官方将双口RAM分为简单双口RAM和真双口RAM。 简单双口RAM只有一个写端口,一个读端口。 真双口RAM分别有两个写端口和两个读端口。 无论是简单双口RAM还是真双口RAM,在…

单端口和双端口RAM的区别

1---不详细的讲一下Xilinx的BMG:单端口和双端口RAM的区别 真双口 RAM 有两个时钟(clka & clkb)、两组输入输出数据线(dina & douta & dinb & doutb)、两组地址线(addra & addrb&#x…

如何实现三种不同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 即标识了局域网是本地,局部组建的一种私有网络。局域网内的主机之间能方便的进行网络通信,又称为内网;局…