[FPGA IP系列] FPGA常用存储资源大全(RAM、ROM、CAM、SRAM、DRAM、FLASH)

这篇具有很好参考价值的文章主要介绍了[FPGA IP系列] FPGA常用存储资源大全(RAM、ROM、CAM、SRAM、DRAM、FLASH)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文主要介绍FPGA中常用的RAM、ROM、CAM、SRAM、DRAM、FLASH等资源。

一、RAM

RAM(Random Access Memory)是FPGA中最基本和常用的内部存储块,根据不同架构可以实现不同容量,最大可达几十Mb。

FPGA中的RAM主要包括:

  • 分布式RAM:存在于逻辑块(LE)中的小容量RAM,通常为几百比特到几千比特。

  • 块RAM:FPGA中专门用于实现RAM功能的大容量存储块,每个块RAM容量从几kb到几十kb不等。

  • UltraRAM:某些高端FPGA特有的大容量RAM块,比块RAM具有更高的密度和带宽。

1、分布式RAM

分布式RAM利用查找表(LUT)的功能实现,不需要占用额外Flip-Flop,但会占用可用于逻辑实现的LUT资源。

每个LUT可以实现一个小容量的RAM,例如6输入LUT实现64位RAM。

注意分布式RAM只能实现同步读写操作。

2、块RAM

每个块RAM通常有单端口、双端口和四端口版本。

支持同步读写操作,可以通过多端口实现FIFO等功能。

例如Xilinx UltraScale FPGA中一个块RAM容量为36kb,位宽可配置,延时很小,频率可以达到550MHz。

3、UltraRAM

UltraRAM集成在部分高端FPGA中,每个UltraRAM可以达到数十Mb的容量,具有比块RAM更高的密度和带宽。

UltraRAM可以与块RAM一起使用,实现更大容量的存储解决方案。

Verilog 代码示例

(* ram_style = "distributed" *) reg [7:0] dist_ram[0:63]; // 64 x 8 的分布式RAM  
(* ram_style = "block" *) reg [31:0] block_ram[0:1023]; // 1K x 32 的块RAM  
(* ram_style = "ultra" *) reg [7:0] ultra_ram[0:262143]; // 256K x 8 的UltraRAM 

二、 ROM

ROM(Read-Only Memory)是只读存储器,用于存放不需修改的数据。

FPGA中的ROM主要有:

  • 分布式ROM:使用LUT实现,容量很小。

  • 块ROM:使用块RAM实现,容量较大。

ROM在配置时写入数据,之后数据不能修改。ROM主要用于存放程序代码等不变数据。

Verilog 代码示例

(* rom_style = "distributed" *) reg [7:0] dist_rom[0:31]; // 32 x 8 分布式ROM  
(* rom_style = "block" *) reg [31:0] block_rom[0:2047]; // 2K x 32 块ROM  

三、CAM

CAM(Content-Addressable Memory)是一种特殊类型的内存结构,也称为内容可寻址存储器,可以通过内容查找数据所在位置。

FPGA中的CAM主要应用有:

  • 网络查找:根据目的地址查找路由端口。

  • 缓存查询:根据TAG查询缓存中是否存在数据。

CAM的工作原理是基于硬件电路的快速匹配。

当输入一串数据时,CAM会同时比较这串数据与内部存储的所有数据项。如果找到完全匹配的数据项,CAM就会输出该数据项的地址。

CAM的优点包括:高速查找、精确匹配、并行处理。

CAM的缺点:容量受限、功耗较高、价格昂贵。

四、SRAM

SRAM(Static RAM)是一种常用的随机访问存储器(RAM)类型,它以静态方式存储数据,不需要定期刷新。也称为静态随机存储器。

SRAM在速度和功率消耗方面表现优异,但是容量较小,成本较高。

SRAM通常用于存储CPU或FPGA内部的寄存器、缓存或临时变量等。

SRAM主要由存储单元阵列、地址解码器和读写控制电路等组成。每个存储单元都包含一个双口RAM,可以独立地进行读/写操作。每个RAM有两位,即一个存储单元可以存储一个比特(bit)的数据。

SRAM还可以实现预读取功能,即在读取数据的同时,预读下一个数据,从而提高访问速度。此外,SRAM还可以实现双端口访问,即同时对两个不同的存储单元进行读写操作。

Verilog 代码示例

sram_controller sram_inst (
  .clk    (clk),
  .addr   (addr),
  .dout   (dout),
  .din    (din),
  .we     (we),
  .ce     (ce),
  .oe     (oe)
);

五、 DRAM

全称动态随机存取存储器(Dynamic Random Access Memory),是一种用于存储和访问大规模数据的主要存储器技术。

DRAM以其高密度、容量大和低功耗等特点,以Gigabit(Gb)为单位提供大容量存储,在FPGA中得到广泛的应用,比如常见的DDR3、DDR4等等。

FPGA的DRAM可以使用不同的接口标准,如DDR3、DDR4、LPDDR、HBM等。这些接口标准定义了DRAM与其他系统组件(如处理器、其他存储器、外设等)之间的通信协议和物理连接。

相比SRAM,DRAM拥有更大的容量,顺序读写速度快,随机读写速度慢。

Verilog 代码示例

