FPGA Develop Note ——— RAM

这篇具有很好参考价值的文章主要介绍了FPGA Develop Note ——— RAM。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

FPGA Develop Note ——— RAM

RAM 的英文全称是 Random Access Memory,即随机存取存储器,简称随机存储器。它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址的存储单元中读出数据,其读写速度是由时钟频率决定的

Types
RAM类型 特性说明 数据读写口数量 地址口数量
Simple Port RAM 1、允许通过一个端口对存储进行读写访问。
2、只有一组数据总线、地址总线、时钟信号以及读写使能信号。
1 1
Simple Dual Port RAM 1、提供A和B两个端口,端口A只能进行写访问,端口B只能进行读访问。
2、有两组数据总线、地址总线、时钟信号以及读写使能信号。
1 2
True Dual Port RAM 1、提供A和B两个端口,两个端口均可对存储进行读写访问。 2、有两组数据总线、地址总线、时钟信号以及读写使能信号。 2 2
  • Vivado 软件自带的 Block Memory Generator IP 核(缩写为 BMG,中文名为块 RAM 生成器),可以用来配置生成 RAM 或者 ROM。RAM 是一种随机存取存储器,不仅可以读出存储的数据,同时还支持对存储的数据进行修改,而 ROM 是一种只读存储器,也就是说,在工作时只能读出数据,而不能写入数据。
  • 需要注意的是,配置生成的 RAM 或者 ROM 使用的都是 FPGA 内部的 BRAM 资源(Block RAM,即块随机存 储器,是 FPGA 厂商在逻辑资源之外,给 FPGA 加入的专用 RAM 块资源),只不过配置成 ROM 时只用到 了嵌入式 BRAM 的读数据端口。
  • Xilinx 7 系列器件内部的 BRAM 全部是真双端口 RAM,但是通过 BMG IP 核,我们还可以将其配置为伪双端口 RAM 或者单端口 RAM。

Operating Mode

时序图信号:

  • CLKA:时钟信号
  • WENA: 读/写使能信号。拉低时表示读数据;拉高时表示写数据。
  • DINA:输入信号流。
  • ADDRA:内存地址。
  • DOUTA:输出信号流。
  • ENA:使能信号。
  • Write First Mode(写优先):输入数据同时被写入内存并驱动到数据输出。
    FPGA Develop Note ——— RAM,fpga开发

  • Read First Mode(读优先):存储在写地址处的先前数据出现在数据输出上,而输入数据正在存储到内存中。
    FPGA Develop Note ——— RAM,fpga开发

  • No Change Mode(保持):输出锁存器保持不变。数据输出仍为先前的数据,并且不受在相同端口上进行的写操作的影响。
    FPGA Develop Note ——— RAM,fpga开发

Conclusion

Mode Description
Write First Mode 读取数据时,若此时有写操作,则读取到的是写入的数据。
Read First Mode 读取数据时,若此时有写操作,则读取到的仍然是内存中的数据。
No Change Mode 读取数据时,若此时有写操作,则读取到的写操作之前输出的数据。

RTL代码

参考了这篇博客

en -> enable

we -> write enable

din/out -> data in/out

  • Write First Mode
//write port
always @(posedge clk) begin
    if(en && we)
        RAM[addr] <= di;
end
 
//read port
always @(posedge clk) begin
    if(en)
        if(we)
            dout <= di;
        else
            dout <= RAM[addr];
end
  • Read First Mode
//write port
always @(posedge clk) begin
    if(en && we)
        RAM[addr] <= di;
end
 
//read port
always @(posedge clk) begin
    if(en)
        dout <= RAM[addr];
end
  • No Change Mode
//write port
always @(posedge clk) begin
    if(en && we)
        RAM[addr] <= di;
end
 
//read port
always @(posedge clk) begin
    if(en && !we)
        dout <= RAM[addr];
end

但对于单端口RAM,显然读写操作不能同时进行,不会发生冲突。但是还有操作模式的设定,这点笔者不太理解。文章来源地址https://www.toymoban.com/news/detail-840424.html

