<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ep-patent-document PUBLIC "-//EPO//EP PATENT DOCUMENT 1.4//EN" "ep-patent-document-v1-4.dtd">
<ep-patent-document id="EP02728681B9W1" file="EP02728681W1B9.xml" lang="en" country="EP" doc-number="1386462" kind="B9" correction-code="W1" date-publ="20090826" status="c" dtd-version="ep-patent-document-v1-4">
<SDOBI lang="en"><B000><eptags><B001EP>ATBECHDEDKESFRGBGRITLILUNLSEMCPTIE......FI....CY..TR............................</B001EP><B003EP>*</B003EP><B005EP>J</B005EP><B007EP>DIM360 Ver 2.15 (14 Jul 2008) -  2999001/0</B007EP></eptags></B000><B100><B110>1386462</B110><B120><B121>CORRECTED EUROPEAN PATENT SPECIFICATION</B121></B120><B130>B9</B130><B132EP>B1</B132EP><B140><date>20090826</date></B140><B150><B151>W1</B151><B155><B1551>de</B1551><B1552>Ansprüche EN</B1552><B1551>en</B1551><B1552>Claims EN</B1552><B1551>fr</B1551><B1552>Revendications EN</B1552></B155></B150><B190>EP</B190></B100><B200><B210>02728681.4</B210><B220><date>20020405</date></B220><B240><B241><date>20031105</date></B241><B242><date>20060627</date></B242></B240><B250>en</B250><B251EP>en</B251EP><B260>en</B260></B200><B300><B310>282349 P</B310><B320><date>20010406</date></B320><B330><ctry>US</ctry></B330><B310>46601</B310><B320><date>20011023</date></B320><B330><ctry>US</ctry></B330></B300><B400><B405><date>20090826</date><bnum>200935</bnum></B405><B430><date>20040204</date><bnum>200406</bnum></B430><B450><date>20090128</date><bnum>200905</bnum></B450><B452EP><date>20080805</date></B452EP><B472><B475><date>20090509</date><ctry>ES</ctry></B475></B472><B480><date>20090826</date><bnum>200935</bnum></B480></B400><B500><B510EP><classification-ipcr sequence="1"><text>G06F   1/025       20060101AFI20060303BHEP        </text></classification-ipcr><classification-ipcr sequence="2"><text>H04J  11/00        20060101ALI20060303BHEP        </text></classification-ipcr></B510EP><B540><B541>de</B541><B542>SYSTEM ZUM ERZEUGEN VON PSEUDOZUFALLSSEQUENZEN</B542><B541>en</B541><B542>SYSTEM FOR GENERATING PSEUDORANDOM SEQUENCES</B542><B541>fr</B541><B542>SYSTEME DE GENERATION DE SEQUENCES PSEUDOALEATOIRES</B542></B540><B560><B561><text>WO-A-01/58070</text></B561><B561><text>US-A- 5 311 176</text></B561><B561><text>US-A- 5 602 833</text></B561><B561><text>US-A- 5 751 761</text></B561><B561><text>US-A- 6 014 408</text></B561><B561><text>US-A- 6 091 757</text></B561><B561><text>US-A- 6 115 410</text></B561><B565EP><date>20060309</date></B565EP></B560></B500><B600><B620EP><parent><cdoc><dnum><anum>09001099.2</anum><pnum>2053486</pnum></dnum><date>20090127</date></cdoc></parent></B620EP></B600><B700><B720><B721><snm>HEPLER, Edward, L.</snm><adr><str>794 Bass Cove</str><city>Malvern, PA 19355</city><ctry>US</ctry></adr></B721></B720><B730><B731><snm>INTERDIGITAL TECHNOLOGY CORPORATION</snm><iid>07457070</iid><irf>I81769PCTEP</irf><adr><str>3411 Silverside Road 
Concord Plaza, Suite 105 
Hagley Building</str><city>Wilmington, DE 19801</city><ctry>US</ctry></adr></B731></B730><B740><B741><snm>Bohnenberger, Johannes</snm><sfx>et al</sfx><iid>09232041</iid><adr><str>Meissner, Bolte &amp; Partner GbR 
Widenmayerstrasse 48</str><city>80538 München</city><ctry>DE</ctry></adr></B741></B740></B700><B800><B840><ctry>AT</ctry><ctry>BE</ctry><ctry>CH</ctry><ctry>CY</ctry><ctry>DE</ctry><ctry>DK</ctry><ctry>ES</ctry><ctry>FI</ctry><ctry>FR</ctry><ctry>GB</ctry><ctry>GR</ctry><ctry>IE</ctry><ctry>IT</ctry><ctry>LI</ctry><ctry>LU</ctry><ctry>MC</ctry><ctry>NL</ctry><ctry>PT</ctry><ctry>SE</ctry><ctry>TR</ctry></B840><B860><B861><dnum><anum>US2002010798</anum></dnum><date>20020405</date></B861><B862>en</B862></B860><B870><B871><dnum><pnum>WO2002082759</pnum></dnum><date>20021017</date><bnum>200242</bnum></B871></B870><B880><date>20040204</date><bnum>200406</bnum></B880></B800></SDOBI><!-- EPO <DP n="1"> -->
<description id="desc" lang="en">
<p id="p0001" num="0001">BACKGROUND</p>
<p id="p0002" num="0002">The present invention generally relates to wireless communication systems. In particular, the invention relates to time division duplex (TDD) and frequency division duplex (FDD) systems which use orthogonal variable spreading factor (OVSF) codes and Hadamard codes to spread data for transmission and includes an improved system for generating such codes.</p>
<p id="p0003" num="0003">Many types of communication systems, such as FDD and TDD communication systems, use one or more families of pseudorandom codes to spread data for transmission. These codes are used in various places throughout the communication system in both the transmitter and the receiver. Several of the more commonly used families of codes include OVSF codes and Hadamard codes.</p>
<p id="p0004" num="0004"><figref idref="f0001">Figure 1</figref> shows a code tree of OVSF codes that preserve the orthogonality between different channels. The OVSF codes can be defined using the code tree of <figref idref="f0001">Figure 1</figref>, whereby the channelization codes are uniquely described as C<sub>ch</sub>,<sub>SF</sub>,<sub>k</sub>, and where SF is the spreading factor of the code and k is the code number, 0≤ <i>k</i> ≤ <i>SF</i> - 1. Each level in the code tree defines channelization codes of length SF, corresponding to a spreading factor of SF in <figref idref="f0001">Figure 1</figref>.</p>
<p id="p0005" num="0005">The generation method for the channelization code is defined as: <maths id="math0001" num=""><math display="block"><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub><mo>=</mo><mn>1</mn><mo>,</mo></math><img id="ib0001" file="imgb0001.tif" wi="23" he="9" img-content="math" img-format="tif"/></maths> <maths id="math0002" num=""><math display="block"><mfenced open="[" close="]"><mtable><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><mn>2</mn><mo>,</mo><mn>0</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><mn>2</mn><mo>,</mo><mn>1</mn></mrow></msub></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open="[" close="]"><mtable><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub></mtd><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub></mtd><mtd><msub><mrow><mo>-</mo><mi>C</mi></mrow><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open="[" close="]"><mtable><mtr><mtd><mn>1</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mo>-</mo><mn>1</mn></mtd></mtr></mtable></mfenced></math><img id="ib0002" file="imgb0002.tif" wi="63" he="21" img-content="math" img-format="tif"/></maths> <maths id="math0003" num=""><math display="block"><mfenced open="[" close="]"><mtable><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub><mo>=</mo><mn>1</mn><mo>,</mo></mtd></mtr><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub><mo>=</mo><mn>1</mn><mo>,</mo></mtd></mtr><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub><mo>=</mo><mn>1</mn><mo>,</mo></mtd></mtr><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub><mo>=</mo><mn>1</mn><mo>,</mo></mtd></mtr><mtr><mtd><mo>⋅</mo></mtd></mtr><mtr><mtd><mo>⋅</mo></mtd></mtr><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub><mo>=</mo><mn>1</mn><mo>,</mo></mtd></mtr><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub><mo>=</mo><mn>1</mn><mo>,</mo></mtd></mtr></mtable></mfenced><mo>=</mo><mfenced open="[" close="]"><mtable><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><msup><mn>2</mn><mi>n</mi></msup><mo>,</mo><mn>0</mn></mrow></msub></mtd><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><msup><mn>2</mn><mi>n</mi></msup><mo>,</mo><mn>0</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><msup><mn>2</mn><mi>n</mi></msup><mo>,</mo><mn>0</mn></mrow></msub></mtd><mtd><msub><mrow><mo>-</mo><mi>C</mi></mrow><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><msup><mn>2</mn><mi>n</mi></msup><mo>,</mo><mn>0</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub><mo>=</mo><mn>1</mn><mo>,</mo></mtd><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><msup><mn>2</mn><mi>n</mi></msup><mo>,</mo><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><mn>1</mn><mo>,</mo><mn>0</mn></mrow></msub><mo>=</mo><mn>1</mn><mo>,</mo></mtd><mtd><msub><mrow><mo>-</mo><mi>C</mi></mrow><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><msup><mn>2</mn><mi>n</mi></msup><mo>,</mo><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><mn>.</mn></mtd><mtd><mn>.</mn></mtd></mtr><mtr><mtd><mn>.</mn></mtd><mtd><mn>.</mn></mtd></mtr><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><msup><mn>2</mn><mi>n</mi></msup><mo>,</mo><msup><mn>2</mn><mi>n</mi></msup><mo>-</mo><mn>1</mn></mrow></msub></mtd><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><msup><mn>2</mn><mi>n</mi></msup><mo>,</mo><msup><mn>2</mn><mi>n</mi></msup><mo>-</mo><mn>1</mn></mrow></msub></mtd></mtr><mtr><mtd><msub><mi>C</mi><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><msup><mn>2</mn><mi>n</mi></msup><mo>,</mo><msup><mn>2</mn><mi>n</mi></msup><mo>-</mo><mn>1</mn></mrow></msub></mtd><mtd><msub><mrow><mo>-</mo><mi>C</mi></mrow><mrow><mi mathvariant="italic">ch</mi><mo>,</mo><msup><mn>2</mn><mi>n</mi></msup><mo>,</mo><msup><mn>2</mn><mi>n</mi></msup><mo>-</mo><mn>1</mn></mrow></msub></mtd></mtr></mtable></mfenced></math><img id="ib0003" file="imgb0003.tif" wi="83" he="58" img-content="math" img-format="tif"/></maths><!-- EPO <DP n="2"> --></p>
<p id="p0006" num="0006">The rightmost value in each channelization code word corresponds to the chip transmitted first in time. The OVSF code to be used is a function of the spreading factor, the number of channels being utilized and the channel type.</p>
<p id="p0007" num="0007">One method for generating OVSF codes is to utilize the mathematical description above. However, such matrix manipulations are computationally expensive and require extremely fast and expensive hardware to perform.<br/>
Additionally, when a computational unit is fixed in hardware for such a purpose, it generally cannot be utilized for other purposes. This adds to system complexity and results in an overall system design that is unnecessarily complex and expensive. <patcit id="pcit0001" dnum="US5311176A"><text>US 5,311,176</text></patcit> describes a method and apparatus for generating Walsh codes. In the arrangement described therein, an N-bit binary counter generates address signals which are passed to a set of cascaded XOR gates together with a Walsh code address. <patcit id="pcit0002" dnum="EP1252734A"><text>EP 1 252 734</text></patcit> which claims a priority date of 04.02.2000 describes a method and device for generating OVSF code words.</p>
<p id="p0008" num="0008">Accordingly, a convenient means is needed to quickly and efficiently generate OVSF codes. It would also be desirable for such means to be adaptable to the generation of other types of codes, such as Hadamard sequences.<!-- EPO <DP n="3"> --></p>
<p id="p0009" num="0009">SUMMARY</p>
<p id="p0010" num="0010">The present invention comprises both a system and a method which quickly and efficiently generate OVSF codes using a register which contains the identification of code tree leg of the desired code and a counter which sequences through the leg. The system generates the codes on demand, while requiring very little hardware resources.</p>
<p id="p0011" num="0011">Additionally, the same system and method are adaptable to generate Hadamard sequences.</p>
<p id="p0012" num="0012">BRIEF DESCRIPTION OF THE DRAWINGS</p>
<p id="p0013" num="0013"><figref idref="f0001">Figure 1</figref> is a prior art code tree for orthogonal variable spreading factor (OVSF) codes.</p>
<p id="p0014" num="0014"><figref idref="f0001">Figure 2</figref> is a system for generating OVSF codes in accordance with the present invention.</p>
<p id="p0015" num="0015"><figref idref="f0002">Figure 3A</figref> is a system for generating OVSF codes having a spreading factor of 4.<!-- EPO <DP n="4"> --></p>
<p id="p0016" num="0016"><figref idref="f0002">Figure 3B</figref> is a system for generating OVSF codes having a spreading factor of 8.</p>
<p id="p0017" num="0017"><figref idref="f0003">Figure 4</figref> illustrates the generation of the seventh code of the OVSF code tree having a spreading factor of 8.</p>
<p id="p0018" num="0018"><figref idref="f0004">Figure 5</figref> is a diagram illustrating the expandability of the structure.</p>
<p id="p0019" num="0019"><figref idref="f0005">Figure 6</figref> is a prior art code tree for Hadamard codes.</p>
<p id="p0020" num="0020"><figref idref="f0005">Figure 7</figref> is an alternative embodiment of the present invention for generating both Hadamard and OVSF codes.</p>
<p id="p0021" num="0021"><figref idref="f0003">Figure 8</figref> illustrates the generation of the forth code of the Hadamard code tree having a spreading factor of 8.</p>
<p id="p0022" num="0022"><figref idref="f0006">Figure 9</figref> is a second alternative embodiment of the present invention for generating pseudorandom codes.</p>
<p id="p0023" num="0023">DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS</p>
<p id="p0024" num="0024">Presently preferred embodiments are described below with reference to the drawing figures wherein like numerals represent like elements throughout. Additionally, the preferred embodiment of the present invention will be explained with reference to the generation of OVSF and Hadamard codes. However, those of skill in the art should realize that the same principles may be applied to other families of codes, and the present invention should not be strictly limited to the exemplary embodiments described herein.</p>
<p id="p0025" num="0025">Referring to <figref idref="f0001">Figure 2</figref>, a system 10 for generating pseudorandom sequences is shown. The system 10 includes a bit position counter 12, a multiplexer 14, a spreading factor selector 16, a bit-by-bit AND gate 18, an index selector 20 and an XOR gate 22. The counter 12 is a free-running binary counter that provides an output to a first input of the multiplexer 14. The counter 12 is initialized at 0 and runs "freely" as the desired OVSF code is generated. Generation of a code is repeated as many times as needed in order to spread the data. For each instance that it is required to generate the code, the counter is initialized to zero. Alternatively, the<!-- EPO <DP n="5"> --> counter 12 may be permitted to freely run, whereby the most significant bits that are not used may be ignored. This alternative will be explained in detail hereafter.</p>
<p id="p0026" num="0026">The spreading factor selector 16 provides an output to the second input of the multiplexer 14, which identifies how many bits from the counter 12 the multiplexer 14 should output. For OSVF code generation, the multiplexer 14 also reverses the bit order of the output bits, such that the output bits are provided in reverse order. This is graphically illustrated by the dotted lines within the multiplexer 14 in <figref idref="f0002">Figures 3A and 3B</figref>.</p>
<p id="p0027" num="0027">Referring back to <figref idref="f0001">Figure 2</figref>, the index selector 20 outputs a binary identification of the index or "branch" of the code tree that it is desired to generate. For example, as shown in <figref idref="f0001">Figure 1</figref>, if a spreading factor of 4 is desired, and it is also desired to generate the third branch of the code tree, the index selector 20 will output a two-bit binary sequence for the number 2, which is 10. Similarly, if a spreading factor of 8 and the fourth branch of the code tree are desired, the index selector 20 outputs a three-bit binary sequence for the number 3, which is 011.</p>
<p id="p0028" num="0028">The output of the index selector 20 and the output of the multiplier 14 are ANDed together by the bit-by-bit AND gate 18. This is an output to the XOR gate 22, which is actually an XOR "tree", comprising a plurality of XOR gates as is well known by those of skill in the art.</p>
<p id="p0029" num="0029">The system 10 in accordance with the present invention is shown in more detail in <figref idref="f0002">Figures 3A and 3B</figref>, which illustrate the different functional configurations of the system 10 depending upon the desired spreading factor. These figures show the multiple bit output C<sub>I</sub>-C<sub>N</sub> from the counter 12 and the multiple bit output I<sub>1</sub>-I<sub>M</sub> from the index selector 20. Referring to <figref idref="f0002">Figure 3A</figref>, if a spreading factor of 4 is desired, the spreading factor selector 16 controls the multiplexer 14 such that the multiplexer 14 outputs only the desired bits coming from the first two bit "positions" C<sub>1</sub> and C<sub>2</sub> of the counter 12 to the AND gate 18. The bit positions C<sub>3</sub>-C<sub>N</sub> coming from the counter 12 are essentially "zeroed out" or ignored. Each desired bit from the counter 12 is taken in reverse order and is bit-by-bit ANDed with the<!-- EPO <DP n="6"> --> desired bits from the index selector 20. For example, the first bit C<sub>1</sub> from the counter 12 is ANDed together with the second bit I<sub>2</sub> from the index selector 20; and the second bit C<sub>2</sub> from the counter 12 is ANDed together with the first bit I<sub>1</sub> from the index selector 20. Once all of the desired bits from the counter 12 have been bit-by-bit ANDed with the desired bits from the index selector 20, the AND gate 18 outputs to the XOR gate 22. The output of the XOR gate 22 is the code sequence having the desired bits. Each new bit of the code sequence is generated as the counter 12 is sequenced.</p>
<p id="p0030" num="0030">Referring to the second example as shown in <figref idref="f0002">Figure 3B</figref>, if a spreading factor of 8 is desired, the multiplexer 14 outputs the bits coming from the first three positions C<sub>1</sub>, C<sub>2</sub> and C<sub>3</sub> of the counter 12 to the AND gate 18. The first bit C<sub>1</sub> from the counter 12 is ANDed together with the third output I<sub>3</sub> from the index selector 20. Likewise, the second bit from the counter C<sub>2</sub> is ANDed together with the second bit I<sub>2</sub> from the index selector 20. Finally, the third bit C<sub>3</sub> from the counter 12 is ANDed together with the first bit I<sub>1</sub> from the index selector 20. Once all of the desired bits from the counter 12 have been bit-by-bit ANDed with the desired bits from the index selector 20, the AND gate 18 outputs to the XOR gate 22. The output of the XOR gate 22 is the desired code sequence.</p>
<p id="p0031" num="0031">Although the system 10 made in accordance with the present invention can be used to generate OVSF codes having spreading factors of any length, for simplicity the foregoing detailed example will be explained with reference to a spreading factor of 8. This requires a three-bit spreading factor selector 16, a three-bit counter 12 to sequence through the bits, a three-input AND gate 18 and a three-input XOR gate 22 as shown in <figref idref="f0003">Figure 4</figref>. Reference should also be made to Tables 1-3 below for this example:
<tables id="tabl0001" num="0001">
<table frame="all">
<title>TABLE 1</title>
<tgroup cols="2">
<colspec colnum="1" colname="col1" colwidth="25mm"/>
<colspec colnum="2" colname="col2" colwidth="32mm"/>
<thead>
<row>
<entry namest="col1" nameend="col2" align="center" valign="top">SPREADING FACTOR</entry></row>
<row>
<entry align="center" valign="top">DESIRED SF</entry>
<entry align="center" valign="top">NUMBER OF BITS</entry></row></thead>
<tbody>
<row>
<entry align="center">2</entry>
<entry align="center">1</entry></row><!-- EPO <DP n="7"> -->
<row>
<entry align="center">4</entry>
<entry align="center">2</entry></row>
<row>
<entry align="center">8</entry>
<entry align="center">3</entry></row>
<row>
<entry align="center">16</entry>
<entry align="center">4</entry></row>
<row>
<entry align="center">32</entry>
<entry align="center">5</entry></row>
<row>
<entry align="center">64</entry>
<entry align="center">6</entry></row>
<row>
<entry align="center">128</entry>
<entry align="center">7</entry></row>
<row>
<entry align="center">256</entry>
<entry align="center">8</entry></row></tbody></tgroup>
</table>
</tables>
<tables id="tabl0002" num="0002">
<table frame="all">
<title>TABLE 2</title>
<tgroup cols="4">
<colspec colnum="1" colname="col1" colwidth="19mm"/>
<colspec colnum="2" colname="col2" colwidth="10mm"/>
<colspec colnum="3" colname="col3" colwidth="10mm"/>
<colspec colnum="4" colname="col4" colwidth="10mm"/>
<thead>
<row>
<entry namest="col1" nameend="col4" align="center" valign="top">INDEX</entry></row>
<row>
<entry align="center" valign="top">BRANCH</entry>
<entry align="center" valign="top">I<sub>3</sub></entry>
<entry align="center" valign="top">I<sub>2</sub></entry>
<entry align="center" valign="top">I<sub>1</sub></entry></row></thead>
<tbody>
<row>
<entry align="center">First</entry>
<entry align="center">0</entry>
<entry align="center">0</entry>
<entry align="center">0</entry></row>
<row>
<entry align="center">Second</entry>
<entry align="center">0</entry>
<entry align="center">0</entry>
<entry align="center">1</entry></row>
<row>
<entry align="center">Third</entry>
<entry align="center">0</entry>
<entry align="center">1</entry>
<entry align="center">0</entry></row>
<row>
<entry align="center">Fourth</entry>
<entry align="center">0</entry>
<entry align="center">1</entry>
<entry align="center">1</entry></row>
<row>
<entry align="center">Fifth</entry>
<entry align="center">1</entry>
<entry align="center">0</entry>
<entry align="center">0</entry></row>
<row>
<entry align="center">Sixth</entry>
<entry align="center">1</entry>
<entry align="center">0</entry>
<entry align="center">1</entry></row>
<row>
<entry align="center">Seventh</entry>
<entry align="center">1</entry>
<entry align="center">1</entry>
<entry align="center">0</entry></row>
<row>
<entry align="center">Eighth</entry>
<entry align="center">1</entry>
<entry align="center">1</entry>
<entry align="center">1</entry></row></tbody></tgroup>
</table>
</tables>
<tables id="tabl0003" num="0003">
<table frame="all">
<title>TABLE 3</title>
<tgroup cols="3">
<colspec colnum="1" colname="col1" colwidth="11mm"/>
<colspec colnum="2" colname="col2" colwidth="11mm"/>
<colspec colnum="3" colname="col3" colwidth="11mm"/>
<thead>
<row>
<entry namest="col1" nameend="col3" align="center" valign="top">COUNTER</entry></row>
<row>
<entry align="center" valign="top">C<sub>3</sub></entry>
<entry align="center" valign="top">C<sub>2</sub></entry>
<entry align="center" valign="top">C<sub>1</sub></entry></row></thead>
<tbody>
<row>
<entry align="center">0</entry>
<entry align="center">0</entry>
<entry align="center">0</entry></row>
<row>
<entry align="center">0</entry>
<entry align="center">0</entry>
<entry align="center">1</entry></row>
<row>
<entry align="center">0</entry>
<entry align="center">1</entry>
<entry align="center">0</entry></row>
<row>
<entry align="center">0</entry>
<entry align="center">1</entry>
<entry align="center">1</entry></row>
<row>
<entry align="center">1</entry>
<entry align="center">0</entry>
<entry align="center">0</entry></row>
<row>
<entry align="center">1</entry>
<entry align="center">0</entry>
<entry align="center">1</entry></row><!-- EPO <DP n="8"> -->
<row>
<entry align="center">1</entry>
<entry align="center">1</entry>
<entry align="center">0</entry></row>
<row>
<entry align="center">1</entry>
<entry align="center">1</entry>
<entry align="center">1</entry></row></tbody></tgroup>
</table>
</tables></p>
<p id="p0032" num="0032">For this example, it is desired to generate a code sequence having a spreading factor of 8, comprising the seventh leg of the code tree shown in <figref idref="f0001">Figure 1</figref> as highlighted with the asterisk. This is identified in <figref idref="f0001">Figure 1</figref> as C<sub>ch,8,6</sub> which is 1, -1, - 1, 1, 1, - 1, - 1, 1. From Table 1, since the desired spreading factor is 8, the number of desired bits is 3. From Table 2, since it is desired to generate the seventh branch of the code tree, the output of the index selector as shown in Table 2 will be the binary sequence 1, 1, 0. The binary counter 12 then sequences through a binary count from 0 (0, 0, 0) to 7 (1, 1, 1) as shown in Table 3.</p>
<p id="p0033" num="0033">The first bit of the sequence C<sub>ch</sub>,<sub>8</sub>,<sub>6</sub> will be generated by ANDing the binary sequence 000, (which when reversed still yields 000), from the counter 12 with the binary sequence 110 from the index selector 20. The XOR of the bits results in an output of 0. The second input of 001 is reversed yielding 100, and is ANDed with the binary sequence 110 from the index selector 20, resulting in 100. The XOR of these bits results in an output of 1. Likewise, the third input of 010 is reversed yielding 010 and when ANDed with 110 and XORed, results in an output of 1. The fourth input of 011 is reversed yielding 110 and when ANDed with 110 and XORed results in an output of 0. The fifth input of 100 is reversed yielding 001 and when ANDed with 110 and XORed results in the output of 0. The sixth input of 101 is reversed yielding 101 and when ANDed with 110 and XORed results in an output of 1. The seventh input of 110 is reversed yielding 011 and when ANDed with 110 and XORed inan output of 1. Finally, the eighth input of 111 is reversed yielding 111 and when ANDed with 110 and XORed results in an output of 0.</p>
<p id="p0034" num="0034">As a result of this repetitive process, the sequence output will be 0, 1, 1, 0, 0, 1, 1, 0, (keeping in mind the rightmost bit is generated first in time). These outputs are subsequently mapped, whereby an output of 1 is mapped to -1 and an output of 0 is mapped to 1. Accordingly, the sequence used for spreading is 1, -1, -1,<!-- EPO <DP n="9"> --> 1, 1, -1, -1, 1. This matches the seventh leg of the OSVF code tree shown in <figref idref="f0001">Figure 1</figref>.</p>
<p id="p0035" num="0035">It should be noted, referring to <figref idref="f0004">Figure 5</figref>, that this structure is expandable to any number of desired inputs. Alternatively, the system may be "oversized" as shown in <figref idref="f0004">Figure 5</figref> whereby the bits of the counter 12 and the index selector 20 that are not needed are essentially ignored. As shown in <figref idref="f0004">Figure 5</figref>, since only four bits C<sub>1</sub> - C<sub>4</sub> are required, bits C<sub>5</sub> - C<sub>N</sub> are either stopped from passing through the multiplexer 14, or are zeroed out. Additionally, only the desired bits C<sub>1</sub> - C<sub>4</sub> are reordered by the multiplexer 14. In a likewise matter only bits I1 - I4 will be "processed" by the AND gate since the remaining portions of the AND gate will be zeroed out due to the lack of an input from corresponding bits C<sub>5</sub> - C<sub>N</sub>. The output form the XOR gate 22 will be the desired code sequence bit.</p>
<p id="p0036" num="0036">Referring to <figref idref="f0005">Figure 6</figref>, a code tree for Hadamard sequences is shown. The codes of this code tree will generated is accordance with an alternative embodiment of the present invention shown on <figref idref="f0005">Figure 7</figref>.</p>
<p id="p0037" num="0037">Referring to <figref idref="f0005">Figure 7</figref>, a system 100 for generating several types of pseudorandom sequences is shown. As with the embodiment shown in <figref idref="f0001">Figure 2</figref>, the system 100 includes a bit position counter 12, a multiplexer 14, a spreading factor selector 16, a bit by bit AND gate, an index selector 20, and an XOR gate 22. However, this embodiment includes a mode switch 60 which switches between a first mode for generating OVSF codes and a second mode for generating Hadamard codes. When the mode selection switch 60 is in a first position, the system 100 operates in the manner identical to the system 10 shown in <figref idref="f0001">Figure 2</figref>, whereby the multiplexer 14 reverses the bit order of the bit output from the bit position counter 12. However, when the mode switch 60 is in a second position, the reordering of the bits is not performed by the multiplexer 14 and the bits are passed directly through the multiplexer 14 to the bit by bit AND, gate 18. This is shown in <figref idref="f0003">Figure 8</figref> whereby the straight dotted lines through the multiplexer 14 illustrate the bits being passed directly through the multiplexer 14 without being reordered.<!-- EPO <DP n="10"> --></p>
<p id="p0038" num="0038">An example of generating a Hadamard code will be explained with reference to <figref idref="f0003">Figure 8</figref>. For this example, it is desired to generate a code sequence having a spreading factor of 8, comprising the fourth leg of the code tree as shown in <figref idref="f0005">Figure 6</figref> and as highlighted with the asterisk. This sequence is shown in <figref idref="f0005">Figure 6</figref> as 0,1,1,0,0,1,1,0. From Table 1, since the desired spreading factor is 8, the number of desired bits is 3. From Table 2, since it is desired to generate the fourth branch of the code tree, the output of the index selector as shown in Table 2 will be the binary sequence 0,1,1. The binary counter 12 then sequences through the binary count from 0 (0, 0, 0) to 7 (1, 1, 1) as shown in Table 3.</p>
<p id="p0039" num="0039">The same ANDing and XORing process is performed as was described with reference to the generation of the OVSF codes, except that the bits from the counter 12 are not reversed. This results in an output from the system 100 of 0, 1, 1, 0, 1, 1, 0. This correctly matches the fourth leg of the Hadamard code prestructure shown in <figref idref="f0005">Figure 6</figref>. These outputs may be optionally mapped whereby an output of 1 is mapped to minus 1 and an output of 0 is mapped to 1.</p>
<p id="p0040" num="0040">A second alternative embodiment of a system 200 for generating several types of pseudorandom sequences is shown in <figref idref="f0006">Figure 9</figref>. This system 200 includes the index selector 20, the bit by bit ANDgate 18 and the XOR 22. However, the bit position counter 12, the multiplexer 14 and the spreading factor selector 16 have been replaced by a number generator 202 and a selector 204. The number generator 202 stores a predetermined sequence of numbers, such as the numbers stored in Table 3, and sequentially outputs these numbers. Accordingly, the number generator 202 can sequentially output the numbers stored in Table 3, or alternatively may output the "reordered" sequence of bits as shown in Table 4. The selector 204 can select between which sequence of bits to be output by the number generator 202. For OVSF codes a first sequence will be output; and for Hadamard codes a second sequence will be output. Although this embodiment necessitates the use of additional memory, it is less memory than would be required to store an entire code tree of pseudorandom sequences. Additionally, although this embodiment has<!-- EPO <DP n="11"> --> been explained with reference to pseudorandom codes having a spreading factor of 8, any desired sequence may be prestored in the number generator 202.
<tables id="tabl0004" num="0004">
<table frame="all">
<title>TABLE 4</title>
<tgroup cols="3">
<colspec colnum="1" colname="col1" colwidth="11mm"/>
<colspec colnum="2" colname="col2" colwidth="11mm"/>
<colspec colnum="3" colname="col3" colwidth="11mm"/>
<thead>
<row>
<entry namest="col1" nameend="col3" align="center" valign="top">COUNTER</entry></row>
<row>
<entry align="center" valign="top">C<sub>3</sub></entry>
<entry align="center" valign="top">C<sub>2</sub></entry>
<entry align="center" valign="top">C<sub>1</sub></entry></row></thead>
<tbody>
<row>
<entry align="center">0</entry>
<entry align="center">0</entry>
<entry align="center">0</entry></row>
<row>
<entry align="center">1</entry>
<entry align="center">0</entry>
<entry align="center">0</entry></row>
<row>
<entry align="center">0</entry>
<entry align="center">1</entry>
<entry align="center">0</entry></row>
<row>
<entry align="center">1</entry>
<entry align="center">1</entry>
<entry align="center">0</entry></row>
<row>
<entry align="center">0</entry>
<entry align="center">0</entry>
<entry align="center">1</entry></row>
<row>
<entry align="center">1</entry>
<entry align="center">0</entry>
<entry align="center">1</entry></row>
<row>
<entry align="center">0</entry>
<entry align="center">1</entry>
<entry align="center">1</entry></row>
<row>
<entry align="center">1</entry>
<entry align="center">1</entry>
<entry align="center">1</entry></row></tbody></tgroup>
</table>
</tables></p>
<p id="p0041" num="0041">While the present invention has been described in terms of the preferred embodiment, other variations which are within the scope of the invention as outlined in the claims below will be apparent to those skilled in the art.</p>
</description><!-- EPO <DP n="12"> -->
<claims id="claims01" lang="en">
<claim id="c-en-01-0001" num="0001">
<claim-text>A system for generating an OVSF, orthogonal variable spreading factor, code comprising:
<claim-text>a binary counter (12) for providing a binary count comprising a plurality of sequential M-bit binary numbers;</claim-text>
<claim-text>an index selector (20), for providing an M-bit binary identification of said OVSF code; and</claim-text>
<claim-text>a logical reduction means (18, 22) having a first input from the counter (12) and a second input from the index selector (20) and having an output; whereby the desired OVSF code is output from said output,</claim-text>
<b>characterized in that</b> the system further comprises<br/>
bit reordering means (14), for selectively reordering the bits of each said binary number from least significant bit to most significant bit for providing the reordered bits to the logical reduction means (18, 22).</claim-text></claim>
<claim id="c-en-01-0002" num="0002">
<claim-text>A method of generating an OVSF, orthogonal variable spreading factor, code comprising:
<claim-text>providing by using a binary counter (12), a binary count comprising a plurality of sequential M-bit binary numbers;</claim-text>
<claim-text>selectively reordering the bits of each said binary number from least significant bit to most significant bit;</claim-text>
<claim-text>providing using an index selector (20) an M-bit binary identification of said OVSF code; and</claim-text>
<claim-text>outputting from an output of logical reduction means (18, 22) having a first input for receiving the reordered bits from the counter (12) and a second input from the index selector (20) the desired OVSF code.</claim-text></claim-text></claim>
</claims><!-- EPO <DP n="13"> -->
<claims id="claims02" lang="de">
<claim id="c-de-01-0001" num="0001">
<claim-text>System zum Generieren eines OVSF-Codes (orthogonalen Spreizfaktorvariablen-Codes), das Folgendes aufweist:
<claim-text>einen Binärzähler (12), um eine Binärzählung bereitzustellen, die mehrere sequentielle M-Bit-Binärzahlen aufweist;</claim-text>
<claim-text>einen Indexselektor (20), um eine M-Bit-Binär-Identifikation des OVSF-Codes bereitzustellen; und</claim-text>
<claim-text>eine logische Reduzierungseinrichtung (18, 22) mit einem ersten vom Zähler (12) kommenden Eingang und einem zweiten vom Indexselektor (20) kommenden Eingang und einem Ausgang; wobei der gewünschte OVSF-Code aus dem Ausgang ausgegeben wird,</claim-text>
<b>dadurch gekennzeichnet, dass</b> das System darüber hinaus Bit-Neuordnungseinrichtungen (14) aufweist, um die Bits jeder Binärzahl selektiv ausgehend vom niedrigstwertigen Bit bis zum höchstwertigen Bit neu zu ordnen, um die neu geordneten Bits der logischen Reduzierungseinrichtung (18, 22) bereitzustellen.</claim-text></claim>
<claim id="c-de-01-0002" num="0002">
<claim-text>Verfahren zum Generieren eines OVSF-Codes (orthogonalen Spreizfaktorvariablen-Codes), das Folgendes umfasst:
<claim-text>Bereitstellen, und zwar unter Verwendung eines Binärzählers (12), einer Binärzählung, die mehrere sequentielle M-Bit-Binärzahlen aufweist; selektives Neuordnen der Bits jeder Binärzahl ausgehend vom niedrigstwertigen Bit bis zum höchstwertigen Bit;</claim-text>
<claim-text>Bereitstellen, und zwar unter Verwendung eines Indexselektors (20), einer M-Bit-Binär-Identifikation des OVSF-Codes; und</claim-text>
<claim-text>Ausgeben des gewünschten OVSF-Codes aus einem Ausgang der logischen Reduzierungseinrichtung (18, 22) die einen ersten Eingang zum Empfangen der neu geordneten Bits ausgehend vom Zähler (12) und einen zweiten Eingang ausgehend vom Indexselektor (20) hat.</claim-text></claim-text></claim>
</claims><!-- EPO <DP n="14"> -->
<claims id="claims03" lang="fr">
<claim id="c-fr-01-0001" num="0001">
<claim-text>Système permettant de générer un code OVSF (code à facteur d'étalement orthogonal variable) comportant :
<claim-text>un compteur binaire (12) servant à fournir un compte binaire comprenant une pluralité de nombres binaires séquentiels à M bits ;</claim-text>
<claim-text>un sélecteur d'indice (20) servant à fournir une identification binaire à M bits dudit code OVSF ; et</claim-text>
<claim-text>un élément de réduction logique (18, 22) doté d'une première entrée provenant du compteur (12) et une seconde entrée provenant du sélecteur d'indice (20) et doté d'une sortie ; le code OVSF souhaité sortant par ladite sortie,</claim-text>
<b>caractérisé en ce que</b> le système comporte en outre un élément de réordonnancement de bits (14) permettant de réordonner de manière sélective les bits de chacun desdits nombres binaires en partant du bit le moins significatif vers le bit le plus significatif, et de fournir les bits réordonnés à l'élément de réduction logique (18, 22).</claim-text></claim>
<claim id="c-fr-01-0002" num="0002">
<claim-text>Méthode permettant de générer un code OVSF (code à facteur d'étalement orthogonal variable) comportant :
<claim-text>la fourniture, moyennant un compteur binaire (12), d'un compte binaire comprenant une pluralité de nombres binaires séquentiels à M bits ;</claim-text>
<claim-text>le réordonnancement sélectif des bits de chacun desdits nombres binaires en partant du bit le moins significatif vers le bit le plus significatif ;</claim-text>
<claim-text>la fourniture, moyennant un sélecteur d'indice (20), d'une identification binaire à M bits dudit code OVSF ; et</claim-text>
<claim-text>la sortie, par une sortie de l'élément de réduction logique (18, 22) présentant une première entrée servant à recevoir les bits réordonnés depuis le compteur (12) et une seconde entrée depuis le sélecteur d'indice (20), du code OVSF souhaité.</claim-text></claim-text></claim>
</claims>
<drawings id="draw" lang="en">
<figure id="f0001" num="1,2"><img id="if0001" file="imgf0001.tif" wi="165" he="231" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="15"> -->
<figure id="f0002" num="3A,3B"><img id="if0002" file="imgf0002.tif" wi="165" he="220" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="16"> -->
<figure id="f0003" num="4,8"><img id="if0003" file="imgf0003.tif" wi="165" he="220" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="17"> -->
<figure id="f0004" num="5"><img id="if0004" file="imgf0004.tif" wi="163" he="230" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="18"> -->
<figure id="f0005" num="6,7"><img id="if0005" file="imgf0005.tif" wi="162" he="233" img-content="drawing" img-format="tif"/></figure><!-- EPO <DP n="19"> -->
<figure id="f0006" num="9"><img id="if0006" file="imgf0006.tif" wi="158" he="135" img-content="drawing" img-format="tif"/></figure>
</drawings>
<ep-reference-list id="ref-list">
<heading id="ref-h0001"><b>REFERENCES CITED IN THE DESCRIPTION</b></heading>
<p id="ref-p0001" num=""><i>This list of references cited by the applicant is for the reader's convenience only. It does not form part of the European patent document. Even though great care has been taken in compiling the references, errors or omissions cannot be excluded and the EPO disclaims all liability in this regard.</i></p>
<heading id="ref-h0002"><b>Patent documents cited in the description</b></heading>
<p id="ref-p0002" num="">
<ul id="ref-ul0001" list-style="bullet">
<li><patcit id="ref-pcit0001" dnum="US5311176A"><document-id><country>US</country><doc-number>5311176</doc-number><kind>A</kind></document-id></patcit><crossref idref="pcit0001">[0007]</crossref></li>
<li><patcit id="ref-pcit0002" dnum="EP1252734A"><document-id><country>EP</country><doc-number>1252734</doc-number><kind>A</kind><date>20000204</date></document-id></patcit><crossref idref="pcit0002">[0007]</crossref></li>
</ul></p>
</ep-reference-list>
</ep-patent-document>
