The OpenCores 8b10b_encdec Project
Version 1.0 – First Release
10.03.2006
8b/10b Coding Background
The 1983 IBM published paper “A DC-Balanced, Partitioned-Block, 8b/10b Transmission
Code” by A. X. Widmer and P. A. Franaszek presented the background and methods for
generating a 10-bit coded representation of an 8-bit value. This method, developed primarily
for use in fiber optic links, was subsequently issued a patent, number 4,486,739, in 1984
which has now expired, so we're free to incorporate it in our designs.
8b/10b has been widely adopted by a variety of high speed data communication standards
used today and should prove ever more useful for FPGA-based designs as clock speeds and
I/O capabilities increase.
About the OpenCores “8b10b_encdec” Project
Basically, by providing a free open source VHDL implementation of both the 8b-to-10b
encoder and 10b-to-8b decoder we hope that many circuit designers can benefit from the
ingenuity of Widmer and Franaszek nearly a quarter of a century ago.
Our research has shown that there are a number of commercially available cores today. All
of the major FPGA vendors offer licensable 8b/10b cores tailored to their particular family of
devices. A number of independent IP developers offer core licenses as well. The goal of our
OpenCores project is to provide the foundation for understanding and adopting 8b/10b for a
variety of data communications challenges. Our goal was to provide a project that was as
close to the original 8b/10b specification as possible. Therefore, we have not currently
implemented any optional features such as error checking that might be found in commercial
cores. Some users may wish to add additional features to the basic core design. We have
therefore adopted the GNU GPL license so that improvements and enhancements can be
shared. If you have issues with the GPL license or if you need support, you should consider
one of the commercial core vendors.
8b/10b References
This text document is not intended to provide a detailed understanding of the 8b/10b coding
methodology, but rather a useful description of the VHDL modules that make up the project.
There are a number of sources that describe the coding methods in detail including:
• http://en.wikipedia.org/wiki/8B10B
• This is a good place to start with a simple description plus links to the original
publication and the patent.
• “A DC-Balanced, Partitioned-Block, 8b/10b Transmission Code” by A. X. Widmer and