On Thu, 19 Mar 1998 16:15:10 -0800 "Randie Ohtsji [4555]" writes: >Hi Tom, > >Actually we have control at both the sending and receiving end, so >other types of FEC may be considered. How does Convolutional/Viterbi >compare to RS? Are you doing this with a PIC? I've been kicking this idea around for a while, but don't quote me as an expert. I don't understand very much of the theory since the literature presents it from an abstract math viewpoint that I just can't get a grip on. But I'm always trying to learn more, so I'm glad to see some discussion. I have taken one of the C-language RS "engines" and crunched it into decently-effective PIC assembler. It appears that a 20 MHz PIC would be able to keep up with 128-byte blocks sent at about 30 Kbps. However, in order for RS to be really effective in most situations, especially radio, it should be interleaved. The two downsides to that are that the encoder and decoder need more RAM, and there is a delay in transmission. This is the project that's waiting for a PIC with about 2Kbyte of RAM. The RS encoder/decoder takes about 500 PIC instructions to store and something like 20000 cycles to execute. Also 2 lookup tables of 2^N x N bits are required where N is the number of bits you use per symbol. In the commonly used case of 8 bits per symbol, that would be 512 bytes of tables. I used 7 bits per symbol, so the tables are 128 x 7 bits. One thing I didn't like about the C decoder was that it used a time-consuming process to find the syndrome from the received data and parity. It seems that that could be done in a single pass similar to how the encoder works by using some sort of "error check polynomial" in place of the "generator polynomial." But I lack the theory background to know how. I didn't try much with a convolutional code. These codes seem more for continuous use than intermittently-sent "packets". It appeared to me that implementing a Viterbi decoder on a general-purpose processor like a PIC would require considerably more processing power than a similar RS system. Another neat thing about RS is that you can improve the recovery of data by using "erasures". If some part of your radio receiver can tell the decoder that a particular received symbol is almost certainly wrong, twice as many of these "erased" symbols can be recovered as ones that have to be detected as erroneous first. For example, if the radio loses carrier, detects impulse noise, or appears to lose bit sync (a bit comes in that crosses zero near of it's bit cell is almost certainly wrong), it can flag erasures to the ECC decoder. Or if you RS a block, then interleave these blocks and RS them again, a block that is unrecoverable from the first pass would be marked as erased and quite likely recovered in the second pass (the erased symbols would be scattered through many blocks for the second pass). This is how CDs work (data CD's have a third pass of RS after that, so unrecoverable errors are *really* rare). It defintely took two twisted minds to come up with Reed-Solomon code. _____________________________________________________________________ You don't need to buy Internet access to use free Internet e-mail. Get completely free e-mail from Juno at http://www.juno.com Or call Juno at (800) 654-JUNO [654-5866]