首页 > 代码库 > CSD编码

CSD编码

有符号数(Signed Digit Number , SD)

  1. SD编码

1、有三重值 {0,1,-1}

2、应用在不用进位的加法器或乘法器中能够降低复杂性

因为通常可以通过非零元素的数来估计乘法的工作量,而应用SD表示法可以降低乘法的工作量。统计表明,数字的二进制补码中有一半数字是零,对于SD码,零元素的密度增加到三分之二

3、SD表示方法不是唯一的

举例如下:用SD表示十进制数15(15=1111 16=10000)

15=16-1  = 1000(-1)

15=16-2+1  = 100(-1)1

15=16-4+3  = 10(-1)11

但是只有最少非零元素的系统才叫CSD(正则有符号数字系统:Canonic Signed Digit ,CSD)

 

下附网上搜到的图片(修改了一下)

技术分享

  2.最佳CSD编码

(1)从最低有效位开始,用10。。。0(-1)取代所有大于2的1序列,此外还需要用110(-1)取代1011

(2)从最高有效位开始,用011代替10(-1)

  3.分数CSD编码

 如求7*X/8

看成7=8-1可以更高效的实现

 1 /*-----------------------------------------------------------------------
 2 Author                        :        WHaoL
 3 Technology blogs            :        http://www.cnblogs.com/WHaoL/
 4                                 :        http://blog.chinaaet.com/eWorld
 5 Email Address                :        liangwenhao0603@163.com
 6 Filename                        :        CSD.v
 7 Data                            :        2016-08-04
 8 Description                    :
 9 modification history        :        
10 Data            By            Version            Change Description
11 =========================================================================
12 16/11/5        WHaoL        1.0                Original
13 =======================================================================*/
14 `timescale 1ns/1ns
15 module CSD (
16 input            [4:0]        x,
17 output         [4:0]        y0,y1,y2,y3
18 );
19 assign y0 = 7*x/8;
20 assign y1 = x/8*7;
21 assign y2 = x/2+x/4+x/8;
22 assign y3 = x-x/8;
23 
24 endmodule

技术分享

 

CSD编码