fpga减法运算

[复制链接]
 楼主| 远程烧录联盟 发表于 2020-12-7 10:57 | 显示全部楼层 |阅读模式
fpga做减法的时候,比如两个8位数相减。 在程序里面,写减法的时候。
需要对输入数据进行最高位扩展。 最后的结果是一个9bit数据。
  1. module sub8(a,b,c,clk);

  2. input [7:0] a,b;
  3. output[8:0] c;
  4. input clk;

  5. reg [8:0] c;
  6. always [url=home.php?mod=space&uid=72445]@[/url] ( posedge clk) begin
  7. //c <= a - b;
  8. c <= {a[7], a} - {b[7],b};
  9. end

  10. endmodule

  11. 测试模块

  12. module sub8_tb;

  13. reg [7:0] a,b;
  14. wire[8:0] c;
  15. reg clk;

  16. initial begin
  17. clk = 0;
  18. a = 8'd100;
  19. b = 8'd17;

  20. #15 ;
  21. a = 8'd100;
  22. b = -8'd17;

  23. #15 ;
  24. a = -8'd100;
  25. b = 8'd17;

  26. #15 ;
  27. a = -8'd100;
  28. b = -8'd17;

  29. // test overflow
  30. #15;
  31. a = 8'd100; // res should be 132.
  32. b = -8'd32;

  33. #15;
  34. a = -8'd100; // res should be -132.
  35. b = 8'd32;

  36. #20;
  37. $stop;
  38. end
  39. sub8 m0(a,b,c,clk);
  40. always #5 clk = ~clk;

  41. endmodule
截图如下,发现100 和-32做减法,得到132。 同样-100和32做减法也得到了-132。 能够得到正确的结果。

(转载)
雷北城 发表于 2020-12-7 18:51 | 显示全部楼层
谢谢分享,学习了!
zhangmangui 发表于 2020-12-7 21:46 | 显示全部楼层
很多都是用IP核的
00750 发表于 2020-12-9 08:53 | 显示全部楼层
不懂,学习
zlf1208 发表于 2020-12-9 12:14 | 显示全部楼层
减法是不是应该改为补码做加法?
hanjunma111 发表于 2020-12-13 13:12 来自手机 | 显示全部楼层
大家好,我建了个fpga源码分享的群,群内经常分享免费fpga源代码下载,有兴趣的同学可以申请加入哈,群号:891268392 打扰见谅~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

42

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部