在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 11443|回复: 12

[讨论] spartan6和spartan3的一点简单区别

[复制链接]
发表于 2011-9-18 18:48:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
前两天在论坛上看到了一个兄弟用门级电路实现 A[0] + A[1] +。。。。。+A[255],也就是256个输入相加,
  为了测试的方便,我采用了,总共采用了12个 输入相加

在spartan3下,
         第一种方法是采用RTL级别,采用最简单的方法,也就是采用了11个加法器树形相加,这时候消耗的查找表为24个,查看布局布线的结构,发现走的是
LUT-MUX-DFF的路线。其中每个查找表中DFF用了两个,输出2位

    第二种方法是采用门级电路的形式,通过门级走进位链,采用的原语为 MUXCY 和 XORCY,在这里注意的是XORCY (如果采用名称定为,那么要把进位放在输出后面,XOR的输出放在最后),这样约束后走的就是进位链了 。查看综合消耗的查找表为18个 。其中查找表中DFF用了2个,输出为2+ 1(进位链) ,

  通过以上试验可以推断,在SPARTAN3下,做加法器的话,最好走进位链。用RTL级别约束走进位链我不会,哪位兄弟会的话,可以告诉我一下,谢谢了 。

在spartan6下 :

  我采用了A[0] + A[1] + ... +A[11]结构 。
第一种方法还是RTL级别 ,消耗查找表为12个,其中关于加法的查找表,用的最大DFF为4个。
第二种方法还是采用门级 MUXCY+XORCY+FiMUX 方式,在这里没有采用carry4原语,这是因为采用carry4原语做这个太复杂了,查看消耗的查找表为 24 个,布局布线后,查看加法计算模块中slice内结果,发现每个slice中只用了一个DFF,

通过上面两个试验,初步了解了spartan3和spartan6的不同,表现在以下方面 :
1: spartan3为4输入查找表,有2个DFF,spartan6为6输入查找表,有4个DFF,
其中进位链在 spartan3中是完全进位链形式,在spartan6中采用的是CRRY4封装的形式 。
2: 在spartan3中采用进位链,11个加法器消耗了11×2个slice,因为每个slice只有2个dff,而采用进位链,可以理解为3个输出,这样就减少了逻辑。而在spartan6中,因为每个slice有4个DFF,也就是11个加法器消耗了11个slice,而采用进位链的slice中只能使用一个DFF,这是因为进位链是连接在一起的,这样就浪费了3个DFF,所以导致了消耗的资源是RTL级别的2倍 。
因此,如果是加法,那么在spartan3中,如果可能那么约束走进位链(SLICE
-xor-MUXCY-XORCY-dff)的方式 ,在spartan6中走(SLICE-MUX-DFF) 方式.
  如果是乘法,那么在spartan3和spartan6中都尽量走进位链的方式。
不知道大家的想法是什么? 可以说一下啊?
发表于 2011-9-18 21:33:18 | 显示全部楼层
必须顶起。感谢这位大哥。
在SPARTAN3下,做加法器的话,最好走进位链。相比第一种方法是采用RTL级,  用ISE综合直到map后的资源SLICE节约了30%左右。LUT减少了40%多。  在SPARTAN3下,一个CLB含4个slice,每个slice有2个LUT ,2寄存器,还有进位和算术逻辑。

在SPARTAN6下,每个CLB含2个slice,每个slice主要有4个LUT ,8寄存器,进位链;
;我采用了这样的方法走进位练,  开始用3个6输入的LUT和CARRY4一共构成一个7to3加法结构
然后又分别把每个LUT只使用2输入,与CARRY4构成全加器,这样需要做N位的全加器就用N个类似的结构,直到最后算出8bit的结果。
全部由原语构成,整个设计综合后,资源相比RTL形式的设计slice只减少了约10%,LUT占用情况没太大变化,少了一点点。
   发现在SPARTAN6下怎么没有SPARTAN3下的资源优化结果好。
还是这种方法行不通。。。。。  求高人指教
 楼主| 发表于 2011-9-19 07:52:54 | 显示全部楼层
回复 2# 7598865


    我觉得这是因为spartan6的结构造成的,因为spartan6下,如果单纯的走进位链,那么1+1+1 就占用了一个slice,而单纯的RTL结构,不走进位链的话,一个slice里面有4个查找表,可以构成 1+1 1+1 1+1 1+1,这样不浪费资源。
  而在2bit或者2bit以上的加法器中,那么进位链就节省了资源。一个slice可以做2bit以上的资源,输出为5位。而RTL级别的slice却没有。
发表于 2011-9-19 21:40:50 | 显示全部楼层
不是吧,楼主你看我昨天的那种方法.


的确在spartan6下,使用进位链相比RTL级在SLICE的使用量节省了约10%,但是还是不够啊,想节省更多,
有没有什么更好的方法不使用RTL结构,尽可能的节省资源,使这个加法器在spartan6下在能使用最最优化的资源。
发表于 2011-9-20 10:28:27 | 显示全部楼层
从最小设计来最优化资源占用不见得对全局有大的影响,因为设计里不可能都是加法器。跟xilinx的人聊过,他们底层结构改动都是基于统计的。
 楼主| 发表于 2011-9-28 07:31:20 | 显示全部楼层
回复 5# falloutmx


    是的,但是程序里面有很多的计数器和加法器或者比较器,如果把他们都约束到进位链上去,不就可以省比较多的资源了吗?
我看手册上写的约束进位链用的是USE_CARRY_CHAIN,不过还不会用,目前正在考虑中
发表于 2011-11-19 22:01:32 | 显示全部楼层
大师傅,厉害。
发表于 2011-11-19 22:42:35 | 显示全部楼层
虽然没用过,但先顶一下
发表于 2011-11-21 16:23:53 | 显示全部楼层
回复 4# 7598865


   如果时序充裕的话,可以考虑用速度换面积,空间并行到时间串行,把256个并行输入转成一个串行输出(大约140多个slice),再加上一个带反馈的一位加法器即可。
 楼主| 发表于 2011-11-21 17:30:46 | 显示全部楼层
回复 9# daizi0703

我想到一个好方法,我今晚尝试一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-12 11:55 , Processed in 0.026672 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表