|
- /*
- 小数:123.456
- 32位float编码:32'h42F6E979
- 64位double编码:64'h405EDD2F1A9FBE77
- */
- module double_equ( //double 64位小数等于
- input [63:0] val1, //小数1
- input [63:0] val2, //小数2
- output ret //等于输出1 否则0
- );
- assign ret = (val1 == val2) ? 1'b1 : 1'b0;
- endmodule
- module double_neq( //double 64位小数不等于
- input [63:0] val1, //小数1
- input [63:0] val2, //小数2
- output ret //不等于输出1 否则0
- );
- assign ret = (val1 != val2) ? 1'b1 : 1'b0;
- endmodule
- module float_equ( //float 32位小数等于
- input [31:0] val1, //小数1
- input [31:0] val2, //小数2
- output ret //等于输出1 否则0
- );
- assign ret = (val1 == val2) ? 1'b1 : 1'b0;
- endmodule
- module float_neq( //float 32位小数不等于
- input [31:0] val1, //小数1
- input [31:0] val2, //小数2
- output ret //不等于输出1 否则0
- );
- assign ret = (val1 != val2) ? 1'b1 : 1'b0;
- endmodule
- module main(
- input clk, //时钟输入
- output reg led //LED 低电平点亮
- );
- wire a,b,c,d;
- double_equ u1(
- .val1(64'h40091EB851EB851F), //3.14
- .val2(64'h40091EB851EB851F), //3.14
- .ret(a)
- );
- double_neq u2 (
- .val1(64'h3FF3AE147AE147AE), //1.23
- .val2(64'h40123D70A3D70A3D), //4.56
- .ret(b)
- );
- float_equ u3(
- .val1(32'h4048F5C3), //3.14
- .val2(32'h4048F5C3), //3.14
- .ret(c)
- );
- float_neq u4(
- .val1(32'h3F9D70A4), //1.23
- .val2(32'h4091EB85), //4.56
- .ret(d)
- );
- always@(posedge clk) begin
- if(&{a,b,c,d}) begin
- led <= 1'b0;
- end else begin
- led <= 1'b1;
- end
- end
- endmodule
复制代码 |
|