首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RAM的优化

RAM的优化
EN

Stack Overflow用户
提问于 2014-01-15 19:32:52
回答 1查看 310关注 0票数 0

我现在正在调试我的DPRAM。与往常一样,模拟工作得很好,但在现实生活中却失败了。语法是这样的:

代码语言:javascript
复制
ram[Address][Data]

我可以让数据写到前8个地址,但是再多一些,数据就会丢失(甚至在chipscope上也是如此)。作为一种变通方法,我将两个DPRAM和一个简单的逻辑开关缝合在一起,以便在第二个DPRAM命中第八个地址后将数据重新路由到第二个DPRAM。这起作用了,但看起来就是这么乱。

我的想法是,它正在被优化,即使不是,这也是一个很好的学习曲线(欢迎任何关于这方面的想法)。

下面是DPRAM中的信号变量,我试图阻止它被优化掉:

代码语言:javascript
复制
type ram_array is array(16 downto 0) of std_logic_vector(31 downto 0);
shared variable ram: ram_array;


attribute KEEP: string;
attribute KEEP of ram_array : type is "TRUE";

我想我还需要在UCF文件中添加一行,尽管我似乎不能正确地理解语法,但实体名称路径明显发生了变化:

代码语言:javascript
复制
NET "entity/name/path/dpram/ram_array" KEEP ="TRUE";

如果我想停止优化,这就是我添加代码的方式吗?

编辑:

输出(可能没有优化):

代码语言:javascript
复制
Found 17x32-bit dual-port RAM <Mram_ram> for signal <ram>. Summary: inferred 1 RAM(s). inferred 65 D-type flip-flop(s). Unit <dpram> synthesized.

谢谢=)

EN

回答 1

Stack Overflow用户

发布于 2014-01-16 00:19:20

对于可综合的代码,不要使用共享变量

如果你的代码需要是可综合的,那么不要使用共享变量。

推断BlockRAM

如果您需要在不使用共享变量的情况下实现内存的示例代码,请使用为FPGA提供的文档。

示例文档链接:

xilinx http://www.xilinx.com/support/documentation/sw_manuals/xilinx12_2/xst_v6s6.pdf

  • (altera) http://www.altera.com/literature/hb/qts/qts_qii51007.pdf

(

  • )

希望这能有所帮助。

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

https://stackoverflow.com/questions/21136307

复制
相关文章

相似问题

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