Xilinx原语的使用方法2.pdf

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Xilinx原语的使用方法2.pdf

Xilinx 公司原语的使用方法2 3.4.7 RAM/ROM 组件 RAM/ROM 组件可用于例化FIFO 、分布式RAM、分布式RAM、块ROM 以 及块ROM ,具体包括12 个组件,如表3-16 所示。 表3-16 RAM/ROM 原语列表 下面主要介绍FIFO 、分布式双口RAM 以及块双口RAM 原语的使用,单口 RAM 和ROM 原语的用法类似,限于篇幅,就不再介绍。 1.RAM16X1S RAM16X1S 是深度为16 比特,位宽为1 的同步RAM 。当写使能信号WE 为低时,写端口的数据操作无效,RAM 内部的数据不会改变;当WE 为高 时,可以在任意地址中写入比特。为了保证数据的稳定性,地址和数据应该 在WCLK 的上升沿前保持稳定。输出信号O 为RAM 中由读地址信号所确 定的地址中所存数据的值。此外,还可通过属性指定RAM 的初始值。 RAM16X1S 原语的例化代码模版如下所示: // RAM16X1S: 16 比特1深度同步RAM(16 x 1 posedge write distributed (LUT) RAM ) // 适用芯片:所有芯片 // Xilinx HDL 库向导版本,ISE 9.1 RAM16X1S #( .INIT(16h0000) //对RAM 的内容进行初始化,这里初始化为全1 ) RAM16X1S_inst ( .O(O), // RAM output .A0(A0), // RAM address[0] input .A1(A1), // RAM address[1] input .A2(A2), // RAM address[2] input .A3(A3), // RAM address[3] input .D(D), // RAM data input .WCLK(WCLK), // Write clock input .WE(WE) // Write enable input ); // 结束RAM16X1S 模块的例化过程 需要注意的是,RAM16X1S 原语是Xilinx 独有的一类结构,在小数据量存 储方面非常节省资源。在综合结果分析时,RAM16X1S 原语的RTL 结构如 图3-45 所示。 图3-45 原语RAM16X1S 的RTL 结构图 2 .RAMB16 RAMB16 是FPGA 芯片中内嵌的双口块RAM ,数据位宽可配置成1、2 、4 、 9、18 以及36 比特,每个块RAM 的大小为18 1024 比特,所以位宽越大, 深度越小。块RAM 在FPGA 中按照矩阵的方式排列,其数量完全取决于芯 片容量的大小。在使用中,可以添加坐标来约束块RAM 的位置。例如: LOC = RAMB16_X#Y#; 同样,也可以对块RAM 完成初始化。块RAM 是以硬核的方式内嵌到FPGA 芯片中,不占用芯片的逻辑资源,是FPGA 芯片内部非常宝贵的一种资源。 在工作时,要尽量使用芯片的块RAM 资源,不仅能保证较高的工作频率, 还具有很低的动态功耗。 RAMB16 的Verilog 例化代码如下所示。 // RAMB16: 块RAM (Virtex-4 16k+2k Parity Paramatizable BlockRAM // 适用芯片:Virtex-4 芯片 // Xilinx HDL 库向导版本,ISE 9.1 RAMB16 #( .DOA_REG(0), // A 端口可选的输出寄存器,可设置为0 或1,分别表示输出不寄存/寄存 .DOB_REG(0), // B 端口可选的输出寄存器,可设置为0 或1,分别表示输出不寄存/寄存 .INIT_A(36h000000000), // 初始化A 端口的输出初始值 .INIT_B(36h000000000), // 初始化A 端口的输出初始值 .INVERT_CLK_DOA_REG(FALSE), // 反转A 端口寄存器的时钟,可设置为TRUE或 FALSE ,分别表示不反 转/反转 .INVERT_CLK_DOB_REG(FALSE), // 反转B 端口寄存器的时钟,可设置为TRUE或 FALSE ,分别表示不反 转/反转 .RAM_EXTENSION_A(NONE), // RAM 的A 端口扩展选项,可设置为UPPER、LOWER或 NONE ,分 别表示作为//

您可能关注的文档

文档评论(0)

docindpp + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档