ddr3_controller ddr3_inst(
  
  .clk        (clk),
  .reset_n    (reset_n),
           
  .s_axi_awid    (s_axi_awid),
  .s_axi_awaddr  (s_axi_awaddr),
  .s_axi_awlen   (s_axi_awlen),
  .s_axi_awsize  (s_axi_awsize),
  .s_axi_awburst (s_axi_awburst),
  .s_axi_awlock  (s_axi_awlock),
  .s_axi_awcache (s_axi_awcache),
  .s_axi_awprot  (s_axi_awprot),
  .s_axi_awvalid (s_axi_awvalid),
  .s_axi_awready (s_axi_awready),
           
  // Write data channel
  .s_axi_wdata  (s_axi_wdata),  
  .s_axi_wstrb  (s_axi_wstrb),
  .s_axi_wlast  (s_axi_wlast),
  .s_axi_wvalid (s_axi_wvalid),
  .s_axi_wready (s_axi_wready)
  
);

六、FLASH

FLASH是一种非易失存储器,断电后保持数据,容量小,但成本低廉。

FPGA中的FLASH主要用于:

  • 存储配置文件:许多FPGA使用FLASH来保存配置文件。

  • 程序存储:用于存储代码和数据。

FLASH存储器以块为单位进行擦除和写入操作。擦除操作需要将整个块中的数据清除,而写入操作只需修改需要更新的部分数据。

写入操作通常采用位编程(bit programming)的方式进行。在位编程中,根据需要将存储单元的电荷状态改变,以表示0或1的值。

与其他存储器类型相比,FLASH存储器的读取延迟较高,而擦除和写入操作的速度也相对较慢。此外,FLASH存储器的擦写次数有限,通常在百万到数十亿之间。

Verilog 代码示例

flash_controller flash_inst(

  .clk(clk),
  
  .flash_cs(flash_cs),
  .flash_clk(flash_clk), 
  .flash_io(flash_io),

  .addr(addr),
  .dout(dout),
  .din(din),
  .oe(oe),
  .we(we) 
);

七、总结

FPGA提供了多种内部和外部的存储器解决方案,根据需要可以灵活使用,构建存储器系统。合理利用各类存储器的优缺点,可以在成本、容量和速度上取得最佳平衡。


本文将不断定期更新中,码字不易,点⭐️赞,收⭐️藏一下,不走丢哦

本文由FPGA入门到精通原创,有任何问题,都可以在评论区和我交流哦

您的支持是我持续创作的最大动力!如果本文对您有帮助,请给一个鼓励,谢谢。文章来源地址https://www.toymoban.com/news/detail-654622.html

到了这里,关于[FPGA IP系列] FPGA常用存储资源大全(RAM、ROM、CAM、SRAM、DRAM、FLASH)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【小黑嵌入式系统第三课】嵌入式系统硬件平台(一)——概述、总线、存储设备(RAM&ROM&FLASH)

    上一课: 【小黑嵌入式系统第二课】嵌入式系统的概述(二)——外围设备、处理器、ARM、操作系统 下一课: 【小黑嵌入式系统第四课】嵌入式系统硬件平台(二)——I/O设备、通信设备(UARTUSB蓝牙)、其他(电源时钟复位中断) 嵌入式系统的硬件除了核心部件——嵌入

    2024年02月07日
    浏览(51)
  • FPGA基础设计(八):串口收发之RAM存储

    实现上位机通过串口发送数据到FPGA,FPGA接收到数据后将其存储在RAM的一段连续空间中,然后通过按键触发读出RAM数据,再通过串口发送到上位机。 1、串口接收模块; 2、按键消抖模块 3、创建RAM IP核模块 4、RAM IP核控制模块; 5、串口发送模块。 前面已经设计好了串口发送模

    2024年02月03日
    浏览(60)
  • (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日
    浏览(41)
  • #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日
    浏览(36)
  • 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日
    浏览(42)
  • FPGA原理介绍 (CLB, LUT, 进位链, 存储元素, RAM)

    本文首先对 ASIC 和 FPGA 进行了一个对比,然后介绍了 FPGA 的基本结构,最后解释了 FPGA 实现可编程的基本原理。 这里先给出 ASIC 和 FPGA 的优缺点 ASIC FPGA 优点 性能优越 可靠性高 大批量下单位成本低 开发初期无投入资金壁垒 设计工具使用方便,设计简单快速 产品原型机开发

    2024年02月20日
    浏览(40)
  • FPGA-基本IP核的应用之RAM

    RAM为随机存取存储器,它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据,其读写速度是由时钟频率决定的。RAM主要用来存放程序及程序执行过程中产生的中间数据、运行结果等。其特点适合双向交换数据。 RAM的端口有单端口和双端口:

    2024年02月16日
    浏览(47)
  • FPGA | RAM IP端口输出延迟问题解决

    Vivado中调用RAM IP,端口输出有延迟 版本器件 Version Vivado 2021.2 ZYNQ 7020 问题描述 ram_wea 信号拉低后,RAM读出数据有两个时钟的延迟 解决方式 在 Summary 中可以看到端口的读出延迟,关于该选项的具体使用方式可以参考Xilinx的数据手册:

    2024年02月16日
    浏览(40)
  • FPGA原理与结构——ROM IP的使用与测试

    系列文章目录:FPGA原理与结构(0)——目录与传送门         本文介绍 Block Memory Generator v8.4 IP核 实现ROM,在学习一个IP核的使用之前,首先需要对于IP核的具体参数和原理有一个基本的了解,具体可以参考: FPGA原理与结构——块RAM(Block RAM,BRAM) https://blog.csdn.net/appl

    2024年02月11日
    浏览(38)
  • FPGA原理与结构——RAM IP核原理学习

    系列文章目录:FPGA原理与结构(0)——目录与传送门 目录 一、什么是RAM 二、RAM IP介绍 1、RAM分类简介  2、可选的内存算法 (1)Minimum Area Algorithm(最小面积算法) (2)Low Power Algorithm (低功耗算法) (3)Fixed Primitive Algorithm (固定模块算法) (4)小结 3、位宽 4、工作模

    2024年02月12日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包