您的位置 首页 被动

FPGA研制之道(13)-规划不是凑波形(三)RAM

在FPGA内部资源中,RAM是较为常用的一种资源。通常实例化RAM中,一种使用为BLOCK RAM 也就是块RAM 。另外资源可以通过寄存器搭,也就是分布式RAM。前者一般用于提供较大的存

  在FPGA内部资源中,RAM是较为常用的一种资源。

  一般实例化RAM中,一种运用为BLOCK RAM 也便是块RAM 。别的资源可以经过寄存器搭,也便是分布式RAM。前者一般用于供给较大的存储空间,后者则供给小的存储空间。

  在实践运用过程中,一般运用的包含,单端口、双端口RAM,ROM等办法等不同的办法。 实践运用中FIFO也是运用RAM和逻辑一同完成的。

  关于一块RAM中,其可以例化的深度是有限的。例如cyclone4的RAM9k中可以例化的资源如下所示:

  

 

  因而:例化化深度<256的RAM,其相同也需求占用一块BLOCKRAM的资源,例如例化宽度为64 深度为128的RAM,其资源为8K 。可是依然需求占用两块BOCK RAM。也便是说,只需例化RAM深度少于256.则关于本器材9K来说,剩余的资源也是糟蹋。

  

 

  那是不是可以例化成双端口RAM,经过高位地址区别,变为两个单端口RAM(width:32,depth:128)来运用,这样就可以节约资源了?

  而关于双端口RAM来说,每个M9K可以装备是的最小深度就变成是512,而最大宽度为18,如下图所示,因而作为真双端口RAM运用,深度小于512的话,依然会占用1块RAM。且宽度》18就会多占用额定的一块RAM,因而上述的节约资源的办法是不正确的。

  

 

  经过检查datasheet的中RAM可以装备的办法,然后可以正确的运用RAM资源,然后到达高的运用功率。可以看出,RAM9K其运用办法受限,首要是因为RAM的端口的衔接信号受限,例如:该RAM9K的读端口最大支撑36根信号线,因而关于单端口其支撑的宽度为36,双端口为18(两个端口,一共36根数据线),作为FPGA来说,其布线资源是有限的,不可能无限制的添加其端口数。

  RAM例化时,有时需求初始化RAM,ALTERA和XLINX的初始化办法如下所示:

  (1)ALTERA RAM中,例化时为MIF文件,其格局为:

  DEPTH = 32; — The size of memory in words

  WIDTH = 8; — The size of data in bits

  ADDRESS_RADIX = HEX; — The radix for address values

  DATA_RADIX = HEX; — The radix for data values

  CONTENT — start of (address : data pairs)

  BEGIN

  00 : 0; — memory address : data

  01 : 1;

  END;

  (2)在XILINX的RAM中,RAM出示化文件为COE文件,其格局为:

  MEMORY_INITIALIZATION_RADIX=2; 设定进制

  MEMORY_INITIALIZATION_VECTOR= 初始化向量

  值得注意的是:XILINX的RAM初始化后会主动生成MIF文件,而此mif文件与ALTERA mif文件格局不同。不能用于初始化ALTERA的 RAM。

  鉴于例化不同IP的复杂性,现在编译东西也支撑运用VERILOG言语来描绘RAM,而编译东西主动识别为RAM,主动发生相应的IP核,下面以XILINX的EDA东西为例扼要介绍。

  module ram(

  clk, wr,addr,din,dout

  );

  input clk;

  input [7:0] addr;

  input wr;

  input [31:0] din;

  output [31:0] dout;

  reg [31:0] mem [0:255];

  reg [31:0] dout;

  always@(posedge clk)

  if(wr)

  mem[addr] <= din;

  always @(posedge clk)

  dout = mem[addr] ;

  endmodule

  上述描绘可以被描绘成RAM,主动发生RAM.其例化的陈述为:

  =========================================================================

  * HDL Synthesis *

  =========================================================================

  Performing bidirectional port resolution…

  Synthesizing Unit .

  Related source file is "ram.v".

  Found 256×32-bit single-port RAM for signal .

  Found 32-bit register for signal .

  Summary:

  inferred 1 RAM(s).

  inferred 32 D-type flip-flop(s).

  Unit synthesized.

  =========================================================================

  HDL Synthesis Report

  Macro Statistics

  # RAMs : 1

  256×32-bit single-port RAM : 1

  # Registers : 1

  32-bit register : 1

  =========================================================================

  综上: RAM作为FPGA内部一种根本资源,把握RAM的特性和根本用法,则是FPGA工程师的根本技能,可以充分运用FPGA内部的资源,究竟关于FPGA来说“资源便是金钱”,节约资源便是省钱。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/117693.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部