我正在尝试使用以下配置在Verilog中构建一个RAM块:
不要担心READ-WRITE序列化和静音,我会用上面的一层来处理它。
基本上,生成128位128行的代码如下所示:
reg [DATA_WIDTH-1:0] mem [0:2**ADDRESS_WIDTH-1];
现在,如果我希望它看起来像32位深512倍,我如何重构这个内存看起来不同(有点像C中的重铸)?我知道我可以用32位字启用来实现这一点,但我试图看看是否有更简洁的方法来实现这一点。
让我知道你的想法?
RRS
更正:我指的是Xilinx BRAM(BRAM不能深入512)。但这本质上是一个内存块,其中胶合逻辑链接多个BRAM。谢谢你指出!!
答案 0 :(得分:2)
我这样解决了:
在ISE中,我能够在其中一个包含实际代码示例的菜单中找到“语言模板”。有一个“文件I / O”,一个工作完美。
您还可以在双端口RAM周围构建一个包装器模块,它将改变另一端的数据宽度。在较小的数据宽度端口(即更多的地址线)上,您可以使用较低的地址位作为字选择系统,允许您写入存储器线的一部分。这适合我(请检查您的综合工具)。
答案 1 :(得分:0)
有关如何执行此操作的说明,请参阅Xilinx文档。例如,从第217页开始的http://www.xilinx.com/support/documentation/sw_manuals/xilinx13_2/xst_v6s6.pdf给出了如何做你要求的显式VHDL和Verilog示例。