Xilinx True双端口RAM,在两个端口上具有不同的宽高比

时间:2012-04-30 22:00:36

标签: vhdl verilog ram fpga xilinx

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

  • 端口A:128位宽,clk_a,看到RAM块为128位宽,128行深
  • 端口B:32位宽,clk_b,看到RAM块为32位宽,512行深

不要担心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。谢谢你指出!!

2 个答案:

答案 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示例。