打印

FPGA的BRAM和distributed RAM学习(zz)

[复制链接]
12973|34
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
AutoESL|  楼主 | 2011-9-29 12:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 AutoESL 于 2011-9-29 22:04 编辑

xilinx spartan3an系列fpga:
       一个CLB包含4个SLICE,其中左边两个SLICE可用于存储、移位寄存器和逻辑配置,称为SLICEM;右边的两个SLICE只能用于逻辑组合,称为SLICEL。每个SLICE中有2个LUT,2个存储单元,多路复用器,进位链等。一个LUT和一个存储单元称为一个LOGIC CELL,因此通常一个SLICE等效于2.25个LOGIC CELL。


1、bram 的输出需要时钟,dram在给出地址后既可输出数据。
2、bram有较大的存储空间,是fpga定制的ram资源;而dram是逻辑单元拼出来的,浪费LUT资源
3、dram使用更灵活方便些

补充:

1、较大的存储应用,建议用bram;零星的小ram,一般就用dram。但这只是个一般原则,具体的使用得看整个设计中资源的冗余度和性能要求
2、dram可以是纯组合逻辑,即给出地址马上出数据,也可以加上register变成有时钟的ram。而bram一定是有时钟的。
3、如果要产生大的FIFO或timing要求较高,就用BlockRAM。否则,就可以用Distributed RAM。
在Xilinx Asynchronous FIFO CORE的使用时,有两种RAM可供选择,Block memory和Distributed memory。差别在于,前者是使用FPGA中的整块双口RAM资源,而后者则是拼凑起FPGA中的查找表形成。






- 问 -
分布式和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使用了。

http://hi.baidu.com/ldtong0406/blog/item/cc7000c68e4f3bc9d000602c.html

相关帖子

沙发
AutoESL|  楼主 | 2011-9-29 12:52 | 只看该作者
昨天看到的那篇讲RAM的不是针对FPGA的

使用特权

评论回复
板凳
opple| | 2011-9-29 12:53 | 只看该作者
过来了解下

使用特权

评论回复
地板
opple| | 2011-9-29 12:54 | 只看该作者
谢谢斑竹

使用特权

评论回复
5
ertu| | 2011-9-29 12:57 | 只看该作者
问答很经典啊

使用特权

评论回复
6
ertu| | 2011-9-29 12:57 | 只看该作者
感谢楼主

使用特权

评论回复
7
AutoESL|  楼主 | 2011-9-29 13:03 | 只看该作者
学习这个之后,对FPGA内部结构了解多一点了

使用特权

评论回复
8
hihu| | 2011-9-29 13:21 | 只看该作者
有更深刻的认识

使用特权

评论回复
9
hihu| | 2011-9-29 13:21 | 只看该作者
希望斑竹多多发些相关资料,先谢谢~\(≧▽≦)/~啦啦啦

使用特权

评论回复
10
AutoESL|  楼主 | 2011-9-29 14:45 | 只看该作者
大家共同努力,多发一些这类资料供大家学习

使用特权

评论回复
11
AutoESL|  楼主 | 2011-9-29 22:19 | 只看该作者
不知道A家对应的是什么来着

使用特权

评论回复
12
yj3201980| | 2011-9-30 14:36 | 只看该作者
混分~

使用特权

评论回复
13
AutoESL|  楼主 | 2011-9-30 15:22 | 只看该作者
:D

使用特权

评论回复
14
GoldSunMonkey| | 2011-10-1 18:47 | 只看该作者
:loveliness:
我觉得AutoESL每天看**太多了。

使用特权

评论回复
15
AutoESL|  楼主 | 2011-10-2 19:50 | 只看该作者
那是因为以前看太少了:lol

使用特权

评论回复
16
GoldSunMonkey| | 2011-10-2 19:53 | 只看该作者
;P其实这个用PlanAhead最好。

使用特权

评论回复
17
AutoESL|  楼主 | 2011-10-2 20:11 | 只看该作者
???这个和PlanAhead有什么关系?

使用特权

评论回复
18
GoldSunMonkey| | 2011-10-2 20:18 | 只看该作者
看内部结构啊。可以看的更仔细啊。

使用特权

评论回复
19
AutoESL|  楼主 | 2011-10-3 08:40 | 只看该作者
哦,这样啊,太跳跃了

使用特权

评论回复
20
AutoESL|  楼主 | 2011-10-3 08:40 | 只看该作者
抽空看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:天使宝贝 博客IT人生 From C/C++/SystemC to Xilinx FPGA

0

主题

2517

帖子

3

粉丝