打印
[Quartus]

求助啊,求助,一个spartan6加法器难住了几天了

[复制链接]
3977|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zy7598865|  楼主 | 2011-9-13 21:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用spart6设计一个加法器,尽可能的充分利用资源(不用rtl结构,需要用spartan6中逻辑门结构),输入255bit,输出8bit。(输出的8bit是对255bit数据中的1的总个数)   这个就是我的问题。
input clk;
input grst_n;
input [254:0] data_i;(输入是任意的255bit的数据)
input ce;(数据输出的使能)
output [7:0] data_o;(输出是对输入的255bit数据中所有1的和)

原来的设计思路: 采用spartan3时,直接用RTL写的全加器来设计占用的LUT资源明显要比用门级电路(原语)设计的资源占用量多。所以采用用门级电路的方法来设计,spartan3中的设计用到了这些原语: LUT2_L XORCY(异或门) MUXCY(选择器) LUT3_L LUT4_L FDE(寄存器),
先将data_i的前[223:0]分成16个14bit的数,通过原语设计的电路结构计算出16的3bit的数据(因为7bit的数据计算出来最多可用3bit的的数据表示,如7个1,之和等于7
[13:0] → [2:0] 、 [5:2]
[27:14] → [8:6] 、[11:9]
......
依次类推 [223:210] →
然后把剩余的[254:225]中的前16bit作为进位,与前一步计算出来的16对3bit的数据用LUT2_L XORCY(异或门) MUXCY(选择器)构成的全加器进行计算变为16个4bit的数据,然后依据此种方法类推,最后算出一个8bit数据。

现在的设计思路: 因为原来的器件是spartan3,现在想要用spartan6,也要用尽可能少的资源,我看了spartan6的文档,里面的结构与spartan3的差别比较大,里面有个直接的4位全加器CARRY4 ,但是我一下还是没有想到怎样设计,请教各位大侠了,过两天就要上交任务了。。。。十万火急啊,可能很多方面不是说得很清楚。要是哪位大侠知道怎样设计,麻烦您说的详尽浅显,本人才刚进入FPGA行业,才疏学浅,麻烦大家了

(CARRY4怎么用的,怎么它的输入端接lut_6的输出和lut_5的输出。我不会用,有人说spartan3主要利用4输入的查找表,spartan6就利用6输入的查找表,但我还是不清楚怎样弄)

相关帖子

沙发
zy7598865|  楼主 | 2011-9-13 21:19 | 只看该作者
邮件 zy_jue@126.com   
QQ164390939
求高人指点啊

使用特权

评论回复
板凳
zy7598865|  楼主 | 2011-9-13 21:22 | 只看该作者
急啊  在线等

使用特权

评论回复
地板
vivisa| | 2011-9-14 09:21 | 只看该作者
好多地儿都没看明白。我等看结果吧。

使用特权

评论回复
5
AutoESL| | 2011-9-14 13:31 | 只看该作者
spartan3中的设计用到了这些原语: LUT2_L XORCY(异或门) MUXCY(选择器) LUT3_L LUT4_L FDE(寄存器),

我看你s3里面也没有用加法器啊,那在s6里面也不用就可以了吧
s6里面没有以上这几种东东?

使用特权

评论回复
6
AutoESL| | 2011-9-14 13:32 | 只看该作者
另外,你的目的就是把一个255bit的数据里面的1的个数找出来对吧?
我记得有很成熟的算法,不知道是不是你现在用的设计思路

使用特权

评论回复
7
AutoESL| | 2011-9-14 13:35 | 只看该作者
有必要用这么多原语来设计吗? 我感觉ISE应该可以做这些优化
你直接用异或, :?, reg,不能实现好的结果吗?

使用特权

评论回复
8
zy7598865|  楼主 | 2011-9-15 19:25 | 只看该作者
那位大侠可以留下联络方式,我好直接请教。。

使用特权

评论回复
9
zy7598865|  楼主 | 2011-9-19 21:29 | 只看该作者
在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占用情况没太大变化,少了一点点。  想寻求更优化资源的方法

使用特权

评论回复
10
dan_xb| | 2011-9-20 12:39 | 只看该作者
1# zy7598865
我觉得你的思路有问题啊
你这个其实不是加法器,你这个是对数据中的1计数是吧?
你要用组合逻辑,无论怎么做,都是会用很多资源的。
你为什么不改成时序逻辑,使用移位寄存器,对数据中的1进行计数呢?

使用特权

评论回复
11
AutoESL| | 2011-9-29 16:14 | 只看该作者
他可能是想一个周期内得到结果?

使用特权

评论回复
12
AutoESL| | 2011-9-29 16:16 | 只看该作者
11# zy7598865
slice减少了10%并不代表你的优化力度不够。
有可能S6的结构ISE对RTL形式的设计优化的好
而在S3下,ISE对RTL形式的设计优化不好

使用特权

评论回复
13
GoldSunMonkey| | 2011-9-29 19:19 | 只看该作者
我觉得很奇怪,这个思路有点问题。

使用特权

评论回复
14
AutoESL| | 2011-9-29 21:56 | 只看该作者
我估计是做研究之类的吧
实际产品的话,有那么多时间做这么细?

使用特权

评论回复
15
GoldSunMonkey| | 2011-9-29 22:02 | 只看该作者
而且把Xilinx底层工具做的都要搞明白,我觉得没有必要啊。

使用特权

评论回复
16
zy7598865|  楼主 | 2011-11-7 12:36 | 只看该作者
从单个加法器来看,最后用原语做出的一个加法器好像比RTL代码写的加法器要节省一点点资源,
但是吧这个加法器放到一个总体大的设计中,发现资源并没有得到优化,甚至还比以前的总体资源消耗更多了。。应该是我还掌握的不够。以后的路还很漫长啊。加油,大家都一起加油

使用特权

评论回复
17
zy7598865|  楼主 | 2011-11-7 12:39 | 只看该作者
我要结贴给分,却发现给分与总分不符。。。这个怎么弄啊。。

使用特权

评论回复
18
jakfens| | 2011-11-7 13:25 | 只看该作者
我要结贴给分,却发现给分与总分不符。。。这个怎么弄啊。。
zy7598865 发表于 2011-11-7 12:39
你给随便一个人加一分 应该就可以了

使用特权

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

本版积分规则

1

主题

167

帖子

1

粉丝