FPGA的嵌入式RAM

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。

 1 module bram_inference(
 2       input clk,
 3       input [15:0] mem_din,
 4       input [9:0] mem_addr,
 5       input mem_we,
 6       output reg [15:0] mem_dout );
 7
 8 reg [15:0] ram [0:1023];
 9
10 always (posedge clk)
11 begin
12       if(mem_we)
13            ram[mem_addr] <= mem_din;
14       mem_dout <= ram[mem_addr];
15 end
16
17 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.

时间: 2024-12-23 23:17:41

FPGA的嵌入式RAM的相关文章

FPGA的嵌入式乘法器(未完成)

FPGA主要应用在并行处理资源的应用,视频与图像处理,无线通信的中频调制解调器. 嵌入式乘法器可以配置成一个 18 × 18 乘法器,或者配置成两个 9 × 9 乘法器.对于那些大于18 × 18 的乘法运算 ,Quartus? II 软件会将多个嵌入式乘法器模块级联在一起.虽然没有乘法器数据位宽的限制,但数据位宽越大,乘法运算就会越慢.除了 Cyclone IV 器件中的嵌入式乘法器,通过将 M9K 存储器模块用作查找表 (LUT) 可以实现软乘法器. 疑问是4输入查找表的,就是一个表,4个输

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

在简单双端口ram中最简单有9个端口:分别是 clka  为输入端口的时钟 wea  读写控制端,高为写,低为读 addra 写地址 dina  待写入的数据 clkb 为输出端口的时钟的 addrb 读地址 doutb 读出的数据 在ip核中还可以加入ena/enb端口,这两个端口的作用是控制相应写入和读出端口的数据,为高是正常写入或读出,为低时写入为0,读出为0. 也可以加入复位端口rst,不过复位有两种优先级CE和SR,选择CE时,rst的优先级低于ENA的优先级:选择SR时,rst的优先

RAM建模和初始化

冯诺依曼提出的存储计算,计算存储,因此,几乎所有的CPU和ASIC都会使用存储器,它们的类型很多,包括异步RAM.同步RAM.ZBT RAM.DDR DRAM.ROM等.由于大部分的异步RAM和SRAM都是晶圆代工厂定制的,一次需要修改成适合于FPGA结构的Verilog等效模型.FPGA的综合工具会将这些模型推译出FPGA芯片特有的嵌入式RAM.RAM的特点是一拍写入,两拍读出.所有RAM的设计都是在速度和容量直接的折中. RAM的Verilog建模: 方式1: ///////////////

Xilinx FPGA结构

FPGA是什么?FPGA是现场可编程逻辑阵列,由可编程逻辑资源(LUT和 REG),可编程连线,可编程I/O构成.Xilinx的FPGA的基本结构是一样的,但随着半导体工艺的发展,FPGA的逻辑容量越来越丰富,速度更快,嵌入越来越多的硬核了,比如:ARM处理器,PCIe, ETHERNET等.在制程工艺上,Xilinx的7系列FPGA采用28 nm工艺,UltraScale采用20nm, UltraScale+ 采用16nm,每一代工艺的可用资源,比上一代就翻了一倍. 从架构而言,Xilinx

FPGA芯片内部硬件介绍

FPGA芯片内部硬件介绍 FPGA(Filed programmable gate device):现场可编程逻辑器件 ????FPGA基于查找表加触发器的结构,采用SRAM工艺,也有采用flash或者反熔丝工艺:主要应用高速.高密度大的数字电路设计. ????FPGA由可编程输入/输出单元.基本可编程逻辑单元.嵌入式块RAM.丰富的布线资源(时钟/长线/短线).底层嵌入功能单元.内嵌专用的硬核等组成: ????目前市场上应用比较广泛的FPGA芯片主要来自Altera与Xilinx.另外还有其它

《FPGA全程进阶---实战演练》第一章之FPGA介绍

1 什么是FPGA FPGA也即是Field Programmable Gate Array的缩写,翻译成中文就是现场可编程门阵列.FPGA是在PAL.GAL.CPLD等可编程器件的基础上发展起来的新型高性能产物,是作为专用集成电路(ASIC)领域中的一种半定制电路出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点.图1.1是Altera Cyclone V芯片. 图1.1 Altera Cyclone芯片 说到这里,不得不提ASIC,即专用集成电路(Application

FPGA成神之路 ----- 菜鸟的武器(edk 开发使用)

给大家介绍菜鸟的第二款武器.xilinx edk 开发软件. 武器介绍: 名称:Xilinx Platform Studio 功能:xilinx 系列FPGA利用MicroBlaze或硬核开发的必备武器,属于ise套装中的一部分.此武器很少单独出现,一般都是和他的爱妻SDK一同闯荡江湖. 武力:4星.(与sdk合体后,武力值翻倍) 推荐等级: 9级(学习MicroBlaze开发的菜鸟必备) 备注:本版本开发套件,为xilinx公司ise产品最后一个版本.优点多多,BUG也多多,这里的BUG在ED

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

FPGA笔试必会知识点2-FPGA器件 FPGA 综合工具并不一定保证能够充分利用芯片结构特点以达到最优目的而且工具本身也不一定非常智能,因为设计本身是复杂多样的且一直在变化,问题总会越来越多,因此在这种情况下,我们必须了解我们的器件结构,了解我们的设计是如何实现的,它是否充分利用到了FPGA里面的特有资源:如进位链shift register IOB中的register等.如果没有,则应当想办法充分利用,如修改代码,以适合FPGA结构特性或者采用coregen生成的module等.这在许多场合

Altera 的 FPGA 的 AS、PS 和 JTAG 配置模式

FPGA 器件有三种配置下载方式:主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式. AS 模式(Active Serial Configuration Mode): FPGA 器件每次上电时作为控制器,由 FPGA 器件引导配置操作过程,它控制着外部存储器和初始化过程,从配置器件 EPCS 主动发出读取数据信号,从而把 EPCS 的数据读入 FPGA 中,实现对 FPGA 的编程配置数据通过 DATA0 引脚送入 FPGA,配置数据被同步在 DCLK 输入上,1 个时钟