在高速超大规模的并行乘加电路的设计中(FIR或者其他运算形式),经常使用booth编码把各乘法化解成部分积,然后用CSA为基本组成单位来进入Wallace tree进行压缩,直到得到S和2C为止。在DC综合中,经常把其中的CSA单元设为dont touch,不去优化,所以当电路需要跑高速的时候,这部分逻辑资源不会产生变化,变化的只是加入了pipeline寄存器。因此这种架构具有非常明显的资源优势。那么应该在还没写代码进行综合的时候准确的评估其逻辑资源呢?方法如下:
1. Booth编码器的资源。假设分解为n比特的部分积,那么只要知道平均做booth编码时每比特大概占用多少资源即可。现分析如下:做部分积的时候,有5种可能性,0, a, -a,2a,-2a(带符号移位)。这五种可能性取决于另外一个低位乘数的a(i+1),a(i)和a(i-1),因此该部分编码电路每比特可以等效为一个Mux4再加几个小的逻辑门即可,因为0这个数可以被其他门电路做逻辑运算取代,所以只需两个mux2即可。部分积取负操作需要取反加一,为了改进时序,做booth编码时候只做取反操作,加一操作和其他项组成部分积。因此每比特的booth编码器耗费资源一般不超过10门,经实际分析,以9个门左右为经验值。
2. 做Wallace tree时使用的CSA资源。N个n比特的部分积需要N-2个n比特的CSA,因为Wallace tree的压缩的目的就是把所有的部分积压缩到只剩下两个数相加,而每组CSA只能减少一个部分积,而一个设计良好的Wallace tree,不会发生做压缩时产生的位宽扩展现象,所以CSA资源基本上为N-2个n比特的CSA 。一个CSA等价的门数看驱动能力而定,一般经验值取为9.
3. 最后一级的全加器资源。该部分资源在大规模设计中基本上可以忽略不计。
综上所述,评估该种架构的乘加电路组合逻辑资源可以使用该种方式,而根据DC综合出来的资源结果跟预估结果事实上也相差无几。
文章评论(0条评论)
登录后参与讨论