微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 异步FIFO中RAM的大小问题!

异步FIFO中RAM的大小问题!

时间:10-02 整理:3721RD 点击:

异步FIFO中的RAM深度是不是必须是2的n次方才行啊?要不然不能用格雷码编码地址了哇?



    参考Xilinx的芯片手册,好像里面有关于一个block RAM能用做那些位宽*深度。



   情况和异步FIFO相同吗?

偶数就行,但是自定义格雷码,你可以自己试试看;
一般情况下都是用2的N次方,比较通用;



   既然偶数就行的话,奇数为什么不行呢?只要不是2的N次方,从最高的地址回到0都会有多位变化啊!

比如:000,001,011,111,110,100
至于为什么奇数不行,还真没有用数学去推导过



    哦,那不同的偶数格雷码编码方式都不同啊?

一般是这样子的,但是这个并不是必须的,而且,也不一定非要用格雷码来编码吧。看工程的需求而定了

如果是格雷码的话应该是



   不用格雷码的话,地址跨时钟域的时候有可能传输错误地址啊~!

谢谢!

只要比2的N次方大就行。但是多的浪费了

楼上正解



    求解释

因为,你的寻找范围在2的N次方,那地址大于2的N次方的memory都无法寻址,即无法读写。就浪费了。

你其实不必担心这个问题,xilinx最小的BRAM单元是18k(16k) bit,无论怎么生成RAM或者FIFO,最少都要占用18k(16k) bit,比如你为uart接口生成一个宽8深128的RAM或者FIFO,消耗的资源和生成一个宽8深1024是一样的,都是一个18k的BRAM。
你用的是FIFO,深多少其实无所谓的,你要关注的是你实际消耗了多少BRAM资源。
还有,不推荐分布式RAM,因为在高速的情况下,不如BRAM稳定。

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

网站地图

Top