在FPGA内部资源中,RAM是较为常用的一种资源。
通常实例化RAM中,一种使用为BLOCK RAM 也就是块RAM 。另外资源可以通过寄存器搭,也就是分布式RAM。前者一般用于提供较大的存储空间,后者则提供小的存储空间。
在实际应用过程中,一般使用的包括,单端口、双端口RAM,ROM等形式等不同的形式。 实际应用中FIFO也是利用RAM和逻辑一起实现的。
对于一块RAM中,其能够例化的深度是有限的。例如cyclone4的RAM9k中可以例化的资源如下所示:
因此:例化化深度<256的RAM,其同样也需要占用一块BLOCKRAM的资源,例如例化宽度为64 深度为128的RAM,其资源为8K 。但是仍然需要占用两块BOCK RAM。也就是说,只要例化RAM深度少于256.则对于本器件9K来说,剩下的资源也是浪费。
那是不是可以例化成双端口RAM,通过高位地址区分,变为两个单端口RAM(width:32,depth:128)来使用,这样就可以节省资源了?