设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 注册已关闭
搜索
查看: 664|回复: 0
收起左侧

Quartus Verilog HDL/FPGA 比较float(32位)/double(64位) IEEE754浮点小数等于/不等于

[复制链接]
发表于 2022-9-4 08:53:04 | 显示全部楼层 |阅读模式
main.png
  1. /*
  2.         小数:123.456
  3.         32位float编码:32'h42F6E979
  4.         64位double编码:64'h405EDD2F1A9FBE77
  5. */

  6. module double_equ(                        //double 64位小数等于
  7.         input [63:0] val1,                //小数1
  8.         input [63:0] val2,                //小数2
  9.         output ret                                        //等于输出1 否则0
  10. );
  11.         assign ret = (val1 == val2) ? 1'b1 : 1'b0;
  12. endmodule

  13. module double_neq(                        //double 64位小数不等于
  14.         input [63:0] val1,                //小数1
  15.         input [63:0] val2,                //小数2
  16.         output ret                                        //不等于输出1 否则0
  17. );
  18.         assign ret = (val1 != val2) ? 1'b1 : 1'b0;
  19. endmodule

  20. module float_equ(                        //float 32位小数等于
  21.         input [31:0] val1,                //小数1
  22.         input [31:0] val2,                //小数2
  23.         output ret                                        //等于输出1 否则0
  24. );
  25.         assign ret = (val1 == val2) ? 1'b1 : 1'b0;
  26. endmodule

  27. module float_neq(                        //float 32位小数不等于
  28.         input [31:0] val1,                //小数1
  29.         input [31:0] val2,                //小数2
  30.         output ret                                        //不等于输出1 否则0
  31. );
  32.         assign ret = (val1 != val2) ? 1'b1 : 1'b0;
  33. endmodule

  34. module main(
  35.         input clk,                                //时钟输入
  36.         output reg led                        //LED 低电平点亮
  37. );
  38. wire a,b,c,d;

  39. double_equ u1(
  40.         .val1(64'h40091EB851EB851F),                //3.14
  41.         .val2(64'h40091EB851EB851F),                //3.14
  42.         .ret(a)
  43. );

  44. double_neq u2 (
  45.         .val1(64'h3FF3AE147AE147AE),                //1.23
  46.         .val2(64'h40123D70A3D70A3D),                //4.56
  47.         .ret(b)
  48. );

  49. float_equ u3(
  50.         .val1(32'h4048F5C3),                //3.14
  51.         .val2(32'h4048F5C3),                //3.14
  52.         .ret(c)
  53. );

  54. float_neq u4(
  55.         .val1(32'h3F9D70A4),                //1.23
  56.         .val2(32'h4091EB85),                //4.56
  57.         .ret(d)
  58. );

  59. always@(posedge clk) begin
  60.         if(&{a,b,c,d}) begin
  61.                 led <= 1'b0;
  62.         end else begin
  63.                 led <= 1'b1;
  64.         end
  65. end
  66. endmodule
复制代码

相关帖子

您需要登录后才可以回帖 登录 | 注册已关闭

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-4-26 04:11 , Processed in 1.083062 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表