X+32和X+1谁消耗的FPGA资源多

描述

一个有意思的题目。

X为一个32-bit的数,那么 X+32 和 X+1,哪个消耗的资源更多?还是一样多?

假如只允许用 LUT 实现

如图1所示每个LUT可以完成1bit的加法,同时产生进位(Xilinx LUT6可以有两个输出)。因此对于32bit的加法,则需要32个LUT。

FPGA

图1

假如我们要实现的是 A+B,A和B都是32-bit的,那么确实是需要32个LUT。那X+32和X+1的常数加法呢?

32可以表示为32'b0000...0010_0000,1可以表示为32'b0000....0000_0001。

对于 X+32,输出值的低5bit可以直接表示为X[5:0],不需要LUT,其余值需要27个LUT实现加法运算。

对于X+1,只能从bit 0开始相加计算进位,总共需要32个LUT。

因此 X+1 消耗的资源更多。

假如是Vivado综合,即使用Carry8

对于32bit的加法,需要4个carry8,那么是否意味着 X+32 和 X+1 有相同的资源消耗呢?

查看综合结果(如下图所示):

X+1    2个LUT1+4个Carry8 (LUT1实现的是取反的功能)

X+3    3个LUT1+4个Carry8 (bit0消耗2个LUT1,bit1消耗一个LUT1)

X+32  1个LUT1+4个Carry8 (bit5消耗1个LUT1)

因此从综合结果看仍然是 X+1消耗的资源更多。当然这仅仅考虑单个加法的结果,如果实际代码中,加法器前面还有组合逻辑,这个LUT1应该是会合并在前面的LUT中实现,因而X+1和X+32会得到相同的资源消耗,即4个Carry8。

感兴趣的读者可以思考下 X-32会消耗多少LUT。

FPGA

图2 - X+1

FPGA

图3 - X+3

FPGA

图4 - X+32

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分