首页 > 解决方案 > 为什么 RTL 设计中 Ram 或 FIFO 的深度总是地址宽度的 2 倍?

问题描述

我看到了很多 ram 和 FIFO 设计的例子,内存深度总是地址宽度的 2 倍:

parameter addr_width=4;
parameter ram_depth=1<< addr_width;

为什么?如果地址的宽度等于 4,那么深度应该有 16 种可能性吧?为什么使用 2*4?提前致谢。

标签: verilog

解决方案


我认为您1<<addr_widthaddr_width<<1. 结果大相径庭。

1<<addr_width实际上是 2**addr_width。(或 2^addr_width 您喜欢的任何表示法)。


推荐阅读