US5937438A - Sine/cosine lookup table - Google Patents
Sine/cosine lookup table Download PDFInfo
- Publication number
- US5937438A US5937438A US08/885,150 US88515097A US5937438A US 5937438 A US5937438 A US 5937438A US 88515097 A US88515097 A US 88515097A US 5937438 A US5937438 A US 5937438A
- Authority
- US
- United States
- Prior art keywords
- angle
- row
- values
- sine
- recited
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/02—Digital function generators
- G06F1/03—Digital function generators working, at least partly, by table look-up
- G06F1/0321—Waveform generators, i.e. devices for generating periodical functions of time, e.g. direct digital synthesizers
- G06F1/0342—Waveform generators, i.e. devices for generating periodical functions of time, e.g. direct digital synthesizers for generating simultaneously two or more related waveforms, e.g. with different phase angles only
Definitions
- sine and cosine values For given angles. These values can be determined either through calculation or by looking the values up in a lookup table in which sine and cosine values have previously been stored. Alternatively, some conventional systems determine sine and cosine values by looking up a first value and then calculating the desired value through series expansion. Each of the conventional methods of determining sine and cosine values have drawbacks in that they require multiple steps or clock cycles to complete, or in that they require too many memory locations. A need, therefore, exists for a sine/cosine lookup table that is compact and can be read in one clock cycle.
- FIG. 2 shows an example of a conventional sine/cosine lookup table.
- table 105 includes a plurality of memory locations, such as, locations 107 and 109.
- the left column 111 including memory location 107, contains a plurality of sine values.
- the right column 113 including location 109, contains a plurality of cosine values.
- Memory locations 107 and 109 comprise a row of lookup table 105.
- the rows of lookup table 105 cover a range from 0 degrees to 180 degrees.
- the address of the row corresponding to the desired angle is determined, and the corresponding sine value is read from column 111, and the corresponding cosine value is read from column 113.
- a disadvantage of the conventional table shown in FIG. 2 is that the lookup table requires the use of a significant number of memory locations.
- a system can employ an alternative to the conventional lookup table shown in FIG. 2 and use roughly half as many memory locations.
- Such a system has a lookup table containing sine values from 0 to 180 degrees, such as that shown in column 111.
- the savings in the number of memory locations can be realized by eliminating a corresponding array of cosine values, such as that contained in column 113.
- the system When a cosine value is desired for a given angle, the system first determines the value of a complementary angle, the sine of which equals the cosine of the given angle. Then, to look up the cosine value for the given angle, the system simply looks up the sine of the complementary angle.
- the system will first read the sine value from the memory location corresponding to the 30 degrees, and the system will then determine that the value for the cosine of 30 degrees should be read from the memory location corresponding to the sine of 60 degrees.
- the system employing the alternative conventional lookup table saves on the number of memory locations at the expense of additional logic and computations.
- a lookup table includes a complementer, a memory array and a switching element.
- the complementer selectively complements a subset of bits of a multibit designation of an angle based on a most significant bit of the multibit designation to produce an address signal.
- the memory is addressed by the address signal and produces two values.
- the switching element receives the two values from the memory and selectively outputs the values based on the most significant bit.
- the lookup table can be incorporated into an integrated circuit device, such as an integrated circuit based modem.
- a method of obtaining sine and cosine values corresponding to an angle includes the steps of breaking a multibit designation corresponding to the angle into a most significant portion and a non-most significant portion, selectively complementing the non-most significant portion based on the most significant portion to produce an address signal, inputting the address signal to a memory, reading first and second values addressed by the address signal from the memory, and selectively outputting the first value and the second value as the sine and cosine of the angle based on the most significant portion.
- FIG. 1 shows a lookup table according to the invention
- FIG. 2 shows a conventional lookup table
- FIG. 1 shows lookup table 301 according to the invention.
- Sine/cosine lookup table 301 includes complementer 303, memory array 305 and switching element 307.
- Bit lines 309 and 311 supply a multibit designation to complementer 303.
- Bit line 311 carries the most significant bit of the multibit designation and bit lines 309 carry the remaining bits of the multibit designation.
- the multibit designation represents an angle for which the sine and/or cosine are desired.
- Complementer 303 outputs either the bit values presented on bit lines 309, or a complement, such as, for example, a bit-by-bit complement, of the bit values presented on bit lines 309, to memory array 305.
- the most significant bit, on bit line 311 is used to indicate to complementer 303 whether to output the value presented on bit lines 309, or to output the complement of the value presented on bit lines 309. For example, if the value on bit line 311 is a logical one, complementer 303 outputs the complement of the value presented on bit lines 309. On the other hand, if the value on bit line 311 is a logical zero, complementer 303 outputs the value presented on bit lines 309.
- Complementer 303 and memory array 305 are shown coupled via bus 313.
- Bus 313 represents one method by which complementer 303 provides its output, in the form of an address signal, to memory array 305.
- the use of a bus is merely by way of example and not of limitation. Any method of communicating between complementer 303 and memory array 305 falls within the scope of the present invention.
- Memory array 305 receives the address signal from complementer 303 and outputs the two values present in the row indicated by the address signal. One of these values will be from column 315, and the other value will be from column 317. The values from column 315 and 317 are output by memory array 305 to switching element 307. Switching element 307 then outputs these values as the sine and cosine values corresponding to the angle represented by the multibit designation comprising the value presented on bit lines 309 and 311.
- Switching element 307 is responsive to the most significant bit, provided on bit line 311, of the multibit designation. For example, if the most significant bit is a logical zero, then the value output from column 315 is provided as the sine of the angle represented by the multibit designation present on bit lines 309 and 311, while the value output from column 317 is provided as the cosine of the angle represented by the multibit designation present on bit lines 309 and 311. Alternatively, if the value of the most significant bit is a logical 1, switching element 307 will output the value from column 317 as the sine of the angle represented by the multibit designation present on bit lines 309 and 311, and the value from column 315 as the cosine of the angle represented by the multibit designation present on bit lines 309 and 311.
- the lookup table 301 provides significant advantages over conventional systems, such as that shown in FIG. 2.
- memory array 305 has roughly half the number of memory locations as the array shown in FIG. 2.
- both the sine and cosine values can be read from lookup table 301 within the same operation.
- lookup table 301 generally requires the same number of clock cycles as are required by the lookup table shown in FIG. 2.
- the memory array shown in FIG. 2 includes values for angles from 0 to 180 degrees.
- lookup table 301 only the range from 0 to 90 degrees need be stored in memory array 305.
- memory array 305 provides the same quantization level as is provided by the conventional lookup table of FIG. 2.
- other conventional systems can also yield a similar reduction in the number of memory locations, but are unable to provide both the sine and cosine in a single operation.
- the values in memory array 305 are arranged in an order, for example, in ascending order from 0 degrees in row 319, to 45 degrees in row 321. Operationally, presume it is desired to perform an operation to look up the sine and cosine of 30 degrees and to then perform an operation to look up the sine and cosine of 60 degrees. Memory cell 323 contains the value of the sine of 30 degrees. Memory cell 325 contains the value of the cosine of 30 degrees. Thus, when looking up the sine and cosine of 30 degrees, the most significant bit, on bit line 311, is a logical zero, and the remaining bits on bit lines 309, corresponding to the value of 30 degrees (typically expressed in radians) yield an address which points to row 327.
- switching element 307 The values contained in memory cells 323 and 325 are then output to switching element 307 from memory array 305. Because the value on bit line 311 is a 0, switching element 307 does not change an order of the values input from memory array 305, and outputs the value from memory cell 323 as the sine value and the value from memory cell 325 as the cosine value.
- the value in memory cell 323 also is the value of the cosine of 60 degrees, while the value in memory cell 325 also is the sine of 60 degrees.
- the value on bit lines 309 and 311 represents 60 degrees, the same values (i.e., the values in memory cells 323 and 325) that were output when looking up the sine and cosine of 30 degrees, will also be output when looking up the sine and cosine of 60 degrees.
- the value on bit line 311 is a logical one for angles greater than or equal to 45 degrees.
- the value on bit line 311 causes complementer 303 to complement the values on bit lines 309 to create the address signal input to memory array 305 on, for example, bus 313.
- the value on bit line 311 causes switching element 307 to output the value in memory cell 325 as the sine value and to output the value in memory cell 323 as the cosine value.
- bit line 311 corresponds to a value of 45 degrees
- the purpose of complementer 303 becomes readily apparent.
- a 1 on bit line 311 corresponds to 45 degrees of the 60 degree value.
- the complement of the value corresponding to 15 degrees is a value corresponding to 30 degrees.
- lookup table 301 can employ memory array 305, which has half as many memory locations as a conventional memory array, and can provide both the sine and cosine values within a single clock cycle.
- bit line 311 when the sine and cosine of 30 degrees are desired, bit line 311 will have the MSB of 0, and bit lines 309 will contain the values 10101010101, which will be output uncomplemented by complementer 303 as the address signal on bus 313.
- bit line 311 When the sine and cosine of 60 degrees are desired, on the other hand, bit line 311 will have the MSB of 1, and bit lines 309 will have the value 010101010, which will be complemented by complementer 303 to produce address signal 10101010101 on bus 313.
- the same address signal is provided on bus 313.
- the address on bus 313 corresponds to row 327 and causes memory array 305 to output the values in memory locations 323 and 325.
- switching element 307 When the MSB on line 311 is a 0 (30 degrees), switching element 307 will output the value in location 323 as the sine and the value in location 325 as the cosine, and when the MSB is a 1 (60 degrees), switching element 307 will output the value in location 323 as the cosine and the value in location 325 as the sine.
- bit lines 309 and 311 carry a 12-bit word. Each row of memory array 305 is uniquely addressed by a corresponding 11-bit portion of the twelve bit word contained on bit lines 309. As is known to one of ordinary skill in the art, by dividing the 45 degree zone into 2 11 (2,048) discrete rows, a certain quantization error is introduced. In another embodiment according to the invention, the quantization error can be reduced by having the values stored in the memory cells of memory array 305 not exactly correspond to the angle represented by the address signal 313 or the angle represented by the value on bit lines 309 and 311.
- the values stored in the memory cells of memory array 305 represent the sine and cosine values for an angle between, and preferably halfway between, two adjacent rows in memory array 305.
- memory cell 412 does not contain the value for the sine of 0 radians. Instead, it contains the value for the sine of 0.5 ⁇ 2,048 ⁇ /4 radians.
- memory cell 414 contains the value for the sine of 1.5 ⁇ 2,048 ⁇ /4 radians. In this way, the quantization error introduced by memory array 305 can be effectively cut in half. Alternatively, for the same quantization error, the number of memory location in memory array 305 can be cut in half.
- a sine/cosine lookup table according to the invention can be incorporated into a system such as a modem.
- the resulting modem will thus require fewer memory locations in its memory array, and will be able to perform sine/cosine lookup operations in one clock cycle.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
- Image Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
Description
Claims (20)
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/885,150 US5937438A (en) | 1997-06-30 | 1997-06-30 | Sine/cosine lookup table |
| JP10184290A JPH11184549A (en) | 1997-06-30 | 1998-06-30 | Sine/cosine look-up table |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/885,150 US5937438A (en) | 1997-06-30 | 1997-06-30 | Sine/cosine lookup table |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US5937438A true US5937438A (en) | 1999-08-10 |
Family
ID=25386262
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US08/885,150 Expired - Lifetime US5937438A (en) | 1997-06-30 | 1997-06-30 | Sine/cosine lookup table |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US5937438A (en) |
| JP (1) | JPH11184549A (en) |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6480871B1 (en) * | 1999-04-07 | 2002-11-12 | Dhananjay S. Phatak | Algorithm (Method) and VLSI architecture for fast evaluation of trigonometric functions |
| US6519619B1 (en) * | 1999-01-26 | 2003-02-11 | Nec Corporation | Circuit for generating periodic function |
| US20050102481A1 (en) * | 2000-07-18 | 2005-05-12 | International Business Machines Corporation | Allocating space on data storage devices in proportion to weights associated with the devices |
| US20070094474A1 (en) * | 2005-10-26 | 2007-04-26 | James Wilson | Lookup table addressing system and method |
| US20090089649A1 (en) * | 2007-09-27 | 2009-04-02 | James Wilson | Programmable compute unit with internal register and bit FIFO for executing Viterbi code |
| US8458445B2 (en) | 2005-10-26 | 2013-06-04 | Analog Devices Inc. | Compute units using local luts to reduce pipeline stalls |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP4142044B2 (en) | 2003-08-04 | 2008-08-27 | 富士通株式会社 | Look-up table and data acquisition method |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3898446A (en) * | 1974-09-06 | 1975-08-05 | Us Army | Quadratic phase memory |
| US4827442A (en) * | 1986-09-11 | 1989-05-02 | Deutsche Itt Industries Gmbh | Digital circuit for simultaneously generating digital sine- and cosine-function values |
-
1997
- 1997-06-30 US US08/885,150 patent/US5937438A/en not_active Expired - Lifetime
-
1998
- 1998-06-30 JP JP10184290A patent/JPH11184549A/en active Pending
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3898446A (en) * | 1974-09-06 | 1975-08-05 | Us Army | Quadratic phase memory |
| US4827442A (en) * | 1986-09-11 | 1989-05-02 | Deutsche Itt Industries Gmbh | Digital circuit for simultaneously generating digital sine- and cosine-function values |
Cited By (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6519619B1 (en) * | 1999-01-26 | 2003-02-11 | Nec Corporation | Circuit for generating periodic function |
| US6480871B1 (en) * | 1999-04-07 | 2002-11-12 | Dhananjay S. Phatak | Algorithm (Method) and VLSI architecture for fast evaluation of trigonometric functions |
| US20050102481A1 (en) * | 2000-07-18 | 2005-05-12 | International Business Machines Corporation | Allocating space on data storage devices in proportion to weights associated with the devices |
| US20080126451A1 (en) * | 2000-07-18 | 2008-05-29 | International Business Machines Corporation | Allocating space on data storage devices in proportion to weights associated with the devices |
| US20070094474A1 (en) * | 2005-10-26 | 2007-04-26 | James Wilson | Lookup table addressing system and method |
| US8285972B2 (en) | 2005-10-26 | 2012-10-09 | Analog Devices, Inc. | Lookup table addressing system and method |
| US8458445B2 (en) | 2005-10-26 | 2013-06-04 | Analog Devices Inc. | Compute units using local luts to reduce pipeline stalls |
| US20090089649A1 (en) * | 2007-09-27 | 2009-04-02 | James Wilson | Programmable compute unit with internal register and bit FIFO for executing Viterbi code |
| US8301990B2 (en) | 2007-09-27 | 2012-10-30 | Analog Devices, Inc. | Programmable compute unit with internal register and bit FIFO for executing Viterbi code |
Also Published As
| Publication number | Publication date |
|---|---|
| JPH11184549A (en) | 1999-07-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4751703A (en) | Method for storing the control code of a processor allowing effective code modification and addressing circuit therefor | |
| US5341486A (en) | Automatically variable memory interleaving system | |
| US4559618A (en) | Content-addressable memory module with associative clear | |
| US4887084A (en) | Priority encoder | |
| US5806082A (en) | Wrap-around mechanism for memory split-wordline read | |
| US4593373A (en) | Method and apparatus for producing n-bit outputs from an m-bit microcomputer | |
| US4857882A (en) | Comparator array logic | |
| US5937438A (en) | Sine/cosine lookup table | |
| US5721809A (en) | Maximum value selector | |
| EP0303009B1 (en) | Signal generator for circular addressing | |
| US4800535A (en) | Interleaved memory addressing system and method using a parity signal | |
| US5109524A (en) | Digital processor with a four part data register for storing data before and after data conversion and data calculations | |
| US4958323A (en) | Semiconductor file memory | |
| US5860076A (en) | 48-bit wide memory architecture addressing scheme reconfigurable for 8-bit, 16-bit and 32-bit data accesses | |
| US5577221A (en) | Method and device for expanding ROM capacity | |
| US4852038A (en) | Logarithmic calculating apparatus | |
| JPH0413735B2 (en) | ||
| US4488260A (en) | Associative access-memory | |
| US4546456A (en) | Read-only memory construction and related method | |
| US5051616A (en) | Zero crossing detector arrangements | |
| US6931508B2 (en) | Device and method for information processing | |
| SU1140167A1 (en) | Versions of storage | |
| US4415890A (en) | Character generator capable of storing character patterns at different addresses | |
| EP1271541A2 (en) | Data storing circuit and data processing apparatus | |
| EP0788112A2 (en) | Memory addressing circuit |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: LUCENT TECHNOLOGIES INC., NEW JERSEY Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:RAGHUNATH, KALAVAI JANARDHAN;RAMBAUD, MARTA M.;REEL/FRAME:009010/0830;SIGNING DATES FROM 19971210 TO 19971212 |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
| FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Free format text: PAYER NUMBER DE-ASSIGNED (ORIGINAL EVENT CODE: RMPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| FPAY | Fee payment |
Year of fee payment: 4 |
|
| REMI | Maintenance fee reminder mailed | ||
| FPAY | Fee payment |
Year of fee payment: 8 |
|
| FPAY | Fee payment |
Year of fee payment: 12 |
|
| AS | Assignment |
Owner name: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AG Free format text: PATENT SECURITY AGREEMENT;ASSIGNORS:LSI CORPORATION;AGERE SYSTEMS LLC;REEL/FRAME:032856/0031 Effective date: 20140506 |
|
| AS | Assignment |
Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:AGERE SYSTEMS LLC;REEL/FRAME:035365/0634 Effective date: 20140804 |
|
| AS | Assignment |
Owner name: AGERE SYSTEMS LLC, PENNSYLVANIA Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031);ASSIGNOR:DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT;REEL/FRAME:037684/0039 Effective date: 20160201 Owner name: LSI CORPORATION, CALIFORNIA Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031);ASSIGNOR:DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT;REEL/FRAME:037684/0039 Effective date: 20160201 |
|
| AS | Assignment |
Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH CAROLINA Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:037808/0001 Effective date: 20160201 Owner name: BANK OF AMERICA, N.A., AS COLLATERAL AGENT, NORTH Free format text: PATENT SECURITY AGREEMENT;ASSIGNOR:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;REEL/FRAME:037808/0001 Effective date: 20160201 |
|
| AS | Assignment |
Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD., SINGAPORE Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;REEL/FRAME:041710/0001 Effective date: 20170119 Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS;ASSIGNOR:BANK OF AMERICA, N.A., AS COLLATERAL AGENT;REEL/FRAME:041710/0001 Effective date: 20170119 |