在使用 cyclond 的 M4K 的时候发现了一个问题,设计中我需要配置一个数据宽度为 224bit 、深度为 32 的 signal-port ROM 。原则上这样一个 ROM 占用的存储空间应该为 224bit × 32=7168bit ,而最多两个 M4K ( 4096 × 2=8192bit )也足够了,但是发现 MegaWizard 里显示的资源利用是 7 个 M4K 。挺纳闷的,于是查看了 datasheet 。
发现除了上面的配置方式外,( 1 )注释里这么说: Altera Quartus II 自动层叠或连接多个 M4K 块以满足更宽的或者更深的 RAM/ROM 配置。
这下明白了,应该说一个 M4K 最多可以配置 36bit 的位宽,如果再大了,那么就会占用其它的 M4K 块,所以特权同学的设计中的 224bit 至少时需要 7 个 M4K 块( 7*36=252 > 224 ,而 6*36=216 < 224 )。
至于到底是配置大位宽还是提高 M4K 利用率,还是看设计需要。鱼和熊掌不可兼得!