首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xilinx双口双端口RAM

Xilinx双口双端口RAM
EN

Stack Overflow用户
提问于 2012-04-30 22:00:36
回答 2查看 4.3K关注 0票数 1

我试图使用以下配置在Verilog中构建一个RAM块:

  • 端口A: 128位宽,与clk_a一起,将RAM块看作128位宽乘以128行深
  • 端口B: 32位宽与clk_b,将RAM块看作32位宽乘以512行深

不要担心读写序列化和互斥,我会处理它上面的一层。

基本上,生成128位乘以128行的代码如下所示:

代码语言:javascript
复制
reg [DATA_WIDTH-1:0]                 mem  [0:2**ADDRESS_WIDTH-1];

现在,如果我希望它看起来像32位乘512深,我如何重构这个内存看起来不同(有点像在C中重铸)?我知道我也许可以用32位字启用来完成这个任务,但我想看看是否有一种更干净的方法来实现这一点。

告诉我你怎么想的?

RRS

更正:我指的是Xilinx BRAM (BRAMs不可能是512深)。但这本质上是一个内存块,它使用胶水逻辑链接多个BRAMs。谢谢你的指点!

EN

回答 2

Stack Overflow用户

发布于 2012-06-14 13:57:07

我就这样解决了:

在ISE中,我能够在一个具有实际代码示例的菜单中找到“语言模板”。有一个与“文件I/O",一个完美的工作。

您还可以在双端口RAM周围构建一个包装模块,这将改变另一侧的数据宽度。在较小的数据宽度端口(即更多的地址行)上,您可以使用较低的地址位作为一个字选择系统,允许您写入部分内存线。这个合成适合我(检查你的合成工具)。

票数 2
EN

Stack Overflow用户

发布于 2012-06-14 04:37:00

有关如何做到这一点的详细说明,请参阅Xilinx文档。例如,从第217页开始的http://www.xilinx.com/support/documentation/sw_manuals/xilinx13_2/xst_v6s6.pdf给出了显式的VHDL和Verilog示例,说明如何完成您所要求的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10391158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档