探索定点数

本文深入探讨了定点数的运算,包括无符号数和补码表示的加法,补码加法器的实现,2补码数制的计数器,有/无符号数的乘法和加法,2补码溢出的回绕处理,以及定点小数的乘法和加法运算。通过示例和RTL图,详细解析了各种运算的逻辑和应用场景。
摘要由CSDN通过智能技术生成

1.无符号数加法器

  • 输入输出都是无符号的整数,输入为8bit 宽,则其最大数值为255,所以两个输入口相加的最大值为255x2=510,所以输出口宽9bit即可。

  • rtl图
    无符号数

  • 代码片
module top_unsigned (
    IN1 ,
    IN2 ,
    OUT1 ) ;
input [ 7 : 0 ] IN1, IN2 ; //没有“signed”关键字默认“unsigned”
output [ 8 : 0 ] OUT1;
reg [ 8 : 0 ] OUT1;
always@(IN1 or IN2) begin // 生成组合逻辑的always 块
    OUT1 = IN1 + IN2 ;
end
endmodule

2.补码加法器

  • 输入和输出数据都是2补码形式的有符号数。从逻辑门电路的角度观察,补码加法器和无符号加法器的电路逻辑是不同的,但可以通过使用”signed”关键字来描述加法器的输入数据格式为有符号数,则EDA工具检测到该信息后,会自动生成补码加法器的电路逻辑。

  • rtl图
    补码加法器

  • 代码片
module top_signed (
    IN1 ,
    IN2 ,
    OUT2 ) ;
input signed [ 7 : 0 ] IN1, IN2 ;
output signed [ 8 : 0 ] OUT2;
reg signed [ 8 : 0 ] OUT2;
always@(IN1 or IN2) begin // 生成组合逻辑的always 块
    OUT2 = IN1 + IN2 ;
end
endmodule 

3.计数器:2补码数制,从-7到7

  • 有符号数与2的补码
二进制数值 无符号整数 有符号原码 2补码
0000 0 0 0
0001 1 1 1
0010 2 2 2
0011 3 3 3
0100 4 4 4
0101 5 5 5
0110 6 6 6
0111 7 7 7
1000 8 -0 -8
1001 9 -1 -7
1010 10 -2 -6
1011 11 -3 -5
1100 12 -4 -4
1101 13 -5 -3
1110 14 -6 -2
1111 15 -7 -1
  • 思路:由上表可以看出,2补码对应的四位二进制数制,当 -7 ~ -6 对应的二进制最高位扩展为 0 , 0 ~ +7 对应的二进制最高位扩展为 1 ,如下表所示,可用一个增量为 1 的计数器获得该五位二进制数,结果取第四位即可。
2补码 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7
二进制数值 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111
扩展最高位 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111
  • rtl图
    rtl

  • signaltap图:OUT3 以 2 补码的格式显示
    signaltap

  • 代码片

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值