Method and system for reconfigurable channel coding

Information

  • Patent Grant
  • 8249135
  • Patent Number
    8,249,135
  • Date Filed
    Friday, August 20, 2010
    14 years ago
  • Date Issued
    Tuesday, August 21, 2012
    12 years ago
Abstract
Aspects of a reconfigurable system for providing channel coding in a wireless communication device are described. The aspects include a plurality of computation elements for performing channel coding operations and memory for storing programs to direct each of the plurality of computation elements. A controller controls the plurality of computation elements and stored programs to achieve channel coding operations in accordance with a plurality of wireless communication standards. The plurality of computation elements include a data reordering element, a linear feedback shift register (LFSR) element, a convolutional encoder element, and a Viterbi decoder clement.
Description
FIELD OF THE INVENTION

The present invention relates, in general, to channel coding operations, and more particularly to reconfigurable channel coding operations to accommodate various wireless communication standards.


BACKGROUND OF THE INVENTION

The use of cellular telephones in today's society has become widespread. While facilitating communication in a myriad of environments, the various existing and emerging wireless standards inhibit the ability to utilize a single device across the standards and platforms. The inability to have cross-platform coverage in a single device is due in large part to the inability to provide a hardware solution that can be adapted to varying standards.


For example, in terms of the channel coding operations that are necessary, existing and emerging wireless standards utilize myriad error mitigation techniques to operate in a hostile channel environment. Existing standards utilize two levels of coding plus block interleaving to address both single error and burst error phenomena. Group codes are used for the outer codes, and convolutional codes are used for the inner codes of the various concatenated coding schemes. No two standards employ the same combination. Additionally, certain standards employ encryption to offer a degree of privacy and security.


Utilization of an ASIC (application specific integrated circuit) approach for channel coding would be inefficient in such an environment, since there would need to have individual ASICs for supporting each possible standard. In addition, there would be an ongoing requirement to support modifications from an original design without the ability of having new silicon. A RISC (reduced instruction set computing) option is inefficient for the bit-oriented operations required for channel coding. Similarly, a DSP (digital signal processing) approach is also ill-suited to the bit-oriented requirements of channel coding. Use of a microprogrammed approach provides an arcane nature of programming and maintaining that precludes serious consideration as a solution. While FPGAs (field programmable gate arrays) do provide flexibility, the high costs, both in transistor count and control overhead, outweigh their benefits.


Accordingly, a need exists for a channel coding approach that allows convenient, efficient, and effective support across multiple standards. The present invention addresses such a need.


SUMMARY OF THE INVENTION

Aspects of a reconfigurable system for providing channel coding in a wireless communication device are described. The aspects include a plurality of computation elements for performing channel coding operations and memory for storing programs to direct each of the plurality of computation elements. A controller controls the plurality of computation elements and stored programs to achieve channel coding operations in accordance with a plurality of wireless communication standards. The plurality of computation elements include a data reordering element, a linear feedback shift register (LFSR) element, a convolutional encoder element, and a Viterbi decoder element.


With the present invention, a reconfigurable channel coder is provided that minimizes point designs, i.e., the present invention avoids designs that satisfy a singular requirement of one, and only one, wireless standard, which would render them useless for any other function. Further, bit-oriented operations of channel coding are successfully mapped onto a set of byte-oriented memory and processing elements. In addition, the present invention achieves a channel coder in a manner that provides realizability, reliability, programmability, maintainability, and understand-ability of design, while gaining savings in power and die area. Numerous other advantages and features of the present invention will become readily apparent from the following detailed description of the invention and the embodiments thereof, from the claims and from the accompanying drawings.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a block diagram illustrating an adaptive computing engine.



FIG. 2 is a block diagram illustrating a reconfigurable matrix, a plurality of computation units, and a plurality of computational elements of the adaptive computing engine.



FIG. 3 illustrates a block diagram of a channel coding computation unit in accordance with the present invention.



FIGS. 4-8 each illustrate aspects of computation elements of the channel coding computation unit of FIG. 3 in accordance with the present invention.





DETAILED DESCRIPTION OF THE INVENTION

While the present invention is susceptible of embodiment in many different forms, there are shown in the drawings and will be described herein in detail specific embodiments thereof, with the understanding that the present disclosure is to be considered as an exemplification of the principles of the invention and is not intended to limit the invention to the specific embodiments illustrated.


The present invention provides aspects of a reconfigurable channel coder. In a preferred embodiment, the reconfigurable channel coder is provided as a reconfigurable matrix in accordance with the description in co-pending U.S. patent application, Ser. No. 09/815,122, entitled “Adaptive Integrated Circuitry with Heterogeneous and Reconfigurable Matrices of Diverse and Adaptive Computational Units Having Fixed, Application Specific Computational Elements”, assigned to the assignee of the present invention and incorporated by reference in its entirety herein. Portions of that description are reproduced herein for clarity of presentation of the aspects of the present invention.


Referring to FIG. 1, a block diagram illustrates an adaptive computing engine (“ACE”) 100, which is preferably embodied as an integrated circuit, or as a portion of an integrated circuit having other, additional components. In the preferred embodiment, and as discussed in greater detail below, the ACE 100 includes a controller 120, one or more reconfigurable matrices 150, such as matrices 150A through 150N as illustrated, a matrix interconnection network 110, and preferably also includes a memory 140.


A significant departure from the prior art, the ACE 100 does not utilize traditional (and typically separate) data and instruction busses for signaling and other transmission between and among the reconfigurable matrices 150, the controller 120, and the memory 140, or for other input/output (“I/O”) functionality. Rather, data, control and configuration information are transmitted between and among these elements, utilizing the matrix interconnection network 110, which may be configured and reconfigured, in real-time, to provide any given connection between and among the reconfigurable matrices 150, the controller 120 and the memory 140, as discussed in greater detail below.


The memory 140 may be implemented in any desired or preferred way as known in the art, and may be included within the ACE 100 or incorporated within another IC or portion of an IC. In the preferred embodiment, the memory 140 is included within the ACE 100, and preferably is a low power consumption random access memory (RAM), but also may be any other form of memory, such as flash, DRAM, SRAM, MRAM, ROM, EPROM or EPROM. In the preferred embodiment, the memory 140 preferably includes direct memory access (DMA) engines, not separately illustrated.


The controller 120 is preferably implemented as a reduced instruction set (“RISC”) processor, controller or other device or IC capable of performing the two types of functionality discussed below. The first control functionality, referred to as “kernal” control, is illustrated as kernal controller (“KARC”) 125, and the second control functionality, referred to as “matrix” control, is illustrated as matrix controller (“MARC”) 130.


The various matrices 150 are reconfigurable and heterogeneous, namely, in general, and depending upon the desired configuration: reconfigurable matrix 150A is generally different from reconfigurable matrices 150B through 150N; reconfigurable matrix 150B is generally different from reconfigurable matrices 150A and 150C through 150N; reconfigurable matrix 150C is generally different from reconfigurable matrices 150A, 150B and 150D through 150N, and so on. The various reconfigurable matrices 150 each generally contain a different or varied mix of computation units (200, FIG. 2), which in turn generally contain a different or varied mix of fixed, application specific computational elements (250, FIG. 2), which may be connected, configured and reconfigured in various ways to perform varied functions, through the interconnection networks. In addition to varied internal configurations and reconfigurations, the various matrices 150 may be connected, configured and reconfigured at a higher level, with respect to each of the other matrices 150, through the matrix interconnection network 110.


Referring now to FIG. 2, a block diagram illustrates, in greater detail, a reconfigurable matrix 150 with a plurality of computation units 200 (illustrated as computation units 200A through 200N), and a plurality of computational elements 250 (illustrated as computational elements 250A through 250Z), and provides additional illustration of the preferred types of computational elements 250. As illustrated in FIG. 2, any matrix 150 generally includes a matrix controller 230, a plurality of computation (or computational) units 200, and as logical or conceptual subsets or portions of the matrix interconnect network 110, a data interconnect network 240 and a Boolean interconnect network 210. The Boolean interconnect network 210, as mentioned above, provides the reconfigurable interconnection capability between and among the various computation units 200, while the data interconnect network 240 provides the reconfigurable interconnection capability for data input and output between and among the various computation units 200. It should be noted, however, that while conceptually divided into reconfiguration and data capabilities, any given physical portion of the matrix interconnection network 110, at any given time, may be operating as either the Boolean interconnect network 210, the data interconnect network 240, the lowest level interconnect 220 (between and among the various computational elements 250), or other input, output, or connection functionality.


