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/] [SinglePathFPAdderMappedConversions/] [special_cases.v] - Blame information for rev 18

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 15 constantin
`timescale 1ns / 1ps
2
//////////////////////////////////////////////////////////////////////////////////
3 18 constantin
// Company:     UPT
4
// Engineer:    Constantina-Elena Gavriliu
5 15 constantin
// 
6
// Create Date:    18:56:11 10/07/2013 
7
// Design Name: 
8 18 constantin
// Module Name:    special_cases
9 15 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:
15 15 constantin
// Revision: 
16
// Revision 0.01 - File Created
17
// Additional Comments: 
18
//
19
//////////////////////////////////////////////////////////////////////////////////
20
module special_cases            #(      parameter size_exception_field = 2'd2,
21
                                                                        parameter [size_exception_field - 1 : 0] zero                    = 0, //00
22 18 constantin
                                                                        parameter [size_exception_field - 1 : 0] normal_number   = 1, //01
23 15 constantin
                                                                        parameter [size_exception_field - 1 : 0] infinity                = 2, //10
24 18 constantin
                                                                        parameter [size_exception_field - 1 : 0] NaN                     = 3) //11
25 15 constantin
                                                                (       input [size_exception_field - 1 : 0] sp_case_a_number,
26
                                                                        input [size_exception_field - 1 : 0] sp_case_b_number,
27
                                                                        output reg [size_exception_field - 1 : 0] sp_case_result_o);
28
 
29
        always
30
                @(*)
31
        begin
32
                case ({sp_case_a_number, sp_case_b_number})
33 18 constantin
                        {zero, zero}:                                   sp_case_result_o = zero;
34
                        {zero, normal_number}:                  sp_case_result_o = normal_number;
35
                        {zero, infinity}:                               sp_case_result_o = infinity;
36
                        {zero, NaN}:                                    sp_case_result_o = NaN;
37 15 constantin
 
38 18 constantin
                        {normal_number,zero}:                   sp_case_result_o = normal_number;
39 15 constantin
                        {normal_number,normal_number}:  sp_case_result_o = normal_number;
40 18 constantin
                        {normal_number,infinity}:               sp_case_result_o = infinity;
41
                        {normal_number,NaN}:                    sp_case_result_o = NaN;
42 15 constantin
 
43 18 constantin
                        {infinity, zero}:                               sp_case_result_o = infinity;
44 15 constantin
                        {infinity, normal_number}:              sp_case_result_o = infinity;
45 18 constantin
                        {infinity, infinity}:                   sp_case_result_o = infinity;
46
                        {infinity, NaN}:                                sp_case_result_o = NaN;
47 15 constantin
 
48 18 constantin
                        {NaN, zero}:                                    sp_case_result_o = NaN;
49
                        {NaN, normal_number}:                   sp_case_result_o = NaN;
50
                        {NaN, infinity}:                                sp_case_result_o = NaN;
51
                        {NaN, NaN}:                                     sp_case_result_o = NaN;
52
                        default:                                                sp_case_result_o = zero;
53 15 constantin
                endcase
54
        end
55
 
56
endmodule

powered by: WebSVN 2.1.0

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