到了这里,关于FPGA Develop Note ——— RAM的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (34)FPGA IP设计(RAM)

    1.1 本节目录 1.2 IP核介绍 1.3 FPGA介绍 1.4 Verilog介绍 1.5 Vivado_RAM_IP设计 1.6 结束语 IP核有行为(Behavior)级、结构(Structure)级和物理(Physical)级三个层次的分类,对应着三个种类型的IP核,它们是由硬件描述语言设计的软核(Soft IP Core)、完成结构描述的固核(Firm IP Core) 和基于物理描述并

    2024年01月19日
    浏览(30)
  • FPGA原理与结构(8)——块RAM(Block RAM,BRAM)

    系列文章目录:FPGA原理与结构(0)——目录与传送门         大家对于RAM应该并不陌生,RAM就是一张可读可写的存储表,它经常被拿来与ROM进行对比,相比之下,ROM只可读。而在FPGA中,RAM一般可以分成两种,一种是使用LUT资源组成的分布式RAM(DRAM),另一种就是块RAM(B

    2024年02月08日
    浏览(26)
  • Quartus 平台 FPGA 片内 RAM 使用

    本文将以 Quartus 自带的 RAM:2-PORT 为例,介绍 EP4CE6E22C8 On Chip Memory 的使用 位于 On Chip Memory 下有两个 RAM IP 核 分别是单端口 RAM 和双端口 RAM: 单端口RAM只有一组地址线,这组地址线控制着写数据端口和读数据端口, 而双端口RAM具有两组地址线,这两组地址线分别控制着写数据

    2024年02月03日
    浏览(32)
  • FPGA之分布式RAM(2)

    下图中可以看出来,通过2个LUT的组合使用可以串联实现更大深度的分布式RAM.下图中出现了F7BMUX的加入, F7BMUX可以用于LUT输出的选通. 原语调用: RAM128XIS#(INIT(128\\\'h00000000000000000000000000000000) // Initial contents of RAM)RAM128XIS_inst ( .O(O),// 1-bit data output .A0(A0), .Al(AI),// Address[1] .A(A2), .A3(A3)

    2024年01月23日
    浏览(31)
  • #FPGA(IP_RAM 调用 )

    1.IDE:Quartus II 2.设备:Cyclone II  EP2C8Q208C8N   3.实验:调用单端口RAM仿真读取写入 4.时序图: 5.步骤: (1)添加一个初始化文件做对比,255递减到0(HEX文件) (2)仿真时出现报错,为配置的ram的.v文件没有添加,按如下方式解决。   6.代码: ram_ctrl.v tb_ram_ctrl.v  

    2024年02月19日
    浏览(25)
  • FPGA入门系列12--RAM的使用

    文章简介 本系列文章主要针对FPGA初学者编写,包括FPGA的模块书写、基础语法、状态机、RAM、UART、SPI、VGA、以及功能验证等。将每一个知识点作为一个章节进行讲解,旨在更快速的提升初学者在FPGA开发方面的能力,每一个章节中都有针对性的代码书写以及代码的讲解,可作

    2024年02月06日
    浏览(40)
  • 【FPGA】zynq 单端口RAM 双端口RAM 读写冲突 写写冲突

    RAM 的英文全称是 Random Access Memory,即随机存取存储器,简称随机存储器,它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址的存储单元中读出数据,其读写速度是由时钟频率决定的。 具体的分类讲解可以看SDRAM、DRAM及DDR FLASH ROM概念详解这篇文章

    2024年02月04日
    浏览(38)
  • FPGA原理与结构(6)——分布式RAM(Distributed RAM,DRAM)

    系列文章目录:FPGA原理与结构(0)——目录与传送门 目录 一、RAM概述 1、RAM基本概念 2、FPGA中RAM的分类 二、DRAM详解 1、FPGA资源         2、DRAM的配置形式 2.1 Single-Port(单端口) 2.2 Dual-Port(双端口) 2.3 Quad-Port(四端口) 2.4 Simple Dual-Port(简单双端口) 2.5 更大深度  

    2024年02月08日
    浏览(25)
  • FPGA入门系列12--RAM的使用1

    文章简介 本系列文章主要针对FPGA初学者编写,包括FPGA的模块书写、基础语法、状态机、RAM、UART、SPI、VGA、以及功能验证等。将每一个知识点作为一个章节进行讲解,旨在更快速的提升初学者在FPGA开发方面的能力,每一个章节中都有针对性的代码书写以及代码的讲解,可作

    2024年02月04日
    浏览(26)
  • FPGA简单双端口RAM——IP核

    环境: 1、Quartus18.0 2、vscode 3、板子型号:原子哥开拓者2(EP4CE10F17C8) 要求: 使用 Altera RAM IP 核生成一个简单双端口的 RAM,然后对 RAM 进行读写操作,并通过 Modelsim 软件进行仿真及 SignalTap 软件进行在线调试。 由前面的单端口学习我们知道RAM IP核分为单端口RAM以及双端口RAM,

    2024年02月07日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包