Continuing to refer to FIG. 2, included within a computation unit 200 are a plurality of computational elements 250, illustrated as computational elements 250A through 250Z (collectively referred to as computational elements 250), and additional interconnect 220. The interconnect 220 provides the reconfigurable interconnection capability and input/output paths between and among the various computational elements 250. As indicated above, each of the various computational elements 250 consist of dedicated, application specific hardware designed to perform a given task or range of tasks, resulting in a plurality of different, fixed computational elements 250. The fixed computational elements 250 may be reconfigurably connected together to execute an algorithm or other function, at any given time, utilizing the interconnect 220, the Boolean network 210, and the matrix interconnection network 110.


In the preferred embodiment, the various computational elements 250 are designed and grouped together, into the various reconfigurable computation units 200. In addition to computational elements 250 which are designed to execute a particular algorithm or function, such as multiplication, other types of computational elements 250 may also be utilized. As illustrated in FIG. 2, computational elements 250A and 250B implement memory, to provide local memory elements for any given calculation or processing function (compared to the more “remote” memory 140). In addition, computational elements 2501, 250J, 250K and 250L are configured (using, for example, a plurality of flip-flops) to implement finite state machines, to provide local processing capability (compared to the more “remote” MARC 130), especially suitable for complicated control processing.


In the preferred embodiment, a matrix controller 230 is also included within any given matrix 150, to provide greater locality of reference and control of any reconfiguration processes and any corresponding data manipulations. For example, once a reconfiguration of computational elements 250 has occurred within any given computation unit 200, the matrix controller 230 may direct that that particular instantiation (or configuration) remain intact for a certain period of time to, for example, continue repetitive data processing for a given application.


With the various types of different computational elements 250 which may be available, depending upon the desired functionality of the ACE 100, the computation units 200 may be loosely categorized. A first category of computation units 200 includes computational elements 250 performing linear operations, such as multiplication, addition, finite impulse response filtering, and so on. A second category of computation units 200 includes computational elements 250 performing non-linear operations, such as discrete cosine transformation, trigonometric calculations, and complex multiplications. A third type of computation unit 200 implements a finite state machine, such as computation unit 200C as illustrated in FIG. 2, particularly useful for complicated control sequences, dynamic scheduling, and input/output management, while a fourth type may implement memory and memory management, such as computation unit 200A. Lastly, a fifth type of computation unit 200 may be included to perform bit-level manipulation.


The operations of channel coding fall within this fifth category type for computation unit 200. An overall diagram of a channel coding computation unit in accordance with the present invention that performs across standards in a flexible and reliable manner is shown in FIG. 3. The channel coding computation unit/channel coder 310 includes a plurality of configurable and/or programmable memory and processing elements and has three principle interfaces: a front end or upstream interface 312, a Vocoder or downstream interface 314, and a host interface 316. The channel coder 310 receives demodulated symbols from the RECEIVE segment of the upstream interface 312 via the shift register 318 and sends modulation symbols to the TRANSMIT segment of the upstream interface 312 via the shift register 320. Upstream shared memory 322 and downstream shared memory 324 provide ping/pong pairs of buffer memories for the data interfaces. Data blocks are transferred at a fixed rate, e.g., one block in each direction every 20 milliseconds.


For example, for the receive path, during one 20 millisecond interval, data from the front-end interface 312 is written into the receive PING buffer memory and data in the receive PONG buffer memory is processed by the channel coder 310. During the next 20 millisecond interval, data from the front-end interface 312 is written into the receive PONG buffer memory and data in the receive PING buffer memory is processed by the channel coder 310, and so on. A pair of control signals synchronizes these operations, where one indicates the beginning of each interval and the other indicates the ping/pong state. These operations are performed similarly with a second pair of buffer memories used in the transmit path.


The channel coder 310 sends speech blocks to a vocoder decoder (not shown) and receives speech blocks from a vocoder encoder (not shown) via the downstream interface 314. Again, ping/pong buffers are utilized for the transmit and receive operations via the downstream interface 314 with memory 324. Thus, for example, during one 20 millisecond interval, data from the channel coder 310 is written into a PING buffer memory and data in the PONG buffer memory is processed by the vocoder decoder. During the next 20-millisecond interval, data from the channel coder 310 is written into the PONG buffer memory and data in the PING buffer memory is processed by the vocoder decoder, and so on. Three control signals synchronizes these operations, where one indicates the beginning of each interval, a second indicates the ping/pong state, and a third indicates valid/corrupted data for the receive path only. These operations are performed similarly with a second pair of buffer memories used for the data interface between the channel coder and vocoder encoder. Continuing to refer to FIG. 3, there are several interfaces between the host controller 120 and channel coder 310 that provide the host interface 316. One supports the configuration of the channel coder 310 and another is used for control and status. The third, denoted as downstream/host shared memory 324, provides bi-directional message transfer between the channel coder's 310 physical layer and the higher protocol layers executing on the host controller 120.


For many of the channel coding operations of channel coder 310, reordering and/or randomly accessing the bits that comprise a data block are required. For example, for the GSM standard, 260 bit blocks of data are generated by the speech encoder every 20 milliseconds. These bits are manipulated three different ways before they are transmitted, as is well understood in the art. First, the most perceptually significant 50 bits from each 260-bit block must be accessed in a nearly random fashion and input to a CRC generator. Next, 182 bits from the 260 bit block, the 3 CRC bits, and four tail bits are reordered for input to a R=½ convolutional encoder. Finally, the remaining least perceptually significant 78 bits from the 260 bit block and the 378 bits from the R=½ convolutional encoder are reordered into eight 57-bit blocks, employing an interleaving algorithm for burst error mitigation.


Each of the other standards also requires data reordering operations, but the implementation details vary widely. Two general classes of reordering are required. One class can be described algorithmically, while a second class basically requires random access capability. An interleaver is an example of the former, and bit picking from the encoded speed blocks is an example of the latter. In order to achieve both classes of reordering while avoiding point solutions, the channel coder 310 of the present invention employs a look-up table approach, as described with reference to FIG. 4.



FIG. 4 illustrates an example of a reordering element 330 as a computation element of the channel coder 310 in accordance with the present invention. The byte-wide organization supports arbitrary reordering of 256-bit data blocks. In operation, an up counter 332 is incremented from 0 to N−1, where N represents the length of the data vector. For this example, Nmax is 256. For each count, the look-up table memory 334 outputs an encoded byte that contains the location of the desired bit in the 32-byte source data memory 336. Five bits specify the byte memory address and three bits indicate the desired 1-of-8 data bits from multiplexer 338. The desired bit is stored in the stager 340, e.g., an 8-bit serial-in, parallel-out shift register. The staged bytes are written sequentially into the 32-byte sink data memory 342.


Of course, the reordering element 330 also supports random access operations. For example, the GSM standard requires the random access of 50 bits of encoded speech deemed most perceptually significant for the purpose of generating CRC protection. For random access operations, however, data is not moved from a source memory 336 to a sink memory 342. Thus, only the top four blocks 332, 334, 336, and 338 are required.


While the reordering element 330 has been described in terms of 256-bit data block size, in order to handle data blocks larger than 256 bits, the look-up table width has to be greater than eight bits. An extension of the look-up table memory width would accommodate a greater width. Alternatively, two bytes could be processed per bit.


In addition to reordering data, channel coding schemes normally include error detecting cyclic codes, error detecting and correcting Hamming codes, single burst error correcting Fire codes, and so on. Typically, these codes are represented by their generator polynomials. The degree of polynomials used for the various wireless standards spans a wide range, from degree 3 for a GSM CRC, to degree 42 for the CDMA long code, to effective degrees of 64 and 128 for the GSM and Bluetooth ciphers, respectively. While separate encoders and decoders can be implemented for each of these standards utilizing linear feedback shift registers (LFSRs), the channel coder 310 implements a programmable special purpose computational element to perform the operations of a LFSR that accommodates the various standards as needed. Normally, LSFRs are bit-oriented structures which combine shift register stages and mod-2 adders. The present invention provides a programmable, byte-oriented structure, as represented in the block diagram of FIG. 5.


By way of example, the generator polynomial used for GSM (224, 184) Fire code is g(x)x40±x26+x23±x17±x3±1. A block of 184 bits is protected by 40 extra parity bits used for error detection and correction. These bits are appended to the 184 bits to form a 224 bit sequence. In order to map bit-oriented encoder operations onto the byte-oriented LFSR element of the present invention, the processing of eight information bits at one time and the computing the LFSR state after eight consecutive shifts are required.


