Author Archives: webmaster

Affine Feedback Shift Register

Several previous articles have focused on linear feedback shift registers.  These are very simple circuits which are very often used for generating “maximal” length sequences, which are sequences of all non-zero values of N bits.  “Maximal” does not include the … Continue reading

Posted in Math | Comments Off on Affine Feedback Shift Register

Verilog’s Casex Issue

Verilog also has some academic constructs.  Things that make sense for people who don’t want to design a structure.  Casex is one example from Verilog.

Posted in Verilog | Comments Off on Verilog’s Casex Issue

Linear Regression

Previously, I had written an article about how to use non-orthogonal basis vectors for the modeling of sampled data.  Here I show the same idea, but reformulated as a linear regression problem.

Posted in Math | Comments Off on Linear Regression

Non-Orthogonal Basis Vectors

Transforms and projections are often very useful in gaining useful information about a signal.  The Fourier transform is a very common transform that give some information about the frequency content of a signal.  it is not the only possible transform … Continue reading

Posted in Math | Comments Off on Non-Orthogonal Basis Vectors

Viterbi Decoder, Traceback

There are two basic ways to keep track of the best path to get to each state.  These are the register-exchange, and the traceback method.  The register exchange is very easy to understand, and works well for small constraint lengths.  … Continue reading

Posted in FPGA, VHDL | Tagged | Comments Off on Viterbi Decoder, Traceback

Viterbi Decoder, ACS

The first part of the Viterbi Decoder is simply tracking the best path to each possible state.  This is the main complex part of the viterbi decoder, as it requires several accumulators.  Each ACS unit is fairly simple, but there … Continue reading

Posted in FPGA, VHDL | Tagged | Comments Off on Viterbi Decoder, ACS

Convolutional Coding

Convolutional Coding is a form of error correction code that is fairly popular because of the fairly low decoding complexity, and because there are popular algorithms that accept soft inputs.  The encoding complexity for convolutional codes is extremely low as … Continue reading

Posted in FPGA, VHDL | Tagged , | Comments Off on Convolutional Coding

Overpipelining Predicates

A previous post discussed why overpipelining occurs.  Overpipelinig was defined as adding register stages for no logicial or performance reason, but simply as a code convenience.  It is a common issue with design styles that favor single clocked processes.  Subexpressions … Continue reading

Posted in FPGA, Verilog | Comments Off on Overpipelining Predicates

Overpipelining

There are a handful of popular coding styles for VHDL/Verilog.  The best examples of the two prevalent ones can be seen with state machines.  The academic books like to show everything as two processes — one combinatorial, one sequential.  A … Continue reading

Posted in Verilog, VHDL | Comments Off on Overpipelining

Misusing Simulations

Simulations are a wonderful tool for verification, and for debugging problems.  There is a fine line between using simulation for debugging, and misusing simulation as a design aid.  When simulation is done for debug the intent is to find things … Continue reading

Posted in FPGA, Fundamentals | Comments Off on Misusing Simulations