用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输入的查找表,但我还是不清楚怎样弄) |