买了一块FPGA板,以前在spartan3/spartan6上好好的项目,弄到这块Artix-7上,出问题了。用片内逻辑分析仪抓了半天信号,发现是RAM问题,将电路反复复位(由上位机控制,在电路内部产生复位信号)、运行,RAM中的数据会变。
(RAM当程序ROM用,由上位机下载进去,下载完后不再更新。RAM速度为6~12MHz)。
1. 首选怀疑是不是电路有问题
用100MHz的时钟来抓we信号,没有发现we有高电平。
2. 难道有毛刺?把we接成0,上位机不更新RAM,只在综合时将初始值置进去。
仍然会出错。
3. 多放一片一样的RAM,地址、时钟、we全接一样,两片RAM的输出做个比较电路,以检测ROM内容是否发生变化。
结果:会发生变化。即使we接0,也会。
然后,我单独做了个工程,只放两片RAM,WE全接0,RAM地址由计数器连接,一直遍历整个RAM空间。对2个RAM输出结果进行比较,也发现会出现数据不一致。
把该工程的bit文件发给厂家,在他们手上的板子也是一样的现象。
他们看了我的代码,认为是我设计问题,不是FPGA问题。在这里,我把代码、波形贴出,大家来评评。 |