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/] [cosine.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
`timescale 1ns / 100ps
36
 
37
`define INPUT_WIDTH 32
38
 
39
module cosine_lut (quad, enable, degrees, data, rst, clk);
40
 
41
input [1:0] quad;
42
input enable;
43
input rst;
44
input [`INPUT_WIDTH-1:0] degrees ;
45
input clk;
46
 
47
//////////////inputs/////////////////
48
 
49
output reg [63:0] data;
50
 
51
//////////////output/////////////////
52
 
53
 
54
always@(posedge clk )
55
 
56
//needs to be positive in first and fourth quadrants
57
 
58
 begin
59
        if (quad == 2'b01 || quad == 2'b10)
60
        begin
61
        data[63] <= 1'b1;
62
        end
63
 
64
        else
65
        begin
66
        data[63] <= 1'b0;
67
        end
68
 
69
        if(enable)
70
        case (degrees)
71
 
72
//look up table
73
 
74
`INPUT_WIDTH'd0  : data[62:0] <= 64'h3ff0000000000000;
75
`INPUT_WIDTH'd1  : data[62:0] <= 64'h3feffec097f5af8a;
76
`INPUT_WIDTH'd2  : data[62:0] <= 64'h3feffb0278bf0567;
77
`INPUT_WIDTH'd3  : data[62:0] <= 64'h3feff4c5ed12e61d;
78
`INPUT_WIDTH'd4  : data[62:0] <= 64'h3fefec0b7170fff6;
79
`INPUT_WIDTH'd5  : data[62:0] <= 64'h3fefe0d3b41815a2;
80
`INPUT_WIDTH'd6  : data[62:0] <= 64'h3fefd31f94f867c6;
81
`INPUT_WIDTH'd7  : data[62:0] <= 64'h3fefc2f025a23e8b;
82
`INPUT_WIDTH'd8  : data[62:0] <= 64'h3fefb046a930947a;
83
`INPUT_WIDTH'd9  : data[62:0] <= 64'h3fef9b24942fe45c;
84
`INPUT_WIDTH'd10 : data[62:0] <= 64'h3fef838b8c811c17;
85
`INPUT_WIDTH'd11 : data[62:0] <= 64'h3fef697d6938b6c2;
86
`INPUT_WIDTH'd12 : data[62:0] <= 64'h3fef4cfc327a0080;
87
`INPUT_WIDTH'd13 : data[62:0] <= 64'h3fef2e0a214e870f;
88
`INPUT_WIDTH'd14 : data[62:0] <= 64'h3fef0ca99f79ba25;
89
`INPUT_WIDTH'd15 : data[62:0] <= 64'h3feee8dd4748bf15;
90
`INPUT_WIDTH'd16 : data[62:0] <= 64'h3feec2a7e35e7b80;
91
`INPUT_WIDTH'd17 : data[62:0] <= 64'h3fee9a0c6e7bdb20;
92
`INPUT_WIDTH'd18 : data[62:0] <= 64'h3fee6f0e134454ff;
93
`INPUT_WIDTH'd19 : data[62:0] <= 64'h3fee41b02bfeb4cb;
94
`INPUT_WIDTH'd20 : data[62:0] <= 64'h3fee11f642522d1c;
95
`INPUT_WIDTH'd21 : data[62:0] <= 64'h3feddfe40effb805;
96
`INPUT_WIDTH'd22 : data[62:0] <= 64'h3fedab7d7997cb58;
97
`INPUT_WIDTH'd23 : data[62:0] <= 64'h3fed74c6982c666f;
98
`INPUT_WIDTH'd24 : data[62:0] <= 64'h3fed3bc3aeff7f95;
99
`INPUT_WIDTH'd25 : data[62:0] <= 64'h3fed0079302dd767;
100
`INPUT_WIDTH'd26 : data[62:0] <= 64'h3fecc2ebbb5638ca;
101
`INPUT_WIDTH'd27 : data[62:0] <= 64'h3fec83201d3d2c6d;
102
`INPUT_WIDTH'd28 : data[62:0] <= 64'h3fec411b4f6d2708;
103
`INPUT_WIDTH'd29 : data[62:0] <= 64'h3febfce277d339c6;
104
`INPUT_WIDTH'd30 : data[62:0] <= 64'h3febb67ae8584cab;
105
`INPUT_WIDTH'd31 : data[62:0] <= 64'h3feb6dea1e76eade;
106
`INPUT_WIDTH'd32 : data[62:0] <= 64'h3feb2335c2cda945;
107
`INPUT_WIDTH'd33 : data[62:0] <= 64'h3fead663a8ae2fdc;
108
`INPUT_WIDTH'd34 : data[62:0] <= 64'h3fea8779cda8eea5;
109
`INPUT_WIDTH'd35 : data[62:0] <= 64'h3fea367e59158747;
110
`INPUT_WIDTH'd36 : data[62:0] <= 64'h3fe9e3779b97f4a8;
111
`INPUT_WIDTH'd37 : data[62:0] <= 64'h3fe98e6c0ea27a14;
112
`INPUT_WIDTH'd38 : data[62:0] <= 64'h3fe9376253f463d1;
113
`INPUT_WIDTH'd39 : data[62:0] <= 64'h3fe8de613515a328;
114
`INPUT_WIDTH'd40 : data[62:0] <= 64'h3fe8836fa2cf5039;
115
`INPUT_WIDTH'd41 : data[62:0] <= 64'h3fe82694b4a11c37;
116
`INPUT_WIDTH'd42 : data[62:0] <= 64'h3fe7c7d7a833bec2;
117
`INPUT_WIDTH'd43 : data[62:0] <= 64'h3fe7673fe0c86982;
118
`INPUT_WIDTH'd44 : data[62:0] <= 64'h3fe704d4e6a54d39;
119
`INPUT_WIDTH'd45 : data[62:0] <= 64'h3fe6a09e667f3bcd;
120
`INPUT_WIDTH'd46 : data[62:0] <= 64'h3fe63aa430e07311;
121
`INPUT_WIDTH'd47 : data[62:0] <= 64'h3fe5d2ee398c9c2b;
122
`INPUT_WIDTH'd48 : data[62:0] <= 64'h3fe5698496e20bd8;
123
`INPUT_WIDTH'd49 : data[62:0] <= 64'h3fe4fe6f81384fd5;
124
`INPUT_WIDTH'd50 : data[62:0] <= 64'h3fe491b7523c161d;
125
`INPUT_WIDTH'd51 : data[62:0] <= 64'h3fe4236484487abe;
126
`INPUT_WIDTH'd52 : data[62:0] <= 64'h3fe3b37fb1bdc939;
127
`INPUT_WIDTH'd53 : data[62:0] <= 64'h3fe342119455beb7;
128
`INPUT_WIDTH'd54 : data[62:0] <= 64'h3fe2cf2304755a5e;
129
`INPUT_WIDTH'd55 : data[62:0] <= 64'h3fe25abcf87c4979;
130
`INPUT_WIDTH'd56 : data[62:0] <= 64'h3fe1e4e88411fd12;
131
`INPUT_WIDTH'd57 : data[62:0] <= 64'h3fe16daed770771e;
132
`INPUT_WIDTH'd58 : data[62:0] <= 64'h3fe0f5193eacdd2a;
133
`INPUT_WIDTH'd59 : data[62:0] <= 64'h3fe07b3120fddf15;
134
`INPUT_WIDTH'd60 : data[62:0] <= 64'h3fe0000000000001;
135
`INPUT_WIDTH'd61 : data[62:0] <= 64'h3fdf071eedefa0ee;
136
`INPUT_WIDTH'd62 : data[62:0] <= 64'h3fde0bd27424507a;
137
`INPUT_WIDTH'd63 : data[62:0] <= 64'h3fdd0e2e2b44de01;
138
`INPUT_WIDTH'd64 : data[62:0] <= 64'h3fdc0e45dabe05c9;
139
`INPUT_WIDTH'd65 : data[62:0] <= 64'h3fdb0c2d77379853;
140
`INPUT_WIDTH'd66 : data[62:0] <= 64'h3fda07f921061ad4;
141
`INPUT_WIDTH'd67 : data[62:0] <= 64'h3fd901bd2298ffaa;
142
`INPUT_WIDTH'd68 : data[62:0] <= 64'h3fd7f98deee59684;
143
`INPUT_WIDTH'd69 : data[62:0] <= 64'h3fd6ef801fced33a;
144
`INPUT_WIDTH'd70 : data[62:0] <= 64'h3fd5e3a8748a0bf7;
145
`INPUT_WIDTH'd71 : data[62:0] <= 64'h3fd4d61bd000cddd;
146
`INPUT_WIDTH'd72 : data[62:0] <= 64'h3fd3c6ef372fe950;
147
`INPUT_WIDTH'd73 : data[62:0] <= 64'h3fd2b637cf83d5c8;
148
`INPUT_WIDTH'd74 : data[62:0] <= 64'h3fd1a40add328e29;
149
`INPUT_WIDTH'd75 : data[62:0] <= 64'h3fd0907dc1930690;
150
`INPUT_WIDTH'd76 : data[62:0] <= 64'h3fcef74bf2e4b91b;
151
`INPUT_WIDTH'd77 : data[62:0] <= 64'h3fcccb3236cdc67a;
152
`INPUT_WIDTH'd78 : data[62:0] <= 64'h3fca9cd9ac4258f2;
153
`INPUT_WIDTH'd79 : data[62:0] <= 64'h3fc86c6ddd766253;
154
`INPUT_WIDTH'd80 : data[62:0] <= 64'h3fc63a1a7e0b738c;
155
`INPUT_WIDTH'd81 : data[62:0] <= 64'h3fc4060b67a85377;
156
`INPUT_WIDTH'd82 : data[62:0] <= 64'h3fc1d06c968d9e1a;
157
`INPUT_WIDTH'd83 : data[62:0] <= 64'h3fbf32d44c4f62d4;
158
`INPUT_WIDTH'd84 : data[62:0] <= 64'h3fbac2609b3c576b;
159
`INPUT_WIDTH'd85 : data[62:0] <= 64'h3fb64fd6b8c28110;
160
`INPUT_WIDTH'd86 : data[62:0] <= 64'h3fb1db8f6d6a5123;
161
`INPUT_WIDTH'd87 : data[62:0] <= 64'h3faacbc748efc921;
162
`INPUT_WIDTH'd88 : data[62:0] <= 64'h3fa1de58c9f7dc37;
163
`INPUT_WIDTH'd89 : data[62:0] <= 64'h3f91df0b2b89dd37;
164
`INPUT_WIDTH'd90 : data[62:0] <= 64'h0000000000000000;
165
 
166
default:data <= 64'h0;
167
 
168
endcase
169
 
170
else
171
  data <= 64'hxxxxxxxxxxxxxxx;
172
 
173
 
174
 
175
 
176
end
177
 
178
endmodule

powered by: WebSVN 2.1.0

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