FPGA中的嵌入式RAM分为两种:专用的BRAM和分布是RAM(用LUT实现的)。这两种RAM又可以配置成单端口和双端口的RAM和ROM。双端口RAM又可以根据读写地址是否在同一块分为Double Port 和Two Port。读取方式也有多种方式,包括:Read first, Write first, No change 等。

Block RAM和分布式RAM

在FPGA实现RAM时,可在专用Block RAM和分布式RAM中实现。这两者的选择不仅会影响资源选择,同时还会严重地影响性能和功耗。哪如何选用BRAM和分布式RAM呢?一般而言,容量需求大时采用BRAM,对读写性能有要求时,用分布式RAM。一般来说RAM要求的深度是首要标准。RAM的深度比较小时,在LUTRAM中实现,深度超过256位的存储器阵列时用BlockRAM实现。Xilinx和Altera 的FPGA器件能够灵活地以多种宽度深度组合实现各种类型的RAM。

嵌入式RAM的使用方式有三种:原语,FPGA厂商提供的例化工具以及综合工具根据RTL代码推译出RAM。下面是一个简单的单端口RAM,在综合时会被综合工具推译出BRAM。

 module bram_inference(
input clk,
input [:] mem_din,
input [:] mem_addr,
input mem_we,
output reg [:] mem_dout ); reg [:] ram [:]; always (posedge clk)
begin
if(mem_we)
ram[mem_addr] <= mem_din;
mem_dout <= ram[mem_addr];
end endmodule

嵌入式RAM的初始化

XILINX 的RAM初始文件格式是coe,在Vivado中例化RAM时会将coe 文件转换成*.mif 文件,mif 文件的文件名和RAM的名字一样。但XILINX的mif 文件和ALTERA RAM的mif 文件格式不同。

小结

当今FPGA中所使用的嵌入式存储器具有宽存储器带宽特性,以及通用性,能够实现各种存储器功能,包括:随机访问存储器(RAM),ROM,CAM,FIFO(FIFO是由FIFO控制器逻辑和真双端口RAM实现的),真双端口存储器,移位寄存器,异步工作模式,同步工作模式。还可以选择输出是否寄存一拍。各家FPGA厂商的RAM具体实现有所不同但功能都一样,对RAM的控制信号做简单的修改就能操作不同厂家的嵌入式RAM了。

问题:

1 Altera的FPGA有没有真双端口RAM的原语?如果没有,是否可以由单端口RAM组成真双端口RAM?

2 在Vivado中,如何用脚本语言生成RAM IP?

3 如何不从新综合布局布线更新RAM中初始化数据 ?

参考文献:

[1] 阿昏豆. FPGA研发之道(13)-设计不是凑波形(三)RAM. http://www.eetop.cn/blog/html/60/1494260-52826.html. 2015,12,24.

[2] Xilinx. UG949 vivado设计套件的UltraFAST设计方法指南. 2014,04,02.

