有符号数(Signed Digit Number , SD)
- 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