我试图使用以下配置在Verilog中构建一个RAM块:
不要担心读写序列化和互斥,我会处理它上面的一层。
基本上,生成128位乘以128行的代码如下所示:
reg [DATA_WIDTH-1:0] mem [0:2**ADDRESS_WIDTH-1];现在,如果我希望它看起来像32位乘512深,我如何重构这个内存看起来不同(有点像在C中重铸)?我知道我也许可以用32位字启用来完成这个任务,但我想看看是否有一种更干净的方法来实现这一点。
告诉我你怎么想的?
RRS
更正:我指的是Xilinx BRAM (BRAMs不可能是512深)。但这本质上是一个内存块,它使用胶水逻辑链接多个BRAMs。谢谢你的指点!
发布于 2012-06-14 13:57:07
我就这样解决了:
在ISE中,我能够在一个具有实际代码示例的菜单中找到“语言模板”。有一个与“文件I/O",一个完美的工作。
您还可以在双端口RAM周围构建一个包装模块,这将改变另一侧的数据宽度。在较小的数据宽度端口(即更多的地址行)上,您可以使用较低的地址位作为一个字选择系统,允许您写入部分内存线。这个合成适合我(检查你的合成工具)。
发布于 2012-06-14 04:37:00
有关如何做到这一点的详细说明,请参阅Xilinx文档。例如,从第217页开始的http://www.xilinx.com/support/documentation/sw_manuals/xilinx13_2/xst_v6s6.pdf给出了显式的VHDL和Verilog示例,说明如何完成您所要求的操作。
https://stackoverflow.com/questions/10391158
复制相似问题