OpenCores
URL https://opencores.org/ocsvn/xilinx_virtex_fp_library/xilinx_virtex_fp_library/trunk

Subversion Repositories xilinx_virtex_fp_library

[/] [xilinx_virtex_fp_library/] [trunk/] [SinglePathFPAdder/] [special_cases.v] - Blame information for rev 18

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 8 constantin
`timescale 1ns / 1ps
2
//////////////////////////////////////////////////////////////////////////////////
3 18 constantin
// Company:     UPT     
4
// Engineer:    Constantina-Elena Gavriliu
5 8 constantin
// 
6
// Create Date:    18:56:11 10/07/2013 
7
// Design Name: 
8 18 constantin
// Module Name:    special_cases
9 8 constantin
// Project Name: 
10
// Target Devices: 
11
// Tool versions: 
12 18 constantin
// Description: Compute corresponding special cases (exceptions)
13
//                              //do not take into consideration cases for which the operation generates a NaN or Infinity exception (with corresponding sign) when initial "special cases" are not such exceptions
14
// Dependencies:        SinglePathFPAdder
15 8 constantin
//
16
// Revision: 
17
// Revision 0.01 - File Created
18
// Additional Comments: 
19
//
20
//////////////////////////////////////////////////////////////////////////////////
21
module special_cases            #(      parameter size_exception_field = 2'd2,
22
                                                                        parameter [size_exception_field - 1 : 0] zero                    = 0, //00
23 18 constantin
                                                                        parameter [size_exception_field - 1 : 0] normal_number   = 1, //01
24 8 constantin
                                                                        parameter [size_exception_field - 1 : 0] infinity                = 2, //10
25 18 constantin
                                                                        parameter [size_exception_field - 1 : 0] NaN                     = 3) //11
26 8 constantin
                                                                (       input [size_exception_field - 1 : 0] sp_case_a_number,
27
                                                                        input [size_exception_field - 1 : 0] sp_case_b_number,
28 18 constantin
                                                                        input eff_op,
29 8 constantin
                                                                        output reg [size_exception_field - 1 : 0] sp_case_result_o);
30
 
31
        always
32
                @(*)
33
        begin
34
                case ({sp_case_a_number, sp_case_b_number})
35 18 constantin
                        {zero, zero}:                                           sp_case_result_o = zero;
36 8 constantin
                        {zero, normal_number}:                          sp_case_result_o = normal_number;
37
                        {zero, infinity}:                                       sp_case_result_o = infinity;
38 18 constantin
                        {zero, NaN}:                                            sp_case_result_o = NaN;
39 8 constantin
 
40
                        {normal_number,zero}:                           sp_case_result_o = normal_number;
41 18 constantin
                        {normal_number,normal_number}:          sp_case_result_o = normal_number;
42 8 constantin
                        {normal_number,infinity}:                       sp_case_result_o = infinity;
43 18 constantin
                        {normal_number,NaN}:                            sp_case_result_o = NaN;
44 8 constantin
 
45
                        {infinity, zero}:                                       sp_case_result_o = infinity;
46 18 constantin
                        {infinity, normal_number}:                      sp_case_result_o = infinity;
47 8 constantin
                        {infinity, infinity}:                           sp_case_result_o = infinity;
48 18 constantin
                        {infinity, NaN}:                                        sp_case_result_o = NaN;
49 8 constantin
 
50 18 constantin
                        {NaN, zero}:                                            sp_case_result_o = NaN;
51 8 constantin
                        {NaN, normal_number}:                           sp_case_result_o = NaN;
52 18 constantin
                        {NaN, infinity}:                                        sp_case_result_o = NaN;
53
                        {NaN, NaN}:                                             sp_case_result_o = NaN;
54
                        default:                                                        sp_case_result_o = zero;
55 8 constantin
                endcase
56
        end
57
 
58
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.