| 1 | ======================================================================= |
|---|
| 2 | |
|---|
| 3 | ossie-liquid-components |
|---|
| 4 | |
|---|
| 5 | ======================================================================= |
|---|
| 6 | |
|---|
| 7 | This directory contains the project repo for OSSIE components using the |
|---|
| 8 | liquid-dsp library. It provides a massive simplification over |
|---|
| 9 | conventional OSSIE components projects by combining the entire build |
|---|
| 10 | system into one directory. This speeds up build time significantly as |
|---|
| 11 | the configure script needs to be run only once for all the components. |
|---|
| 12 | |
|---|
| 13 | These components require the liquid-dsp library installed, a free and |
|---|
| 14 | open-source signal processing library for software-defined radios. See |
|---|
| 15 | http://ganymede.ece.vt.edu for installation instructions, source code |
|---|
| 16 | respositories, and full documentation. |
|---|
| 17 | |
|---|
| 18 | BUILD: |
|---|
| 19 | $ ./reconf |
|---|
| 20 | $ ./configure |
|---|
| 21 | $ make |
|---|
| 22 | |
|---|
| 23 | INSTALL: |
|---|
| 24 | $ make install |
|---|
| 25 | |
|---|
| 26 | The following components are available: |
|---|
| 27 | complexFloat2Short |
|---|
| 28 | complexShort2Float |
|---|
| 29 | Channel |
|---|
| 30 | FlexframeGen |
|---|
| 31 | FlexframeSync |
|---|
| 32 | FrameGen64 |
|---|
| 33 | FrameSync64 |
|---|
| 34 | PacketDecoder |
|---|
| 35 | PacketEncoder |
|---|
| 36 | PacketSink |
|---|
| 37 | PacketSource |
|---|
| 38 | |
|---|
| 39 | Here is a brief description of each |
|---|
| 40 | |
|---|
| 41 | complexFloat2Short |
|---|
| 42 | complexShort2Float |
|---|
| 43 | These components simply convert a complexFloat CORBA type to a |
|---|
| 44 | complexShort (and vise versa). This is useful for plotting, as the |
|---|
| 45 | tools do not support complexFloat at the time these components were |
|---|
| 46 | written. Signal processing elements rely on floating-point data |
|---|
| 47 | types to maintain a sufficient dynamic range. |
|---|
| 48 | |
|---|
| 49 | Channel |
|---|
| 50 | The channel component adds the following impairments: |
|---|
| 51 | * CFO, carrier frequency offset |
|---|
| 52 | * CPO, carrier phase offset |
|---|
| 53 | * noise at a specific signal-to-noise ratio (assuming the RMS of the |
|---|
| 54 | input signal is unity) |
|---|
| 55 | * gain (maintains specific SNR level) |
|---|
| 56 | * tau, fractional timing offset (not yet implemented) |
|---|
| 57 | |
|---|
| 58 | FlexframeGen |
|---|
| 59 | FlexframeSync |
|---|
| 60 | Generate a flexframe. |
|---|
| 61 | Here are the available modulation schemes: |
|---|
| 62 | bpsk, qpsk, psk<2..256>, dpsk<2..256>, qam<4..256>, apsk<4..128>, |
|---|
| 63 | ask<2..256>, arb16opt, arb64vt |
|---|
| 64 | (see A.1 at the end of this file for details). |
|---|
| 65 | The generator accepts a header of exactly 8 bytes (anything else will |
|---|
| 66 | result in an exception being thrown), and a payload of any reasonable |
|---|
| 67 | length. |
|---|
| 68 | |
|---|
| 69 | FrameGen64 |
|---|
| 70 | FrameSync64 |
|---|
| 71 | Generate a frame64. The header length is exactly 24 bytes and the payload |
|---|
| 72 | is 64 bytes exactly. This is a simplified frame that does not allow |
|---|
| 73 | adjustment of modulation and forward error-correction coding. |
|---|
| 74 | |
|---|
| 75 | PacketDecoder |
|---|
| 76 | PacketEncoder |
|---|
| 77 | Encode/decode packets using various forward error-correction codes (FEC). |
|---|
| 78 | The input data are encoded using optional inner and outer codecs with an |
|---|
| 79 | optional data validity check (either a cylic redundancy check or simple |
|---|
| 80 | checksum). See A.2 and A.3 at the end of this file for details. |
|---|
| 81 | |
|---|
| 82 | PacketSink |
|---|
| 83 | PacketSource |
|---|
| 84 | Generate/absorb random packets with headers. |
|---|
| 85 | |
|---|
| 86 | ====================================================== |
|---|
| 87 | A.1 Available modulation schemes |
|---|
| 88 | ====================================================== |
|---|
| 89 | Tabulated below is a list of all the digital modulation schemes available. The |
|---|
| 90 | first few types are generic to their constellation size (i.e. |
|---|
| 91 | 2,4,8,16,32,...256); however not all combinations are available. For example |
|---|
| 92 | apsk only allows a minimum of M=4 points in the constellation and a maximum of |
|---|
| 93 | M=128. The last set of modulation schemes have a specific size. |
|---|
| 94 | |
|---|
| 95 | Generic types |
|---|
| 96 | [psk] phase-shift keying (psk2,psk4,psk8,...psk256) |
|---|
| 97 | [dpsk] differential phase-shift keying (dpsk2,dpsk4,...dpsk256) |
|---|
| 98 | [ask] amplitude-shift keying (ask2,ask4,ask8,...ask256) |
|---|
| 99 | [qam] quadrature amplitude-shift keying (qam4,qam8,qam16,...qam256) |
|---|
| 100 | [apsk] amplitude/phase-shift keying (apsk4,apsk8,apsk16,...apsk128) |
|---|
| 101 | |
|---|
| 102 | Specific types |
|---|
| 103 | [bpsk] specific BPSK |
|---|
| 104 | [qpsk] specific QPSK |
|---|
| 105 | [arb16opt] arbitrary modem (optimal 16-QAM) |
|---|
| 106 | [arb64vt] arbitrary modem (Virginia Tech logo) |
|---|
| 107 | |
|---|
| 108 | ====================================================== |
|---|
| 109 | A.2 Available forward error-correction codes |
|---|
| 110 | ====================================================== |
|---|
| 111 | Note that only the Hamming and repeat codes are available by default. The |
|---|
| 112 | convolutional and Reed-Solomon codes are available only if libfec is installed |
|---|
| 113 | (see http://www.ka9q.net/code/fec/). Details about installation can be found |
|---|
| 114 | by reading the liquid-dsp documentation (see the source code or |
|---|
| 115 | http://ganymede.ece.vt.edu). |
|---|
| 116 | [none] none |
|---|
| 117 | [r3] repeat(3) |
|---|
| 118 | [r5] repeat(5) |
|---|
| 119 | [h74] Hamming(7,4) |
|---|
| 120 | [h84] Hamming(8,4) |
|---|
| 121 | [h128] Hamming(12,8) |
|---|
| 122 | [v27] convolutional r1/2 K=7 |
|---|
| 123 | [v29] convolutional r1/2 K=9 |
|---|
| 124 | [v39] convolutional r1/3 K=9 |
|---|
| 125 | [v615] convolutional r1/6 K=15 |
|---|
| 126 | [v27p23] convolutional r2/3 K=7 (punctured) |
|---|
| 127 | [v27p34] convolutional r3/4 K=7 (punctured) |
|---|
| 128 | [v27p45] convolutional r4/5 K=7 (punctured) |
|---|
| 129 | [v27p56] convolutional r5/6 K=7 (punctured) |
|---|
| 130 | [v27p67] convolutional r6/7 K=7 (punctured) |
|---|
| 131 | [v27p78] convolutional r7/8 K=7 (punctured) |
|---|
| 132 | [v29p23] convolutional r2/3 K=9 (punctured) |
|---|
| 133 | [v29p34] convolutional r3/4 K=9 (punctured) |
|---|
| 134 | [v29p45] convolutional r4/5 K=9 (punctured) |
|---|
| 135 | [v29p56] convolutional r5/6 K=9 (punctured) |
|---|
| 136 | [v29p67] convolutional r6/7 K=9 (punctured) |
|---|
| 137 | [v29p78] convolutional r7/8 K=9 (punctured) |
|---|
| 138 | [rs8] Reed-Solomon, 223/255 |
|---|
| 139 | |
|---|
| 140 | ====================================================== |
|---|
| 141 | A.3 Available data validity checks |
|---|
| 142 | ====================================================== |
|---|
| 143 | Tabulated below is a list of the available data validity checks. When no check |
|---|
| 144 | is used ('none') the data will always be returned as 'valid.' The available |
|---|
| 145 | cyclic redundancy checks range from 8 to 32 bits and are considerably stronger |
|---|
| 146 | than the simple 8-bit checksum. |
|---|
| 147 | [none] none |
|---|
| 148 | [checksum] checksum (8-bit) |
|---|
| 149 | [crc8] CRC (8-bit) |
|---|
| 150 | [crc16] CRC (16-bit) |
|---|
| 151 | [crc24] CRC (24-bit) |
|---|
| 152 | [crc32] CRC (32-bit) |
|---|
| 153 | |
|---|