微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 问题:如果ram读写的地址超过了ram的实际大小,会出现什么情况

问题:如果ram读写的地址超过了ram的实际大小,会出现什么情况

时间:10-02 整理:3721RD 点击:
举个例子,
如果使用IP core定制的一个ram大小为24个字,
那么读写地址都应该是5位的,即00000-10111
如果读写的地址变成了11111,且此时的读写都为使能,在做modelsim仿真的时候,这种情况是高阻状态,实际中如果这样的bug在板子上了,会出现什么情况呢?

关键看地址译码。

地址译码?
怎么理解,能详细说一下嘛。
3Q

Normal need to use enable signal to define address 00000~10111 , if CPU embed that to access address 11111 system may be free run

读写使能的同时,在写地址满时,应该归0,否则时序就错了

这个我知道的。
情况是这样的,我现在再看师兄的代码,他的这个代码是属于一个比较大的航天方面的信号处理,在实际应用中没有出错(XX单位已经验收过了),然后我就发现了这个问题,就如我所描述,当read_addr = 11111时候,都使能是允许的,但是这个时候读出来的数据并没有用,而是调整时序在地址为0-23时候读出的数据才使用。
但是我觉得这个会不会有什么大点的影响,所以我就问问。
补充一下就是,write_addr = 11111时候,写使能也是有效的。
这样的话,到底会有影响?

看你的逻辑设计了,这个你自己应该要有处理逻辑

见6L的补充。重点就是,当read_addr = 11111时候,读使能是允许的,但是这个时候读出来的数据并没有用,而是调整时序在地址为0-23时候读出的数据才使用。

一头雾水。

雾水。

关键看IP core地址译码,如果是Altera的Cyclone系列Memory Block,实际大小是32(或者36)。

也就是说,在仿真的时候,它认为的是24个字的,超出了会认为出错,即将数据线变成了高阻; 而程序真正烧入板子上了,大小其实是32(或者36).
是这个意思吧?
对了,用的是xilinx的 v4的fpga

对,我就是有这个疑问

纯属个人意见。如有错误请高手指正
就看你用的core是怎么设计啦。如果有地址译码限制,就不会出错。如果没有。出现这样的情况就进入未知状态。没办法知道会读写什么数据的。如果你在程序里有对地址范围的限定,或者可以保证地址数据都在有效范围内。当然没什么影响,如果不能。就存在隐患了。就像case一定需要default一样。不然程序就有可能存在隐患。
而且core也是不同的。有rtl级。有布局布线级的。具体的就要分析底层结构了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top