李虎:
CLB中分为SliceM和SliceL。他们其中都有LUT。
SliceM(M是指Memory)和SliceL(L是指Logic)的区别是,SliceM中含有能够把LUT资源重新整合为Ram和Rom的逻辑。这就是所谓的Distributed Ram。
分布式RAM是如何产生的及其与Block RAM的区别
- 问 - 分布式和Block RAM的区别
- 答 - CLB单元生成的distribute ram ,CLB是FPGA的基本单元,block ram也是基本单元,但分布ram要由CLB单元生成。由CLB生成分布式ram,消耗逻辑资源。而block ram则固定在fpga内,无论使用与否都存在于那里。当block ram不够用时可以用逻辑资源生成分布式ram。
- 问 - 分布式RAM是如何产生的?
- 答 - 这里以Virtex4为例说明:一个CLB由4个Slice组成,这4个Slice又分SliceM和SliceL,其中M是Memory的首字母,L是Logic的首字母,比较SliceM和SliceL,他们的区别就是SliceM的查找表具有RAM和ROM的功能,而SliceL的则不具备。所以SliceM比SliceL多的功能就是做存储器和移位。这样就很清楚了:SliceM可实现Distribut RAM,而Distribut RAM是由SliceM中的LUT实现。CLB的结构下所示:
Matric -------SliceM(2) SliceL(3)--------Y1 Switch ------ SliceM(0) SliceL(1)--------Y0 | | | | X0 X1 这里XNYM,X--列,N--列号,Y--行,M--行号,Xilinx FPGA内部结构是一种阵列结构。
- 问 - 请问SliceM除了可实现Distribut RAM之外还能实现什么功能? SliceM实现Distribut RAM时使用SliceM中的SRL16存储单元么?
- 答 - 如果看SliceM的图,是看不到里面有专么这个SRL16的。其实SRL16就是一个基于查找表结构的移位寄存器。而SRL16以primitive形式存在而已。在userguide中,也画了SRLC16的图,它就是一个查找表。比较SliceM和SliceL,他们的区别就是SliceM的查找表具有RAM和ROM的功能,而SliceL的则不具备。所以SliceM比SliceL多的功能就是做存储器和移位。“SliceM实现Distribut RAM时使用SliceM中的SRL16存储单元么?” 因为SRL16用的就是LUT,所以,如果这个LUT作为Distribute RAM使用了,则就不能再作为SRL16使用了。
|