前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个双端口RAM能配置成两个独立的单端口RAM?

一个双端口RAM能配置成两个独立的单端口RAM?

作者头像
Lauren的FPGA
发布2019-10-30 21:54:10
1.5K0
发布2019-10-30 21:54:10
举报
文章被收录于专栏:Lauren的FPGALauren的FPGA

思考一下:

对于一个单端口RAM,采用RTL代码描述,如何在同一个模块中实现如下功能:

(1)宽度可配置

(2)深度可配置

(3)写模式可配置

实现上述功能主要用到Verilog两个语法结构:parameter定义参数,实现参数化;generate语句,根据参数调用对应的功能块。

在FPGA设计中可能会出现对单端口RAM需求较大的情况。尽管Xilinx提供了将BRAM配置为单端口RAM的IP Core,但从资源角度来看,可能会造成浪费。例如,需要2个512x18的单端口RAM,若直接采用单端口RAM的配置方式,1个512x18的单端口RAM将占用1个18Kb的BRAM,这意味着将要消耗2个18Kb的BRAM。事实上,此时每个BRAM有一半的资源闲置。这里,采用另一种方式:将BRAM配置为1Kx18的双端口RAM,其中端口A和端口B均为1Kx18的模式。具体配置方式如下图左边区域所示。显然,此时只占用了1个18Kb的BRAM。

在该图左边区域,需要将端口A的地址信号ADDRA的最高位接高,端口B的地址信号ADDRB的最高位接低。这意味着端口A所能覆盖的地址区间为512~1023共512个地址空间,端口B所能覆盖的地址区间为0~511共512个地址空间。二者地址空间没有重叠,因此互相独立,从而形成了两个独立的512x18即9Kb的单端口RAM。此外,端口A和端口B的位宽可以不一致(但不是随意的),如上图的右半区域所示。仍将BRAM配置为双端口RAM,其中端口A为1024x18,端口B为2048x9。将端口B的地址信号ADDRB的最高位接高,这意味着端口B所能覆盖的地址区间为1024~2047共1024个地址空间,而端口A的地址区间为0~1023共1024个地址空间。二者地址空间依然没有重叠,仍相互独立,从而形成了两个独立的9Kb的单端口RAM。

思考一下:

对于URAM是否可以这么配置?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Lauren的FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档