Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Convolutional code
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Convolutional encoding == To convolutionally encode data, start with ''k'' [[Processor register|memory registers]], each holding one input bit. Unless otherwise specified, all memory registers start with a value of 0. The encoder has ''n'' modulo-2 [[Adder (electronics)|adder]]s (a modulo 2 adder can be implemented with a single [[Boolean algebra|Boolean]] [[XOR gate]], where the logic is: {{math|1=0+0 = 0}}, {{math|1=0+1 = 1}}, {{math|1=1+0 = 1}}, {{math|1=1+1 = 0}}), and ''n'' [[Polynomial code|generator polynomials]] — one for each adder (see figure below). An input bit ''m''<sub>1</sub> is fed into the leftmost register. Using the generator polynomials and the existing values in the remaining registers, the encoder outputs ''n'' symbols. These symbols may be transmitted or punctured depending on the desired code rate. Now [[Bitwise operation#Bit shifts|bit shift]] all register values to the right (''m''<sub>1</sub> moves to ''m''<sub>0</sub>, ''m''<sub>0</sub> moves to ''m''<sub>β1</sub>) and wait for the next input bit. If there are no remaining input bits, the encoder continues shifting until all registers have returned to the zero state (flush bit termination). [[File:Convolutional encoder non-recursive.png|frame|Img.1. Rate 1/3 non-recursive, non-systematic convolutional encoder with constraint length 3]] The figure below is a rate {{1/3}} ({{frac|''m''|''n''}}) encoder with constraint length (''k'') of 3. Generator polynomials are {{math|1=''G''<sub>1</sub> = (1,1,1),}} {{math|1=''G''<sub>2</sub> = (0,1,1)}}, and {{math|1=''G''<sub>3</sub> = (1,0,1)}}. Therefore, output bits are calculated (modulo 2) as follows: :''n''<sub>1</sub> = ''m''<sub>1</sub> + ''m''<sub>0</sub> + ''m''<sub>β1</sub> :''n''<sub>2</sub> = ''m''<sub>0</sub> + ''m''<sub>β1</sub> :''n''<sub>3</sub> = ''m''<sub>1</sub> + ''m''<sub>β1</sub>. Convolutional codes can be systematic and non-systematic: * systematic repeats the structure of the message before encoding * non-systematic changes the initial structure Non-systematic convolutional codes are more popular due to better noise immunity. It relates to the free distance of the convolutional code.<ref>Moon, Todd K. "Error correction coding." Mathematical Methods and Algorithms. Jhon Wiley and Son (2005). p. 508</ref> <gallery heights="150"> File:Non-systematic convolutional code.png|A short illustration of non-systematic convolutional code. File:Systematic convolutional code.png|A short illustration of systematic convolutional code. </gallery>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)