This document discusses the VLSI implementation of a low power convolutional coding system with Viterbi decoding using finite state machines (FSM). It begins with an introduction to convolutional encoding and Viterbi decoding. It then describes the convolutional encoder which uses a shift register, the state diagram representation, and provides an example of encoding an input sequence. It discusses the Viterbi decoder structure including the branch metric unit, add-compare-select unit, and survivor path memory. It presents the Viterbi algorithm for decoding and shows simulation results of encoding and decoding an input sequence using FSMs. It concludes that the Viterbi algorithm allows for error correction without retransmissions and recovering the original message accurately.