Vivado 随笔(1) 综合属性之 ram_style & rom_style?

举报
李锐博恩 发表于 2021/07/15 02:56:44 2021/07/15
2.9k+ 0 0
【摘要】 目录 背景 正文 相关文献 背景 在很多情况下,我们会定义一个二维数组来作为RAM或者ROM来使用,例如我们在设计一个异步FIFO时,我们需要例化一个双端口RAM来作为FIFO的存储空间,当然我们可以通过例化一个IP核的方式去做(可以直接在IP核定制时候选择使用Block RAM或者Distributed RAM资源),但是如果我们不去设计这么一个IP核呢? 我...

目录

背景

正文

相关文献


背景

在很多情况下,我们会定义一个二维数组来作为RAM或者ROM来使用,例如我们在设计一个异步FIFO时,我们需要例化一个双端口RAM来作为FIFO的存储空间,当然我们可以通过例化一个IP核的方式去做(可以直接在IP核定制时候选择使用Block RAM或者Distributed RAM资源),但是如果我们不去设计这么一个IP核呢?

我们就可以直接定义一个二位数组来用做存储空间,同样可以实现同样的功能,但是我们是否想过这样一个问题,就是我们定义的这样一个二位数组,在Vivado综合工具进行综合时候,用什么来实现我们这样的一个RAM呢?稀里糊涂,把命运交给综合工具,随意(默认)推断?

正如标题所示,今天的这两个综合属性就可以帮你掌握自己的命令,明确地告诉综合工具,我要用什么资源去实现这样的一个二位数组。

注意:如果设计的是一个RAM,用ram_style;如果是ROM,则用rom_style。

正文

ram_style & rom_style这对综合属性旨在提示Vivado综合工具如何推断存储空间。

其值可以为:

block

提示综合工具使用Block RAM来实现;

distributed

提示综合工具使用LUT资源来实现;

用法,这里只给出Verilog中的用法:

在二维数组的定义前面加上如下声明即可,例如:

(*ram_style = "distributed"*) reg [data_size - 1 : 0] myram[2**addr_size - 1:0];

当然,例子中的data_size以及addr_size是parameter类型的常数。

**运算符表示指数运算;

相关文献

Vivado入门与提高

Verilog高级数字系统设计

【FPGA】ROM/EPROM的设计(使用case的方式初始化)

【FPGA】ROM/EPROM的设计(使用加载文件的方式初始化)

【FPGA】双端口RAM的设计(异步读写)

【FPGA】单端口RAM的设计(同步读、同步写)

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/102691341

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。