https://mp.weixin.qq.com/s/10fgjqPt2pRvIJzjDGYgBg
 
概念辨析
 
https://mp.weixin.qq.com/s/9rGs9yN-OvLvEclnDZr87Q
 
两个结论:
1. 如果不把符号位编码编进二进制数里面,那么符号位就要单独考虑。保证被减数一定要大于减数,不然减出来的差(负数)无法表示。比如:在小学一二年级的时候,做减法必须保证被减数大于减数,如果反过来不够减,学生就不知道该怎么表示了。
2. 补码表示的一定是有符号数。
3. 无符号数是数的二进制表示形式,不牵涉到编码的概念。既不牵涉到补码,也不牵涉到原码。
 
参考链接
https://github.com/wjcdx/jchdl/blob/master/src/org/jchdl/model/gsl/operator/arithmetic/Sub.java
 
补码的编码方法有两个好处(鱼与熊掌):
  • 把符号位编进数字中,无需单独处理符号位;
  • 可以把符号位带入运算,无需单独处理符号位;
  •  
    补码的减法可以转变为加法,降低了实现逻辑的难度。下面介绍二进制数补码形式的减法运算。
     
    1.创建Sub.java, 并生成构造方法和logic()方法
     
    根据逻辑原理图,添加输入输出线
     
    3. 在构造方法中搜集输入输出线并调用construct()方法
     
    4. 在logic()方法中创建子节点并连线
    这里把 a - b转换为 a + (-b)。-b 是 b 相反数。求相反数就是求二的补码形式。
    这里使用Add来实现减法,但没有提供输入进位,所以使用0代替。
    不考虑输出进位,所以输出到地。(无法转换为Verilog)
     
    5. 创建inst静态方法方便后续使用
     
    6. 创建main方法执行验证
     
     
    运行结果为:
     
     
     
    7. 生成Verilog
    生成定制化模块名:
     
    调用toVerilog()方法生成Verilog实现。
     
    执行结果如下:
     
     
     

    相关文章:

    • 2022-12-23
    • 2022-12-23
    • 2022-12-23
    • 2022-12-23
    • 2022-12-23
    • 2022-12-23
    • 2022-12-23
    猜你喜欢
    • 2022-12-23
    • 2022-12-23
    • 2021-11-30
    • 2022-12-23
    • 2022-12-23
    • 2022-12-23
    • 2022-12-23
    相关资源
    相似解决方案