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

Subversion Repositories trigonometric_functions_in_double_fpu

[/] [trigonometric_functions_in_double_fpu/] [trunk/] [verilog/] [cosecant.v] - Blame information for rev 17

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 17 draunzer
/////////////////////////////////////////////////////////////////////
2
////                                                             ////
3
////                                                          ////
4
////  Trigonometric functions using double precision Floating Point Unit        ////
5
////                                                             ////
6
////  Author: Muni Aditya                                        ////
7
////          muni_aditya@yahoo.com                                ////
8
////                                                             ////
9
/////////////////////////////////////////////////////////////////////
10
////                                                             ////
11
//// Copyright (C) 2013 Muni Aditya                           ////
12
////                  muni_aditya@yahoo.com                        ////
13
////                                                             ////
14
//// This source file may be used and distributed without        ////
15
//// restriction provided that this copyright statement is not   ////
16
//// removed from the file and that any derivative work contains ////
17
//// the original copyright notice and the associated disclaimer.////
18
////                                                             ////
19
////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
20
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
21
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
22
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
23
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
24
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
25
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
26
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
27
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
28
//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
29
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
30
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
31
//// POSSIBILITY OF SUCH DAMAGE.                                 ////
32
////                                                             ////
33
/////////////////////////////////////////////////////////////////////
34
 
35
 
36
`timescale 1ns / 100ps
37
 
38
`define INPUT_WIDTH 32
39
 
40
module cosecant_lut (quad, enable, degrees, data, rst, clk);
41
 