FPGA的嵌入式RAM的更多相关文章

  1. 理解FPGA中的RAM、ROM和CAM;ROM、RAM、DRAM、SRAM、FLASH

    目前大多数FPGA都有内嵌的块RAM(Block RAM),可以将其灵活地配置成单端口RAM(DPRAM,Single Port RAM).双端口RAM(DPRAM,Double Ports RAM) ...

  2. FPGA与嵌入式一点见解

    FPGA:即现场可编程门阵列,它是在PAL.GAL.CPLD等可编程器件的基础上进一步发展的产物.它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可 ...

  3. FPGA的嵌入式乘法器

    1. FPGA主要应用在并行处理资源的应用,视频与图像处理,无线通信的中频调制解调器. 嵌入式乘法器可以配置成一个 18 × 18 乘法器,或者配置成两个 9 × 9 乘法器.对于那些大于18 × 1 ...

  4. FMC与FPGA双口ram通讯

    硬件环境:ARM+FPGA通过FMC互联,STM32F767和 EP4CE15F23I7 FMC设置,STM的系统时钟HCLK为216MHz /* FMC initialization functio ...

  5. xilinx fpga中块ram的使用——简单双端口ram的使用

    在简单双端口ram中最简单有9个端口:分别是 clka  为输入端口的时钟 wea  读写控制端,高为写,低为读 addra 写地址 dina  待写入的数据 clkb 为输出端口的时钟的 addrb ...

  6. FPGA芯片内部硬件介绍

    FPGA芯片内部硬件介绍 FPGA(Filed programmable gate device):现场可编程逻辑器件 FPGA基于查找表加触发器的结构,采用SRAM工艺,也有采用flash或者反熔丝 ...

  7. 给FPGA初学者的建议——不要浮躁(转)

    原作者:http://hi.baidu.com/zhoubin7020 作为FPGA新人常常在论坛上问,用什么语言啊,用什么软件啊,用那个公司的芯片等问题.我个人认为学习FPGA和学习单片机有相同的道 ...

  8. FPGA基础知识了解

    FPGA学习的一些误区 FPGA入门必看资源 FPGA百度百科 FPGA基础知识及其工作原理 高端设计工具为少有甚是没有硬件设计技术的工程师和科学家提供现场可编程门阵列(FPGA).无论你使用图形化设 ...

  9. FPGA笔试必会知识点2—FPGA器件

    FPGA 综合工具并不一定保证能够充分利用芯片结构特点以达到最优目的而且工具本身也不一定非常智能,因为设计本身是复杂多样的且一直在变化,问题总会越来越多,因此在这种情况下,我们必须了解我们的器件结构, ...

随机推荐

  1. CSS:CSS 单位

    ylbtech-CSS:CSS 单位 1.返回顶部 1. 尺寸 单位 描述 % 百分比 in 英寸 cm 厘米 mm 毫米 em 1em 等于当前的字体尺寸. 2em 等于当前字体尺寸的两倍. 例如, ...

  2. JS搜索商品(跟外卖app店内搜索商品一样) ,keyup函数和click函数调用

    HTML: input输入框: <input id="sea" type="text"> JS: //点击搜索商品 $('#mys').click( ...

  3. Httpclient: 多层翻页网络爬虫实战(以搜房网为例)

    参考:http://blog.csdn.net/qy20115549/article/details/52912532 一.创建数据表 #创建表:用来存储url地址信息 create table so ...

  4. 3.2-3.3 Hive中常见的数据压缩

    一.数据压缩 1. 数据压缩 数据量小 *本地磁盘,IO *减少网络IO Hadoop作业通常是IO绑定的; 压缩减少了跨网络传输的数据的大小; 通过简单地启用压缩,可以提高总体作业性能; 要压缩的数 ...

  5. linux中消息队列<一>

    1 概念 (1)链表式结构组织,存放于内核. (2)通过队列标识来引用. (3)通过一个消息类型来索引指定的数据 2 创建消息队列 #include <sys/msg.h> int msg ...

  6. 《剑指offer》面试题5—从尾到头打印链表

    重要思路: 这个问题肯定要遍历链表,遍历链表的顺序是从头到尾,而要输出的顺序却是从尾到头,典型的“后进先出”,可以用栈实现. 注意stl栈的使用,遍历stack的方法. #include <io ...

  7. 基于GPU的优化处理

    http://www.cnblogs.com/wuhanhoutao/archive/2007/11/10/955293.html 早期的三维场景绘制,显卡只是为屏幕上显示像素提供一个缓存,所有的图形 ...

  8. [Xcode 实际操作]八、网络与多线程-(24)社会化分享功能开发包的安装和配置:微信、QQ、微博

    目录:[Swift]Xcode实际操作 本文将演示如何在开放平台注册应用,并获得相关的密钥信息,用于实现后面文章的微博分享功能. 一.新浪微博开放平台 [登录]->[微服务]->[粉丝服务 ...

  9. 稳定UI运行结果-自动化测试失败重试和截图

    运行自动化测试的时候,有时会因为网络不稳定,测试环境或者第三方环境正在重启而造成用例运行结果不稳定,时而能跑过时而跑不过.这些难以重现的环境因素造成的用例失败会让测试人员很困扰,排查即耗费时间也没有太 ...

  10. cmd - 命令行窗口中文乱码

    问题 在cmd窗口中输入curl www.baidu.com可以看到有中文乱码的现象,这是因为默认使用的是GBK编码.另外,curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在 ...