中国的孩子的个人空间 https://blog.eetop.cn/917435 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

二进制处理中的一些技巧

已有 1340 次阅读| 2016-5-24 20:58 |个人分类:verilog处理技巧

在二进制和十进制的处理中,有时候一些小技巧是很有用的。

1、把十进制数转换成二进制数

(1)在MATLAB中有一个函数dec2bin,可以把正整数转换为2进制

(2)对于负数有这样一个结论:N位二进制负数X的补码对应的无符号数为2N +X

例:有符号原码:1001  十进制为:-1

         反码: 1110 

    补码:1111   无符号数为:15

               15 = 24  + (-1);

        这样就可以快速的知道用4位二进制表示的-5的补码的无符号数为16-5=11即1011

 

2、把负数二进制补码转换成十进制

(1)把符号位去掉,再把剩余位取反加一,得到的数就是负数的二进制补码的绝对值。

(2)直接把二进制补码取反加一;

(3)1011 (-1)*23+0*22+1*21+1*20 = -5

问题:

=================================================================

=================================================================

1、用补码表示的二进制,正数转负数,负数转正数都是取反加一。

2、两个数相加位宽会增加,所以要扩展符号位:

  例:

  reg din_cho1_i [15:0];

     reg din_cho2_i [15:0];

     reg din_cho1_o2_i [16:0];

    always@( posedge clk)

    begin

  din_cho1_o2_i  <= {din_cho1_i [15],din_cho1_i } + {din_cho2_i[15],din_cho2_i };

    end

3、截位处理,可以截高位,但一定要保留符号位

always@(posedge clk)

begin

  dout_i <= {din_cho1_o2_i [16],din_cho1_o2_i [14:0]};

end

4、四舍五入

  dout_i <= din_cho1_o2_i [16:1] + din_cho1_o2_i [0];

 没有四舍五入,可能会带来很多直流信号。


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 0

    评论
  • 141

    访问数
关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-19 18:28 , Processed in 0.023281 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部