A Flexible Low Power Cyclic Redundancy Check Algorithm Using Reduced Lookup Tables in Parallel
Cyclic redundancy checks are widely used today to ensure data integrity. This is a method of checking data for corruption that is used in data communications, ethernet, and other broadcasting methods. This method of checking for data corruption is extremely flexible, and can be tailored to meet the requirements of many systems and devices. Using hardware or software, cyclic redundancy checks take an input message and does modular arithmetic with a generator polynomial specific to the task. When the arithmetic is done, these values are attached to the input message and sent to be checked upon arrival. Upon arrival, the arithmetic is done again, and if there is no remainder then the data is fine, otherwise an error will be detected. This research investigates and studies popular cyclic redundancy check algorithms and proposes a new flexible low power algorithm for 32, 64, and 128-bit input lengths. Each algorithm is implemented and simulated in Verilog using Vivado by Xilinx. Synopsys design compiler is then used to estimate the power, area, critical timing, and to implement clock and power gating on synthesis at 45nm technology node. Lastly, each design is realized using Cadence Innovus in 180nm technology node for the layout of each chip design. The proposed design is highly flexible and was able to decrease the area and power by over 20%. It also exhibited the least power and area for 64- and 128-bit input length when using clock and power gating. Lastly, because the proposed design uses a reduced number of lookup tables the memory requirement for the implementation is less compared to other designs.