Referring now to FIG. 5, a byte-oriented memory (not shown) contains the information bytes, with five bytes representing the forty bit LFSR data. For the structure shown in FIG. 5, the feedback byte is computed and stored in a register (REG) 350, while the computation occurs through the use of a shifter 352, multiplexer 354, exclusive-OR gate (XOR) 356, and accumulator (ACC) 358 in accordance with the following pseudo code. In the notation used, REG_R(k) represents a logical right shift of the feedback byte by k positions for k=1 to 7, while REG_L(k) represents a logical left shift of the feedback byte by k positions for k=1 to 7. The information byte is represented as d[0:7], and the five LSFR bytes are represented with LSFR[39:32], LFSR[31:24], LFSR[23:16], LFSR[15:8], and LFSR[7:0]. The sixteen possible outputs from the shifter element 352 are represented in FIG. 6. The LSFR values are set to zero for the first iteration.

  • 1. Compute the feedback byte
  • (e.g.,
  • REG 4—d[0:7]
  • REG<—REG ⊕LFSR[39:32])
  • 2. Update the five LFSR bytes
  • (e.g.,
  • ACC LFSR[31:24]
  • LFSR[39:32] ACC⊕REG_R(6)
  • ACC<—LFSR[23:16]⊕REG_R(7)
  • ACC<—ACC ⊕REG R(1)
  • LFSR[31:24] 4-ACC⊕REG_L(2)
  • ACC←LFSR[15:8]⊕REG_L(1)
  • LFSR[23:16] 4-ACC® REG_L(7)
  • ACC<—LFSR[7:0]® REG_R(5)
  • LFSR[15:8] 4—ACC
  • ACC<—REG
  • LFSR[7:0] ACC⊕REG_L(3)
  • 3. Repeat routine as needed
  • (e.g.,
  • The routine is repeated 23 times to process the 184 information bits (23 information bytes).


In addition to LSFR operations, the channel coder 310 also performs the processing necessary for the various wireless standards that employ convolutional codes for the inner codes of their concatenated coding schemes. Typically, a convolutional encoder will be represented by its constraint length (k), rate (R=m/n, denoting the encoding of ‘m’ message symbols into ‘n’ coded symbols, and generator polynomials that describe the connections between a k-stage shift register and modulo-2 adders, as is well understood in the art.


In accordance with the present invention, a byte-oriented, special purpose computational element interfaced to a byte-wide memory and a simple load/store-type programming model performs the encoding function for all of the convolutional codes identified below in the channel coder 310. FIG. 7 illustrates the convolutional encoder element in accordance with the present invention that can perform encoding functions for convolutional codes, including:

  • the GSM standard rate ½, constraint length
  • GO=1+D3+D4
  • G1=1+D+D3+D4;
  • the IS-136 TDMA rate ½, constraint length 6
  • GO=1+D+D3+D5
  • G1=1+D2+D3+D4+D5;
  • the IS-136 TDMA rate ¼, constraint length 6
  • GO=1+D+D3+D4+D5
  • G1=1+D+D2+D5
  • G2=1+D+D2+D3+D5
  • G3=1+D2+D4+D5;
  • the IS-95 CDMA rate ⅓ constraint length 9
  • GO=1+D2+D3+D5+D6+D7+D8
  • G1=1+D+D3+D4+D7+D8
  • G2=1+D+D2+D5+D8; and
  • the IS-95 CDMA rate ½, constraint length 9
  • GO=1+D+D2+D3+D5+D7+D8
  • G1=1+D2+D3+D4+D8.


As shown in FIG. 7, the convolutional element supports these convolutional codes through polynomial generators 370, each of which includes a configuration register 372 that receives configuration data from the host controller 120, provides that data to an AND component 374 for logical combination with delay data from a delay register 376, the result of which gets logically combined with the delay data via an XOR component 378. Selection of an appropriate output from the polynomial generators 370 is performed via a multiplexer 380 controlled by a rate selector 382. The output of the multiplexer 380 then gets shifted via a shift register 384 and sent to memory. With the convolutional encoder shown in FIG. 7, the channel coder 310 of the present invention supports all rate ½, ⅓, and ¼ convolutional codes, any constraint length up to k=9, and arbitrary puncturing.


These convolutional codes are decoded usually with a simple iterative process known as the Viterbi algorithm, where a Viterbi decoder determines the encoder state using a maximum likelihood technique. To determine the encoder state, the Viterbi algorithm normally generates a set of 2(k−1) state metrics that measure the occurrence probability for each of the 2(k−1) possible encoder states. As the state metrics are computed, a decision is formed for each of the 2(k−1) possible states to determine the probable path taken to arrive at that particular state. These decisions are stored in a path memory that is traced backward to generate the decoded output.


A Trellis structure is a common method for representing a convolutional encoder's state transitions over time. The convention is that an input ‘0’ corresponds to the selection of the upper branch, and an input ‘1’ corresponds to the selection of the lower branch. Each possible input sequence corresponds to a particular path through the trellis.


The Viterbi algorithm compares the two paths entering each node and retains only the path with the better metric. The other path is discarded, since its likelihood never can exceed that of the retained path no matter what data are subsequently received. The retained paths are called survivors.


Commonly, the computational element of a Viterbi decoder is called an Add-Compare-Select (ACS) unit, since it consists of adders, comparators, and selectors. It is used to update a set of path metrics for the surviving hypotheses by adding appropriate branch metrics to the path metrics of the precursor hypotheses.


A block diagram of a Viterbi decoder computation element of channel coder 310 in accordance with the present invention is illustrated in FIG. 8. As illustrated, the Viterbi decoder element includes a counter 400, codeword and punctures look-up table (LUT) 402, register 404, recode logic 406, an address generator 408, path metrics memory 410, state registers 412 and 414, plus/minus adjusters 416, adders 418, selector 420, and comparator 422. In operation, these components of the Viterbi decoder computation element compute pairs of survivor path metrics by adding appropriate branch metrics to pairs of precursor path metrics. The sums are compared, and the better (lower) results are selected. The element performs the memory-to-memory, in-place algorithm. Survivor path bits are aggregated into bytes, stored in byte memory, and subsequently backward path-traced to generate the decoder output.


For the branch metrics, the Hamming distance between the received word and the code words, i.e., the sums of the bit-wise mismatches between the received words and the code words, are used. For rate ½, ⅓, and ¼ codes, received words and code words will consist of two, three, and four bits, respectively. For punctured codes, stored tables are used to indicate the punctured bits that are disregarded in the branch metric computation.


The range of the branch metrics (mb) is 0 to 4. For a maximum code constraint length of k=9, the maximum metric range need not exceed mb·(k−1)=4×8=32. Using eight bit two's complement arithmetic, the branch metrics range can be increased, if necessary, as is well appreciated by those skilled in the art.


With the Viterbi decoder shown in FIG. 8 along with the other computational elements described with reference to FIGS. 4-7, the channel coder of FIG. 3 is realized in a manner that achieves the ability to be reconfigured and adapted, as needed, to various wireless standards and their different approaches to channel coding operations. From the foregoing, it will be observed that numerous variations and modifications may be effected without departing from the spirit and scope of the novel concept of the invention. It is to be understood that no limitation with respect to the specific methods and apparatus illustrated herein is intended or should be inferred. It is, of course, intended to cover by the appended claims all such modifications as fall within the scope of the claims.

Claims
  • 1. A reconfigurable system for providing channel coding in a wireless communication device comprising: a plurality of computation elements for performing channel coding operations, wherein the plurality of computation elements comprises at least three computational elements selected from the group consisting of a data reordering element, a linear feedback shift register (LFSR) element, a convolutional encoder element and a convolutional decoder element; anda controller for reconfigurably controlling the plurality of computation elements to achieve channel coding operations in accordance with a plurality of wireless communication standards.
  • 2. The reconfigurable system of claim 1 further comprising memory for storing programs, and wherein the stored programs are for reconfiguring the plurality of computational elements for the channel coding operations.
  • 3. The reconfigurable system of claim 1 wherein each of the plurality of computation elements comprises memory for storing programs, and wherein the stored programs are for executing commands for the channel coding operations.
  • 4. The reconfigurable system of claim 1 wherein the plurality of computation elements comprises a plurality of polynomial generators that further comprise a configuration register, an AND logic means, and an exclusive-OR logic means.
  • 5. The reconfigurable system of claim 1 wherein the Viterbi decoder element further comprises a coupled configuration of a counter, a codeword and punctures lookup table, a register, recode logic, an address generator, path metrics memory, state registers, plus/minus adjusters, adders, a selector, and a comparator.
  • 6. The reconfigurable system of claim 1, wherein the plurality of wireless communications standards comprises at least two wireless communications standards selected from the group consisting of TDMA and CDMA.
  • 7. The reconfigurable system of claim 1, wherein the plurality of computational elements are interconnected.
  • 8. The reconfigurable system of claim 7, wherein the interconnection of the plurality of computational elements allows at least one of the plurality of computational elements to be used arbitrarily at different points within at least one of a transmit path and a receive path.
  • 9. The reconfigurable system of claim 7, wherein each of the plurality of computational elements performs a function, and wherein the plurality of computational elements are one of a plurality of types, and wherein multiple instances of computational elements that are the same type are used for different functions within at least one of a transmit path and a receive path.
  • 10. The reconfigurable system of claim 7, wherein the interconnection allows the plurality of computational elements to be used as a subset of a larger function.
  • 11. The reconfigurable system of claim 7, wherein at least one of the plurality of computational elements performs tasks to achieve the channel coding operations in accordance with the plurality of wireless communication standards at the same time.
  • 12. The reconfigurable system of claim 1, wherein each of the plurality of computational elements is independently configured to provide channel coding operations.
  • 13. The reconfigurable system of claim 12, wherein the at least one of the plurality of computational elements is controlled by at least one of data provided, an internally loaded configuration, and internally loaded instructions.
  • 14. The reconfigurable system of claim 1, wherein each of the plurality of computational elements is independently programmed to provide channel coding operations.
  • 15. The reconfigurable system of claim 1, wherein the at least one of the plurality of computational elements is controlled such that at least two of the following functions are controlled: an initial function state;an initial function to be performed;one or more functions to be performed;a length of block to be worked on or continuous operation;end conditions to detect the end of a block; andone or more end functions to be performed at the end of a block.
  • 16. The reconfigurable system of claim 15, wherein the at least one computational element performs one selected from the group consisting of: two or more functions within a single transmitter chain or receiver chain;one or more functions within a single transmitter chain and one or more functions within a single receiver chain;two or more functions within a multi-standard transmitter wherein both standards are in simultaneous operation;two or more functions within a multi-standard transmitter wherein both standards are in rapid succession operation; andchannel coding operations on two or more channels of at least one of transmission data and reception data.
  • 17. The reconfigurable system of claim 1, wherein the plurality of computational elements performs a function, and wherein the function is altered by incrementally changing only a portion of the configuration or instructions.
  • 18. The reconfigurable system of claim 1 wherein the a data reorder element comprises: means for accepting and storing an incoming data stream in a word oriented format;means for selecting from the stored data stream in an order different from the order of storage;means for determining the selection order of extraction by use of a look-up table in which the order of selection is arbitrarily programmed;means for outputting a data stream in a word oriented format; andmeans for releasing and reusing those portions of the stored input memory once the values are consumed by the output process.
  • 19. The reconfigurable system of claim 1, wherein the data reordering element comprises: means for accepting and storing an incoming data stream in a word oriented format;means for storing an incoming data stream in an order different than it is received;means for determining a selection order of storage using at a look-up table in which the order of selection is arbitrarily programmed;means for outputting the stored data in a word oriented format; andmeans for releasing and reusing those potions of the stored input memory once the values are consumed by the output process.
  • 20. The reconfigurable system of claim 1, wherein the LSFR element comprises: means for generating a variety of polynomials based on the contents of a register using an array of selectors and exclusive-or gates;means for optionally accepting an incoming data stream in a word oriented format;means for updating the register based on at least one of: the one or more polynomials generated and the register contents; andthe one or more polynomials generated, the register contents and the optional data stream;means for outputting data in a word oriented format based upon at least one of: the one or more polynomials generated;the one or more polynomials generated output exclusive-or'd with the optional input stream; andthe contents of the register; andmeans for initializing the contents of the register to a programmable value.
  • 21. A method for providing channel coding in a wireless communication device comprising: selecting one of a plurality of wireless communication standards; andreconfigurably controlling a plurality of computation elements to achieve channel coding operations in accordance with the selected wireless communication standard, wherein the plurality of computation elements comprises at least three computational elements selected from the group consisting of a data reordering element, a linear feedback shift register (LFSR) element, a convolutional encoder element and a convolutional decoder element.
  • 22. The method of claim 21, further comprising selecting a mode of the selected one of the plurality of wireless communication standards.
  • 23. The method of claim 21, wherein selecting one of the plurality of wireless communication standards comprises: receiving a signal associated with one of the plurality of wireless communication standards; andidentifying the one of the plurality of wireless communication standards based on the coding of the signal.
  • 24. The method of claim 21, further comprising mapping the bit-oriented operations to the byte-oriented memory and plurality of computation elements.
  • 25. The method of claim 21, wherein the plurality of wireless communications standards comprises at least two wireless communications standards selected from the group consisting of TDMA and CDMA.
  • 26. The method of claim 21, wherein the plurality of computational elements are interconnected.
  • 27. The method of claim 26, wherein the plurality of computational elements are used arbitrarily at different points within at least one of a transmit path and a receive path.
  • 28. The method of claim 26, wherein the number of elements and method of interconnection between the plurality of computational elements allows multiple instances of the same element type to be used for different functions within at least one of a transmit path and a receive path.
  • 29. The method of claim 26, wherein the plurality of computational elements are used as a subset of a larger function.
  • 30. The method of claim 26, further comprising controlling at least one of the plurality of computational elements by at least one of data provided, internally loaded configuration, internally loaded instructions.
  • 31. The method of claim 26, wherein at least one of the plurality of computational elements performs tasks to achieve the channel coding operations in accordance with the plurality of wireless communication standards at the same time.
  • 32. The method of claim 31, wherein at least one of the computational elements performs one selected from the group consisting of: two or more functions within a single transmitter or receiver chain;one or more functions within a single transmitter and one or more functions within a single receiver chain;two or more functions within a multi-standard transmitter wherein both standards are in simultaneous operation;two or more functions within a multi-standard transmitter wherein both standards are in rapid succession operation; andchannel coding operations on two or more channels of at least one of transmission data and reception data.
  • 33. The method of claim 21, further comprising independently configuring at least one of the plurality of computational elements to provide channel coding operations.
  • 34. The method of claim 21, further comprising independently programming at least one of the plurality of computational elements to provide channel coding operations.
  • 35. The method of claim 21, further comprising controlling at least one of the plurality of computational elements such that at least two of the following functions are controlled: an initial function state;an initial function to be performed;one or more functions to be performed;a length of block to be worked on or continuous operation;end conditions to detect the end of a block; andone or more end functions to be performed at the end of a block.
  • 36. The method of claim 21, further comprising incrementally changing only that portion of the configuration or instructions that needs to be changed to alter a function performed by at least one of the plurality of computational elements.
  • 37. A reconfigurable system for providing channel coding in a wireless communication device comprising: a plurality of computation elements for performing channel coding operations, wherein the plurality of computation elements comprises at least three computational elements selected from the group consisting of a data reordering element, a linear feedback shift register (LFSR) element, a convolutional encoder element and a convolutional decoder element; anda controller for reconfigurably controlling the plurality of computation elements to achieve channel coding operations in accordance with a plurality of wireless communication modes within a wireless communication standard.
  • 38. The reconfigurable system of claim 37 further comprising memory for storing programs, and wherein the stored programs are for reconfiguring the plurality of computational elements for the channel coding operations.
  • 39. The reconfigurable system of claim 37 wherein each of the plurality of computation elements comprises memory for storing programs, and wherein the stored programs are for executing commands for the channel coding operations.
  • 40. The reconfigurable system of claim 37 wherein the plurality of computation elements comprises a plurality of polynomial generators.
  • 41. The reconfigurable system of claim 37 wherein the Viterbi decoder element further comprises a coupled configuration of a counter, a codeword and punctures look-up table, a register, recode logic, an address generator, path metrics memory, state registers, plus/minus adjusters, adders, a selector, and a comparator.
  • 42. The reconfigurable system of claim 37, wherein the wireless communications standard is selected from the group consisting of TDMA and CDMA.
  • 43. The reconfigurable system of claim 37, wherein the plurality of computational elements are interconnected.
  • 44. The reconfigurable system of claim 43, wherein the plurality of computational elements are used arbitrarily at different points within at least one of a transmit path and a receive path.
  • 45. The reconfigurable system of claim 43, wherein the plurality of computational elements each perform a function, and wherein the plurality of computational elements each is one of a plurality of types, and wherein multiple instances of a computational element type is used for different functions within at least one of a transmit path and a receive path.
  • 46. The reconfigurable system of claim 43, wherein the plurality of computational elements are used as a subset of a larger function.
  • 47. The reconfigurable system of claim 44, wherein the at least one of the plurality of computational elements is controlled by at least one of data provided, an internally loaded configuration, and internally loaded instructions.
  • 48. The reconfigurable system of claim 44, wherein at least one of the plurality of computational elements performs tasks to achieve the channel coding operations in accordance with the plurality of wireless communication standards at the same time.
  • 49. The reconfigurable system of claim 37, wherein each of the plurality of computational elements is independently configured to provide channel coding operations.
  • 50. The reconfigurable system of claim 37, wherein each of the plurality of computational elements is independently programmed to provide channel coding operations.
  • 51. The reconfigurable system of claim 37, wherein the at least one of the plurality of computational elements is controlled such that at least two of the following functions are controlled: an initial function state;an initial function to be performed;one or more functions to be performed;a length of block to be worked on or continuous operation;end conditions to detect the end of a block; andone or more end functions to be performed at the end of a block.
  • 52. The reconfigurable system of claim 48, wherein the at least one of the plurality of computational elements performs one selected from the group consisting of: two or more functions within a single transmitter or receiver chain;one or more functions within a single transmitter and one or more functions within a single receiver chain;two or more functions within a multi-mode transmitter wherein both modes are in simultaneous operation;two or more functions within a multi-mode transmitter wherein both modes are in rapid succession operation; andchannel coding operations on two or more channels of at least one of transmission and reception data.
  • 53. The reconfigurable system of claim 37, wherein the plurality of computational elements each perform a function, and wherein the function is altered by incrementally changing only a portion of the configuration or instructions that needs to be changed.
  • 54. The reconfigurable system of claim 37, wherein the a data reorder element comprises: means for accepting and storing an incoming data stream in a word oriented format;means for selecting from the stored data stream in an order different from the order of storage;means for determining the selection order of extraction by use of a look-up table in which the order of selection is arbitrarily programmed;means for outputting a data stream in a word oriented format; andmeans for releasing and reusing those portions of the stored input memory once the values are consumed by the output process.
  • 55. The reconfigurable system of claim 37, wherein the data reordering element comprises: means for accepting and storing an incoming data stream in a word oriented format;means for storing an incoming data stream in an order different than it is received;means for determining a selection order of storage using a look-up table in which the order of selection is arbitrarily programmed;means for outputting the stored data in a word oriented format; andmeans for releasing and reusing those potions of the stored input memory once the values are consumed by the output process.
  • 56. The reconfigurable system of claim 37, wherein the LSFR element comprises: means for generating a variety of polynomials based on the contents of a register;means for optionally accepting an incoming data stream in word oriented format;means for updating the register based on at least one of: the one or more polynomials generated and the register contents; andthe one or more polynomials generated, the register contents and the optional data stream;means for outputting data in a word oriented format based upon at least one of: the one or more polynomials generated;the one or more polynomials generated output exclusive-or'd with the optional input stream; andthe contents of the register; andmeans for initializing the contents of the register to a programmable value.
  • 57. A method for providing channel coding in a wireless communication device comprising: selecting one of a plurality of wireless communication modes within a wireless communication standards; andreconfigurably controlling a plurality of computation elements for performing channel coding operations to achieve channel coding operations in accordance with the selected wireless communication mode, wherein the plurality of computation elements comprises at least three computational elements selected from the group consisting of a data reordering element, a linear feedback shift register (LFSR) element, a convolutional encoder element and a convolutional decoder element.
  • 58. The method of claim 57, further comprising selecting a mode of the selected one of the plurality of wireless communication standards.
  • 59. The method of claim 57, wherein selecting one of the plurality of wireless communication standards comprises: receiving a signal associated with one of the plurality of wireless communication standards; andidentifying the one of the plurality of wireless communication standards based on the coding of the signal.
  • 60. The method of claim 57, wherein the wireless communications standard is selected from the group consisting of TDMA and CDMA.
  • 61. The method of claim 57, wherein the plurality of computational elements are interconnected.
  • 62. The method of claim 61, wherein the plurality of computational elements are used arbitrarily at different points within at least one of a transmit path and a receive path.
  • 63. The method of claim 61, wherein the plurality of computational elements each perform a function, and wherein the plurality of computational elements are one of a plurality of types, and wherein multiple instances of the same type are used for different functions within at least one of a transmit path and a receive path.
  • 64. The method of claim 61, wherein the plurality of computational elements are used as a subset of a larger function.
  • 65. The method of claim 61, further comprising controlling at least one of the plurality of computational elements by at least one of data provided, an internally loaded configuration, and internally loaded instructions.
  • 66. The method of claim 61, wherein at least one of the computational elements is timeshared by two of the plurality of wireless communication modes.
  • 67. The method of claim 61, wherein at least one of the computational elements performs one selected from the group consisting of: two or more functions within a single transmitter or receiver chain;one or more functions within a single transmitter and one or more functions within a single receiver chain;two or more functions within a multi-mode transmitter wherein both modes are in simultaneous operation;two or more functions within a multi-mode transmitter wherein both modes are in rapid succession operation; andchannel coding operations on two or more channels of at least one of transmission data and reception data.
  • 68. The method of claim 57, further comprising independently configuring at least one of the plurality of computational elements to provide channel coding operations.
  • 69. The method of claim 57, further comprising independently programming at least one of the plurality of computational elements to provide channel coding operations.
  • 70. The method of claim 57, further comprising controlling at least one of the plurality of computational elements such that at least two of the following functions are controlled: an initial function state;an initial function to be performed;one or more functions to be performed;a length of block to be worked on or continuous operation;end conditions to detect the end of a block; andone or more end functions to be performed at the end of a block.
  • 71. The method of claim 57, further comprising incrementally changing only a portion of the configuration or instructions that needs to be changed to alter a function performed by at least one of the plurality of computational elements.
CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No. 12/578,566, filed on Oct. 13, 2009, now U.S. Pat. No. 7,809,050, which is a continuation of U.S. patent application Ser. No. 10/402,691, filed on Mar. 28, 2003, now U.S. Pat. No. 7,822,109, which is a continuation of U.S. patent application Ser. No. 09/851,543, filed on May 8, 2001, now U.S. Pat. No. 6,577,678.

US Referenced Citations (555)
Number Name Date Kind
3409175 Byrne Nov 1968 A
3665171 Morrow May 1972 A
3666143 Weston May 1972 A
3938639 Birrell Feb 1976 A
3949903 Benasutti et al. Apr 1976 A
3960298 Birrell Jun 1976 A
3967062 Dobias Jun 1976 A
3991911 Shannon et al. Nov 1976 A
3995441 McMillin Dec 1976 A
4076145 Zygiel Feb 1978 A
4143793 McMillin et al. Mar 1979 A
4172669 Edelbach Oct 1979 A
4174872 Fessler Nov 1979 A
4181242 Zygiel et al. Jan 1980 A
RE30301 Zygiel Jun 1980 E
4218014 Tracy Aug 1980 A
4222972 Caldwell Sep 1980 A
4237536 Enelow et al. Dec 1980 A
4252253 Shannon Feb 1981 A
4302775 Widergren et al. Nov 1981 A
4333587 Fessler et al. Jun 1982 A
4354613 Desai et al. Oct 1982 A
4377246 McMillin et al. Mar 1983 A
4380046 Fung Apr 1983 A
4393468 New Jul 1983 A
4413752 McMillin et al. Nov 1983 A
4458584 Annese et al. Jul 1984 A
4466342 Basile et al. Aug 1984 A
4475448 Shoaf et al. Oct 1984 A
4509690 Austin et al. Apr 1985 A
4520950 Jeans Jun 1985 A
4549675 Austin Oct 1985 A
4553573 McGarrah Nov 1985 A
4560089 McMillin et al. Dec 1985 A
4577782 Fessler Mar 1986 A
4578799 Scholl et al. Mar 1986 A
RE32179 Sedam et al. Jun 1986 E
4633386 Terepin et al. Dec 1986 A
4649512 Nukiyama Mar 1987 A
4658988 Hassell Apr 1987 A
4694416 Wheeler et al. Sep 1987 A
4711374 Gaunt et al. Dec 1987 A
4713755 Worley, Jr. et al. Dec 1987 A
4719056 Scott Jan 1988 A
4726494 Scott Feb 1988 A
4747516 Baker May 1988 A
4748585 Chiarulli et al. May 1988 A
4758985 Carter Jul 1988 A
4760525 Webb Jul 1988 A
4760544 Lamb Jul 1988 A
4765513 McMillin et al. Aug 1988 A
4766548 Cedrone et al. Aug 1988 A
4781309 Vogel Nov 1988 A
4800492 Johnson et al. Jan 1989 A
4811214 Nosenchuck et al. Mar 1989 A
4824075 Holzboog Apr 1989 A
4827426 Patton et al. May 1989 A
4850269 Hancock et al. Jul 1989 A
4856684 Gerstung Aug 1989 A
4870302 Freeman Sep 1989 A
4901887 Burton Feb 1990 A
4905231 Leung et al. Feb 1990 A
4921315 Metcalfe et al. May 1990 A
4930666 Rudick Jun 1990 A
4932564 Austin et al. Jun 1990 A
4936488 Austin Jun 1990 A
4937019 Scott Jun 1990 A
4960261 Scott et al. Oct 1990 A
4961533 Teller et al. Oct 1990 A
4967340 Dawes Oct 1990 A
4974643 Bennett et al. Dec 1990 A
4982876 Scott Jan 1991 A
4993604 Gaunt et al. Feb 1991 A
5007560 Sassak Apr 1991 A
5021947 Campbell et al. Jun 1991 A
5040106 Maag Aug 1991 A
5044171 Farkas Sep 1991 A
5090015 Dabbish et al. Feb 1992 A
5099418 Pian et al. Mar 1992 A
5129549 Austin Jul 1992 A
5139708 Scott Aug 1992 A
5144166 Camarota et al. Sep 1992 A
5156301 Hassell et al. Oct 1992 A
5156871 Goulet et al. Oct 1992 A
5165023 Gifford Nov 1992 A
5165575 Scott Nov 1992 A
5177700 Göckler Jan 1993 A
5190083 Gupta et al. Mar 1993 A
5190189 Zimmer et al. Mar 1993 A
5193151 Jain Mar 1993 A
5193718 Hassell et al. Mar 1993 A
5202993 Tarsy et al. Apr 1993 A
5203474 Haynes Apr 1993 A
5218240 Camarota et al. Jun 1993 A
5240144 Feldman Aug 1993 A
5245227 Furtek et al. Sep 1993 A
5261099 Bigo et al. Nov 1993 A
5263509 Cherry et al. Nov 1993 A
5269442 Vogel Dec 1993 A
5280711 Motta et al. Jan 1994 A
5297400 Benton et al. Mar 1994 A
5301100 Wagner Apr 1994 A
5303846 Shannon Apr 1994 A
5335276 Thompson et al. Aug 1994 A
5336950 Popli et al. Aug 1994 A
5339428 Burmeister et al. Aug 1994 A
5343716 Swanson et al. Sep 1994 A
5361362 Benkeser et al. Nov 1994 A
5367651 Smith et al. Nov 1994 A
5367687 Tarsy et al. Nov 1994 A
5368198 Goulet Nov 1994 A
5379343 Grube et al. Jan 1995 A
5381546 Servi et al. Jan 1995 A
5381550 Jourdenais et al. Jan 1995 A
5388062 Knutson Feb 1995 A
5388212 Grube et al. Feb 1995 A
5392960 Kendt et al. Feb 1995 A
5428754 Baldwin Jun 1995 A
5437395 Bull et al. Aug 1995 A
5442306 Woo Aug 1995 A
5446745 Gibbs Aug 1995 A
5450557 Kopp et al. Sep 1995 A
5454406 Rejret et al. Oct 1995 A
5465368 Davidson et al. Nov 1995 A
5475856 Kogge Dec 1995 A
5479055 Eccles Dec 1995 A
5490165 Blakeney, II et al. Feb 1996 A
5491823 Ruttenberg Feb 1996 A
5504891 Motoyama et al. Apr 1996 A
5507009 Grube et al. Apr 1996 A
5515519 Yoshioka et al. May 1996 A
5517600 Shimokawa May 1996 A
5519694 Brewer et al. May 1996 A
5522070 Sumimoto May 1996 A
5530964 Alpert et al. Jun 1996 A
5534796 Edwards Jul 1996 A
5542265 Rutland Aug 1996 A
5553755 Bonewald et al. Sep 1996 A
5555417 Odnert et al. Sep 1996 A
5560028 Sachs et al. Sep 1996 A
5560038 Haddock Sep 1996 A
5570587 Kim Nov 1996 A
5572572 Kawan et al. Nov 1996 A
5590353 Sakakibara et al. Dec 1996 A
5594657 Cantone et al. Jan 1997 A
5600810 Ohkami Feb 1997 A
5600844 Shaw et al. Feb 1997 A
5602833 Zehavi Feb 1997 A
5603043 Taylor et al. Feb 1997 A
5607083 Vogel et al. Mar 1997 A
5608643 Wichter et al. Mar 1997 A
5611867 Cooper et al. Mar 1997 A
5623545 Childs et al. Apr 1997 A
5625669 McGregor et al. Apr 1997 A
5626407 Westcott May 1997 A
5630206 Urban et al. May 1997 A
5635940 Hickman et al. Jun 1997 A
5646544 Iadanza Jul 1997 A
5646545 Trimberger et al. Jul 1997 A
5647512 Assis Mascarenhas deOliveira et al. Jul 1997 A
5667110 McCann et al. Sep 1997 A
5668817 Adham Sep 1997 A
5684793 Kiema et al. Nov 1997 A
5684980 Casselman Nov 1997 A
5687236 Moskowitz et al. Nov 1997 A
5694613 Suzuki Dec 1997 A
5694794 Jerg et al. Dec 1997 A
5699328 Ishizaki et al. Dec 1997 A
5701398 Glier et al. Dec 1997 A
5701482 Harrison et al. Dec 1997 A
5704053 Santhanam Dec 1997 A
5706191 Bassett et al. Jan 1998 A
5706976 Purkey Jan 1998 A
5712996 Schepers Jan 1998 A
5720002 Wang Feb 1998 A
5721693 Song Feb 1998 A
5721854 Ebcioglu et al. Feb 1998 A
5729754 Estes Mar 1998 A
5732563 Bethuy et al. Mar 1998 A
5734808 Takeda Mar 1998 A
5737631 Trimberger Apr 1998 A
5742180 DeHon et al. Apr 1998 A
5742821 Prasanna Apr 1998 A
5745366 Highma et al. Apr 1998 A
RE35780 Hassell et al. May 1998 E
5751295 Becklund et al. May 1998 A
5754227 Fukuoka May 1998 A
5758261 Weideman May 1998 A
5768561 Wise Jun 1998 A
5771362 Bartkowiak et al. Jun 1998 A
5778439 Trimberger et al. Jul 1998 A
5784636 Rupp Jul 1998 A
5784699 McMahon et al. Jul 1998 A
5787237 Reilly Jul 1998 A
5790817 Asghar et al. Aug 1998 A
5791517 Avital Aug 1998 A
5791523 Oh Aug 1998 A
5794062 Baxter Aug 1998 A
5794067 Kadowaki Aug 1998 A
5802055 Krein et al. Sep 1998 A
5802278 Isfeld et al. Sep 1998 A
5812851 Levy et al. Sep 1998 A
5818603 Motoyama Oct 1998 A
5819255 Celis et al. Oct 1998 A
5822308 Weigand et al. Oct 1998 A
5822313 Malek et al. Oct 1998 A
5822360 Lee et al. Oct 1998 A
5828858 Athanas et al. Oct 1998 A
5829085 Jerg et al. Nov 1998 A
5835753 Witt Nov 1998 A
5838165 Chatter Nov 1998 A
5838894 Horst Nov 1998 A
5845815 Vogel Dec 1998 A
5854929 Van Pract et al. Dec 1998 A
5860021 Klingman Jan 1999 A
5862961 Motta et al. Jan 1999 A
5870427 Teidemann, Jr. et al. Feb 1999 A
5873045 Lee et al. Feb 1999 A
5881106 Cartier Mar 1999 A
5884284 Peters et al. Mar 1999 A
5886537 Macias et al. Mar 1999 A
5887174 Simons et al. Mar 1999 A
5889816 Agrawal et al. Mar 1999 A
5889989 Robertazzi et al. Mar 1999 A
5890014 Long Mar 1999 A
5892900 Ginter et al. Apr 1999 A
5892950 Rigori et al. Apr 1999 A
5892961 Trimberger Apr 1999 A
5892962 Cloutier Apr 1999 A
5894473 Dent Apr 1999 A
5901884 Goulet et al. May 1999 A
5903886 Heimlich et al. May 1999 A
5907285 Toms et al. May 1999 A
5907580 Cummings May 1999 A
5910733 Bertolet et al. Jun 1999 A
5912572 Graf, III Jun 1999 A
5913172 McCabe et al. Jun 1999 A
5917852 Butterfield et al. Jun 1999 A
5920801 Thomas et al. Jul 1999 A
5931918 Row et al. Aug 1999 A
5933642 Greenbaum et al. Aug 1999 A
5940438 Poon et al. Aug 1999 A
5949415 Lin et al. Sep 1999 A
5950011 Albrecht et al. Sep 1999 A
5950131 Vilmur Sep 1999 A
5951674 Moreno Sep 1999 A
5953322 Kimball Sep 1999 A
5956518 DeHon et al. Sep 1999 A
5956967 Kim Sep 1999 A
5959811 Richardson Sep 1999 A
5959881 Trimberger et al. Sep 1999 A
5963048 Harrison et al. Oct 1999 A
5966534 Cooke et al. Oct 1999 A
5970254 Cooke et al. Oct 1999 A
5987105 Jenkins et al. Nov 1999 A
5987611 Freund Nov 1999 A
5991302 Berl et al. Nov 1999 A
5991308 Fuhrmann et al. Nov 1999 A
5993739 Lyon Nov 1999 A
5999734 Willis et al. Dec 1999 A
6005943 Cohen et al. Dec 1999 A
6006249 Leong Dec 1999 A
6016395 Mohamed Jan 2000 A
6018783 Chiang Jan 2000 A
6021186 Suzuki et al. Feb 2000 A
6021492 May Feb 2000 A
6023742 Ebeling et al. Feb 2000 A
6023755 Casselman Feb 2000 A
6028610 Deering Feb 2000 A
6036166 Olson Mar 2000 A
6039219 Bach et al. Mar 2000 A
6041322 Meng et al. Mar 2000 A
6041970 Vogel Mar 2000 A
6046603 New Apr 2000 A
6047115 Mohan et al. Apr 2000 A
6052600 Fette et al. Apr 2000 A
6055314 Spies et al. Apr 2000 A
6056194 Kolls May 2000 A
6059840 Click, Jr. May 2000 A
6061580 Altschul et al. May 2000 A
6073132 Gehman Jun 2000 A
6076174 Freund Jun 2000 A
6078736 Guccione Jun 2000 A
6085740 Ivri et al. Jul 2000 A
6088043 Kelleher et al. Jul 2000 A
6091263 New et al. Jul 2000 A
6091765 Pietzold, III et al. Jul 2000 A
6094065 Tavana et al. Jul 2000 A
6094726 Gonion et al. Jul 2000 A
6111893 Volftsun et al. Aug 2000 A
6111935 Hughes-Hartogs Aug 2000 A
6112218 Gandhi et al. Aug 2000 A
6115751 Tam et al. Sep 2000 A
6119178 Martin et al. Sep 2000 A
6120551 Law et al. Sep 2000 A
6122670 Bennett et al. Sep 2000 A
6128307 Brown Oct 2000 A
6134605 Hudson et al. Oct 2000 A
6134629 L'Ecuyer Oct 2000 A
6138693 Matz Oct 2000 A
6141283 Bogin et al. Oct 2000 A
6150838 Wittig et al. Nov 2000 A
6154492 Araki et al. Nov 2000 A
6154494 Sugahara et al. Nov 2000 A
6157997 Oowaki et al. Dec 2000 A
6158031 Mack et al. Dec 2000 A
6173389 Pechanek et al. Jan 2001 B1
6175854 Bretscher Jan 2001 B1
6175892 Sazzad et al. Jan 2001 B1
6181981 Varga et al. Jan 2001 B1
6185418 MacLellan et al. Feb 2001 B1
6192070 Poon et al. Feb 2001 B1
6192255 Lewis et al. Feb 2001 B1
6192388 Cajolet Feb 2001 B1
6195788 Leaver et al. Feb 2001 B1
6198924 Ishii et al. Mar 2001 B1
6199181 Rechef et al. Mar 2001 B1
6202130 Scales, III et al. Mar 2001 B1
6202189 Hinedi et al. Mar 2001 B1
6219697 Lawande et al. Apr 2001 B1
6219756 Kasamizugami Apr 2001 B1
6219780 Lipasti Apr 2001 B1
6223222 Fijolek et al. Apr 2001 B1
6226387 Tewfik et al. May 2001 B1
6230307 Davis et al. May 2001 B1
6237029 Master et al. May 2001 B1
6246883 Lee Jun 2001 B1
6247125 Noel-Baron et al. Jun 2001 B1
6249251 Chang et al. Jun 2001 B1
6258725 Lee et al. Jul 2001 B1
6263057 Silverman Jul 2001 B1
6266760 DeHon et al. Jul 2001 B1
6272579 Lentz et al. Aug 2001 B1
6272616 Fernando et al. Aug 2001 B1
6279020 Dujardin et al. Aug 2001 B1
6281703 Furuta et al. Aug 2001 B1
6282627 Wong et al. Aug 2001 B1
6286134 Click, Jr. et al. Sep 2001 B1
6289375 Knight et al. Sep 2001 B1
6289434 Roy Sep 2001 B1
6289488 Dave et al. Sep 2001 B1
6292822 Hardwick Sep 2001 B1
6292827 Raz Sep 2001 B1
6292830 Taylor et al. Sep 2001 B1
6292938 Sarkar et al. Sep 2001 B1
6301653 Mohamed et al. Oct 2001 B1
6305014 Roediger et al. Oct 2001 B1
6311149 Ryan et al. Oct 2001 B1
6321985 Kolls Nov 2001 B1
6326806 Fallside et al. Dec 2001 B1
6346824 New Feb 2002 B1
6347346 Taylor Feb 2002 B1
6349394 Brock et al. Feb 2002 B1
6353841 Marshall et al. Mar 2002 B1
6356994 Barry et al. Mar 2002 B1
6359248 Mardi Mar 2002 B1
6360256 Lim Mar 2002 B1
6360259 Bradley Mar 2002 B1
6360263 Kurtzberg et al. Mar 2002 B1
6363411 Dugan et al. Mar 2002 B1
6366999 Drabenstott et al. Apr 2002 B1
6377983 Cohen et al. Apr 2002 B1
6378072 Collins et al. Apr 2002 B1
6381293 Lee et al. Apr 2002 B1
6381735 Hunt Apr 2002 B1
6385751 Wolf May 2002 B1
6405214 Meade, II Jun 2002 B1
6408039 Ito Jun 2002 B1
6410941 Taylor et al. Jun 2002 B1
6411612 Halford et al. Jun 2002 B1
6421372 Bierly et al. Jul 2002 B1
6421809 Wuytack et al. Jul 2002 B1
6426649 Fu et al. Jul 2002 B1
6430624 Jamtgaard et al. Aug 2002 B1
6433578 Wasson Aug 2002 B1
6434590 Blelloch et al. Aug 2002 B1
6438737 Morelli et al. Aug 2002 B1
6446258 McKinsey et al. Sep 2002 B1
6449747 Wuytack et al. Sep 2002 B2
6456996 Crawford, Jr. et al. Sep 2002 B1
6459883 Subramanian et al. Oct 2002 B2
6467009 Winegarden et al. Oct 2002 B1
6469540 Nakaya Oct 2002 B2
6473609 Schwartz et al. Oct 2002 B1
6483343 Faith et al. Nov 2002 B1
6507947 Schreiber et al. Jan 2003 B1
6510138 Pannell Jan 2003 B1
6510510 Garde Jan 2003 B1
6526570 Click, Jr. et al. Feb 2003 B1
6538470 Langhammer et al. Mar 2003 B1
6556044 Langhammer et al. Apr 2003 B2
6563891 Eriksson et al. May 2003 B1
6570877 Kloth et al. May 2003 B1
6577678 Scheuermann Jun 2003 B2
6587684 Hsu et al. Jul 2003 B1
6590415 Agrawal et al. Jul 2003 B2
6601086 Howard et al. Jul 2003 B1
6601158 Abbott et al. Jul 2003 B1
6604085 Kolls Aug 2003 B1
6604189 Zemlyak et al. Aug 2003 B1
6606529 Crowder, Jr. et al. Aug 2003 B1
6611906 Lentz et al. Aug 2003 B1
6615333 Hoogerbrugge et al. Sep 2003 B1
6618434 Heidari-Bateni et al. Sep 2003 B2
6618777 Greenfield Sep 2003 B1
6640304 Ginter et al. Oct 2003 B2
6647429 Semal Nov 2003 B1
6653859 Sihlbom et al. Nov 2003 B2
6675265 Barroso et al. Jan 2004 B2
6675284 Warren Jan 2004 B1
6684319 Mohamed et al. Jan 2004 B1
6691148 Zinky et al. Feb 2004 B1
6694380 Wolrich et al. Feb 2004 B1
6711617 Bantz et al. Mar 2004 B1
6718182 Kung Apr 2004 B1
6718541 Ostanevich et al. Apr 2004 B2
6721286 Williams et al. Apr 2004 B1
6721884 De Oliveira Kastrup Pereira et al. Apr 2004 B1
6732354 Ebeling et al. May 2004 B2
6735621 Yoakum et al. May 2004 B1
6738744 Kirovski et al. May 2004 B2
6748360 Pitman et al. Jun 2004 B2
6751723 Kundu et al. Jun 2004 B1
6754470 Hendrickson et al. Jun 2004 B2
6760587 Holtzman et al. Jul 2004 B2
6760833 Dowling Jul 2004 B1
6766165 Sharma et al. Jul 2004 B2
6778212 Deng et al. Aug 2004 B1
6785341 Walton et al. Aug 2004 B2
6807590 Carlson et al. Oct 2004 B1
6819140 Yamanaka et al. Nov 2004 B2
6823448 Roth et al. Nov 2004 B2
6829633 Gelfer et al. Dec 2004 B2
6832250 Coons et al. Dec 2004 B1
6836839 Master et al. Dec 2004 B2
6854002 Conway et al. Feb 2005 B2
6859434 Segal et al. Feb 2005 B2
6865664 Budrovic et al. Mar 2005 B2
6871236 Fishman et al. Mar 2005 B2
6883074 Lee et al. Apr 2005 B2
6883084 Donohoe Apr 2005 B1
6894996 Lee May 2005 B2
6901440 Bimm et al. May 2005 B1
6907598 Fraser Jun 2005 B2
6912515 Jackson et al. Jun 2005 B2
6941336 Mar Sep 2005 B1
6980515 Schunk et al. Dec 2005 B1
6985517 Matsumoto et al. Jan 2006 B2
6986021 Master et al. Jan 2006 B2
6986142 Ehlig et al. Jan 2006 B1
6988139 Jervis et al. Jan 2006 B1
7032229 Flores et al. Apr 2006 B1
7044741 Leem May 2006 B2
7082456 Mani-Meitav et al. Jul 2006 B2
7139910 Ainsworth et al. Nov 2006 B1
7142731 Toi Nov 2006 B1
7249242 Ramchandran Jul 2007 B2
20010003191 Kovacs et al. Jun 2001 A1
20010023482 Wray Sep 2001 A1
20010029515 Mirsky Oct 2001 A1
20010034795 Moulton et al. Oct 2001 A1
20010039654 Miyamoto Nov 2001 A1
20010048713 Medlock et al. Dec 2001 A1
20010048714 Jha Dec 2001 A1
20010050948 Ramberg et al. Dec 2001 A1
20020010848 Kamano et al. Jan 2002 A1
20020013799 Blaker Jan 2002 A1
20020013937 Ostanevich et al. Jan 2002 A1
20020015435 Rieken Feb 2002 A1
20020015439 Kohli et al. Feb 2002 A1
20020023210 Tuomenoksa et al. Feb 2002 A1
20020024942 Tsuneki et al. Feb 2002 A1
20020024993 Subramanian et al. Feb 2002 A1
20020031166 Subramanian et al. Mar 2002 A1
20020032551 Zakiya Mar 2002 A1
20020035623 Lawande et al. Mar 2002 A1
20020041581 Aramaki Apr 2002 A1
20020042875 Shukla Apr 2002 A1
20020042907 Yamanaka et al. Apr 2002 A1
20020045441 Ralston et al. Apr 2002 A1
20020061741 Leung et al. May 2002 A1
20020069282 Reisman Jun 2002 A1
20020072830 Hunt Jun 2002 A1
20020078337 Moreau et al. Jun 2002 A1
20020083305 Renard et al. Jun 2002 A1
20020083423 Ostanevich et al. Jun 2002 A1
20020087829 Snyder et al. Jul 2002 A1
20020089348 Langhammer Jul 2002 A1
20020101909 Chen et al. Aug 2002 A1
20020107905 Roe et al. Aug 2002 A1
20020107962 Richter et al. Aug 2002 A1
20020119803 Bitterlich et al. Aug 2002 A1
20020120672 Butt et al. Aug 2002 A1
20020133688 Lee et al. Sep 2002 A1
20020138716 Master et al. Sep 2002 A1
20020141489 Imaizumi Oct 2002 A1
20020147845 Sanchez-Herrero et al. Oct 2002 A1
20020159503 Ramachandran Oct 2002 A1
20020162026 Neuman et al. Oct 2002 A1
20020167997 Kim et al. Nov 2002 A1
20020168018 Scheuermann Nov 2002 A1
20020181559 Heidari-Bateni et al. Dec 2002 A1
20020184275 Dutta et al. Dec 2002 A1
20020184291 Hogenauer Dec 2002 A1
20020184498 Qi Dec 2002 A1
20020191790 Anand et al. Dec 2002 A1
20030007606 Suder et al. Jan 2003 A1
20030012270 Zhou et al. Jan 2003 A1
20030018446 Makowski et al. Jan 2003 A1
20030018700 Giroti et al. Jan 2003 A1
20030023649 Kamiya et al. Jan 2003 A1
20030023830 Hogenauer Jan 2003 A1
20030026242 Jokinen et al. Feb 2003 A1
20030030004 Dixon et al. Feb 2003 A1
20030046421 Horvitz et al. Mar 2003 A1
20030061260 Rajkumar Mar 2003 A1
20030061311 Lo Mar 2003 A1
20030063656 Rao et al. Apr 2003 A1
20030074473 Pham et al. Apr 2003 A1
20030076815 Miller et al. Apr 2003 A1
20030099223 Chang et al. May 2003 A1
20030102889 Master et al. Jun 2003 A1
20030105949 Master et al. Jun 2003 A1
20030110485 Lu et al. Jun 2003 A1
20030131162 Secatch et al. Jul 2003 A1
20030142818 Raghunathan et al. Jul 2003 A1
20030154357 Master et al. Aug 2003 A1
20030163723 Kozuch et al. Aug 2003 A1
20030172138 McCormack et al. Sep 2003 A1
20030172139 Srinivasan et al. Sep 2003 A1
20030200538 Ebeling et al. Oct 2003 A1
20030212684 Meyer et al. Nov 2003 A1
20030229864 Watkins Dec 2003 A1
20040006584 Vandeweerd Jan 2004 A1
20040010645 Scheuermann et al. Jan 2004 A1
20040015970 Scheuermann Jan 2004 A1
20040025159 Scheuermann et al. Feb 2004 A1
20040057505 Valio Mar 2004 A1
20040062300 McDonough et al. Apr 2004 A1
20040081248 Parolari Apr 2004 A1
20040086027 Shattil May 2004 A1
20040093479 Ramchandran May 2004 A1
20040133745 Ramchandran Jul 2004 A1
20040168044 Ramchandran Aug 2004 A1
20040174932 Warke et al. Sep 2004 A1
20050044344 Stevens Feb 2005 A1
20050066336 Kavoori et al. Mar 2005 A1
20050166038 Wang et al. Jul 2005 A1
20050166073 Lee Jul 2005 A1
20050190871 Sedarat Sep 2005 A1
20050198199 Dowling Sep 2005 A1
20060003757 Subramanian et al. Jan 2006 A1
20060031660 Master et al. Feb 2006 A1
20060039317 Subramanian et al. Feb 2006 A1
20070168477 Ralston et al. Jul 2007 A1
Foreign Referenced Citations (52)
Number Date Country
100 18 374 Oct 2001 DE
0 301 169 Feb 1989 EP
0 166 586 Jan 1991 EP
0 236 633 May 1991 EP
0 478 624 Apr 1992 EP
0 479 102 Apr 1992 EP
0 661 831 Jul 1995 EP
0 668 659 Aug 1995 EP
0 690 588 Jan 1996 EP
0 691 754 Jan 1996 EP
0 768 602 Apr 1997 EP
0 817 003 Jan 1998 EP
0 821 495 Jan 1998 EP
0 866 210 Sep 1998 EP
0 923 247 Jun 1999 EP
0 926 596 Jun 1999 EP
1 056 217 Nov 2000 EP
1 061 437 Dec 2000 EP
1 061 443 Dec 2000 EP
1 126 368 Aug 2001 EP
1 150 506 Oct 2001 EP
1 189 358 Mar 2002 EP
2 067 800 Jul 1981 GB
2 237 908 May 1991 GB
62-249456 Oct 1987 JP
63-147258 Jun 1988 JP
4-51546 Feb 1992 JP
7-064789 Mar 1995 JP
7066718 Mar 1995 JP
10233676 Sep 1998 JP
10254696 Sep 1998 JP
11296345 Oct 1999 JP
2000315731 Nov 2000 JP
2001-053703 Feb 2001 JP
WO 8905029 Jun 1989 WO
WO 8911443 Nov 1989 WO
WO 9100238 Jan 1991 WO
WO 9313603 Jul 1993 WO
WO 9511855 May 1995 WO
WO 9633558 Oct 1996 WO
WO 9832071 Jul 1998 WO
WO 9903776 Jan 1999 WO
WO 9921094 Apr 1999 WO
WO 9926860 Jun 1999 WO
WO 9965818 Dec 1999 WO
WO 0019311 Apr 2000 WO
WO 0065855 Nov 2000 WO
WO 0069073 Nov 2000 WO
WO 0111281 Feb 2001 WO
WO 0122235 Mar 2001 WO
WO 0176129 Oct 2001 WO
WO 0212978 Feb 2002 WO
Related Publications (1)
Number Date Country
20110002409 A1 Jan 2011 US
Continuations (3)
Number Date Country
Parent 12578566 Oct 2009 US
Child 12860772 US
Parent 10402691 Mar 2003 US
Child 12578566 US
Parent 09851543 May 2001 US
Child 10402691 US