42
input [1:0] quad;
43
input enable;
44
input rst;
45
input [`INPUT_WIDTH-1:0] degrees ;
46
input clk;
47
 
48
//////////////inputs/////////////////
49
 
50
output reg [63:0] data;
51
 
52
//////////////output/////////////////
53
 
54
 
55
always@(posedge clk )
56
 
57
// needs to be positive in first and second quadrants
58
 
59
 
60
 begin
61
        if (quad == 2'b10 || quad == 2'b11)
62
        begin
63
        data[63] <= 1'b1;
64
        end
65
 
66
        else
67
        begin
68
        data[63] <= 1'b0;
69
        end
70
 
71
        if(enable)
72
        case (degrees)
73
 
74
// look up table
75
 
76
`INPUT_WIDTH'd0  : data[62:0] <= 64'h7ff0000000000000;
77
`INPUT_WIDTH'd1  : data[62:0] <= 64'h404ca63b6cba7b71;
78
`INPUT_WIDTH'd2  : data[62:0] <= 64'h403ca7596e271c86;
79
`INPUT_WIDTH'd3  : data[62:0] <= 64'h40331b797e990dc0;
80
`INPUT_WIDTH'd4  : data[62:0] <= 64'h402cabd2100d036c;
81
`INPUT_WIDTH'd5  : data[62:0] <= 64'h4026f28a8ae3ab08;
82
`INPUT_WIDTH'd6  : data[62:0] <= 64'h4023222ff85e6006;
83
`INPUT_WIDTH'd7  : data[62:0] <= 64'h402069387b617567;
84
`INPUT_WIDTH'd8  : data[62:0] <= 64'h401cbdbe5febffb0;
85
`INPUT_WIDTH'd9  : data[62:0] <= 64'h401991df41de341d;
86
`INPUT_WIDTH'd10 : data[62:0] <= 64'h401708fb2129168e;
87
`INPUT_WIDTH'd11 : data[62:0] <= 64'h4014f69f90704701;
88
`INPUT_WIDTH'd12 : data[62:0] <= 64'h40133d2b00047f03;
89
`INPUT_WIDTH'd13 : data[62:0] <= 64'h4011c819f29be025;
90
`INPUT_WIDTH'd14 : data[62:0] <= 64'h401088c56499f439;
91
`INPUT_WIDTH'd15 : data[62:0] <= 64'h400ee8dd4748bf16;
92
`INPUT_WIDTH'd16 : data[62:0] <= 64'h400d060d6ac58d68;
93
`INPUT_WIDTH'd17 : data[62:0] <= 64'h400b5cc824ec982e;
94
`INPUT_WIDTH'd18 : data[62:0] <= 64'h4009e3779b97f4a8;
95
`INPUT_WIDTH'd19 : data[62:0] <= 64'h4008928aa26c4c08;
96
`INPUT_WIDTH'd20 : data[62:0] <= 64'h400763f38fb4cf95;
97
`INPUT_WIDTH'd21 : data[62:0] <= 64'h400652cbf905707a;
98
`INPUT_WIDTH'd22 : data[62:0] <= 64'h40055b11998752c1;
99
`INPUT_WIDTH'd23 : data[62:0] <= 64'h40047974b96de77f;
100
`INPUT_WIDTH'd24 : data[62:0] <= 64'h4003ab32fb93a3a7;
101
`INPUT_WIDTH'd25 : data[62:0] <= 64'h4002edfb187b1137;
102
`INPUT_WIDTH'd26 : data[62:0] <= 64'h40023fd71f682341;
103
`INPUT_WIDTH'd27 : data[62:0] <= 64'h40019f1b8c9526f0;
104
`INPUT_WIDTH'd28 : data[62:0] <= 64'h40010a59ff3c94be;
105
`INPUT_WIDTH'd29 : data[62:0] <= 64'h40008056af82561d;
106
`INPUT_WIDTH'd30 : data[62:0] <= 64'h4000000000000001;
107
`INPUT_WIDTH'd31 : data[62:0] <= 64'h3fff10cf62336e31;
108
`INPUT_WIDTH'd32 : data[62:0] <= 64'h3ffe317ab5700fce;
109
`INPUT_WIDTH'd33 : data[62:0] <= 64'h3ffd6093ce555fa8;
110
`INPUT_WIDTH'd34 : data[62:0] <= 64'h3ffc9cd7b485648a;
111
`INPUT_WIDTH'd35 : data[62:0] <= 64'h3ffbe52877982347;
112
`INPUT_WIDTH'd36 : data[62:0] <= 64'h3ffb38880b4603e4;
113
`INPUT_WIDTH'd37 : data[62:0] <= 64'h3ffa9613f8fd7862;
114
`INPUT_WIDTH'd38 : data[62:0] <= 64'h3ff9fd01bf93f3a3;
115
`INPUT_WIDTH'd39 : data[62:0] <= 64'h3ff96c9bc1d2abfe;
116
`INPUT_WIDTH'd40 : data[62:0] <= 64'h3ff8e43eaadf9334;
117
`INPUT_WIDTH'd41 : data[62:0] <= 64'h3ff863573463a809;
118
`INPUT_WIDTH'd42 : data[62:0] <= 64'h3ff7e9603e24eb24;
119
`INPUT_WIDTH'd43 : data[62:0] <= 64'h3ff775e129d20b11;
120
`INPUT_WIDTH'd44 : data[62:0] <= 64'h3ff7086c7026f77e;
121
`INPUT_WIDTH'd45 : data[62:0] <= 64'h3ff6a09e667f3bcd;
122
`INPUT_WIDTH'd46 : data[62:0] <= 64'h3ff63e1c2d781ada;
123
`INPUT_WIDTH'd47 : data[62:0] <= 64'h3ff5e092c2857578;
124
`INPUT_WIDTH'd48 : data[62:0] <= 64'h3ff587b62f6162b4;
125
`INPUT_WIDTH'd49 : data[62:0] <= 64'h3ff53340d31354d5;
126
`INPUT_WIDTH'd50 : data[62:0] <= 64'h3ff4e2f2c0fa463b;
127
`INPUT_WIDTH'd51 : data[62:0] <= 64'h3ff4969132d53892;
128
`INPUT_WIDTH'd52 : data[62:0] <= 64'h3ff44de60b3c3d86;
129
`INPUT_WIDTH'd53 : data[62:0] <= 64'h3ff408bf665efb99;
130
`INPUT_WIDTH'd54 : data[62:0] <= 64'h3ff3c6ef372fe94f;
131
`INPUT_WIDTH'd55 : data[62:0] <= 64'h3ff3884aef684af8;
132
`INPUT_WIDTH'd56 : data[62:0] <= 64'h3ff34cab310ac280;
133
`INPUT_WIDTH'd57 : data[62:0] <= 64'h3ff313eb883ae677;
134
`INPUT_WIDTH'd58 : data[62:0] <= 64'h3ff2ddea2c696f6a;
135
`INPUT_WIDTH'd59 : data[62:0] <= 64'h3ff2aa87c7f7612b;
136
`INPUT_WIDTH'd60 : data[62:0] <= 64'h3ff279a74590331d;
137
`INPUT_WIDTH'd61 : data[62:0] <= 64'h3ff24b2da2943b49;
138
`INPUT_WIDTH'd62 : data[62:0] <= 64'h3ff21f01c602373d;
139
`INPUT_WIDTH'd63 : data[62:0] <= 64'h3ff1f50c5b61511e;
140
`INPUT_WIDTH'd64 : data[62:0] <= 64'h3ff1cd37b13ce9c7;
141
`INPUT_WIDTH'd65 : data[62:0] <= 64'h3ff1a76f9ad128b7;
142
`INPUT_WIDTH'd66 : data[62:0] <= 64'h3ff183a154932d8b;
143
`INPUT_WIDTH'd67 : data[62:0] <= 64'h3ff161bb6b4a03f3;
144
`INPUT_WIDTH'd68 : data[62:0] <= 64'h3ff141ada5766663;
145
`INPUT_WIDTH'd69 : data[62:0] <= 64'h3ff12368eecf1f68;
146
`INPUT_WIDTH'd70 : data[62:0] <= 64'h3ff106df459ea073;
147
`INPUT_WIDTH'd71 : data[62:0] <= 64'h3ff0ec03a9d451e4;
148
`INPUT_WIDTH'd72 : data[62:0] <= 64'h3ff0d2ca0da1530d;
149
`INPUT_WIDTH'd73 : data[62:0] <= 64'h3ff0bb27477cf20f;
150
`INPUT_WIDTH'd74 : data[62:0] <= 64'h3ff0a51105712a50;
151
`INPUT_WIDTH'd75 : data[62:0] <= 64'h3ff0907dc1930690;
152
`INPUT_WIDTH'd76 : data[62:0] <= 64'h3ff07d64b78dea34;
153
`INPUT_WIDTH'd77 : data[62:0] <= 64'h3ff06bbddb2b91b8;
154
`INPUT_WIDTH'd78 : data[62:0] <= 64'h3ff05b81cfc51885;
155
`INPUT_WIDTH'd79 : data[62:0] <= 64'h3ff04ca9e08b8cb6;
156
`INPUT_WIDTH'd80 : data[62:0] <= 64'h3ff03f2ff9989907;
157
`INPUT_WIDTH'd81 : data[62:0] <= 64'h3ff0330ea1b99998;
158
`INPUT_WIDTH'd82 : data[62:0] <= 64'h3ff02840f4e91085;
159
`INPUT_WIDTH'd83 : data[62:0] <= 64'h3ff01ec29f6be927;
160
`INPUT_WIDTH'd84 : data[62:0] <= 64'h3ff0168fd9895209;
161
`INPUT_WIDTH'd85 : data[62:0] <= 64'h3ff00fa563d53203;
162
`INPUT_WIDTH'd86 : data[62:0] <= 64'h3ff00a008406617c;
163
`INPUT_WIDTH'd87 : data[62:0] <= 64'h3ff0059f0252e0bc;
164
`INPUT_WIDTH'd88 : data[62:0] <= 64'h3ff0027f274d432f;
165
`INPUT_WIDTH'd89 : data[62:0] <= 64'h3ff0009fba3f7835;
166
`INPUT_WIDTH'd90 : data[62:0] <= 64'h3ff0000000000000;
167
 
168
 
169
default:data <= 64'h0;
170
 
171
endcase
172
 
173
else
174
  data <= 64'hxxxxxxxxxxxxxxx;
175
 
176
 
177
 
178
end
179
 
180
endmodule

powered by: WebSVN 2.1.0

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