For a more complete understanding of the present disclosure and its advantages, reference is now made to the following description taken in conjunction with the accompanying drawings, in which like reference numerals represent like parts:
Typical Galois multiply-accumulate systems include a message ({right arrow over (m)}) consisting of N bits. The message is a superposition of a plurality of blocks ({right arrow over (b)}i). Each block ({right arrow over (b)}i) is of a fixed size (e.g., M bits). The blocks are multiplied over a Galois Field of prime two (e.g., GF(2)) with unit vectors ({right arrow over (e)}i) shifted by M bits with respect to each other. Thus, the message ({right arrow over (m)}) can be decomposed as shown by Equation 1 below:
The summation and the multiplication operations included in Equation 1 are performed over GF(2). The GF(2) multiplication is shown as the symbol while the GF(2) addition operation (an XOR operation) is shown as the symbol “⊕”.
As an example of a typical application for Galois multiply-accumulate system, suppose a message ({right arrow over (m)}) containing sixteen bits (N=16) requires decomposition and is equal to the binary sequence [1101111100111010]. Suppose further that message ({right arrow over (m)}) is a superposition of blocks ({right arrow over (b)}i) of a fixed number of bits (M). For example, suppose M=4 and is equal to the polynomial degree (or CRC width) W=3. Finally, suppose that the CRC polynomial ({right arrow over (p)}) is equal to [1010].
In a typical Galois application, message ({right arrow over (m)}) is first divided into four blocks [{right arrow over (b)}3 {right arrow over (b)}2 {right arrow over (b)}1 {right arrow over (b)}0] of four bits each, where {right arrow over (b)}0=1010, {right arrow over (b)}1=0011, {right arrow over (b)}2=1111 and {right arrow over (b)}3=1101. Moreover, message ({right arrow over (m)}) is the superposition of the blocks ({right arrow over (b)}i) multiplied by unit vectors ({right arrow over (e)}i) as given in Equation 2 below:
{right arrow over (m)}={right arrow over (b)}0{right arrow over (e)}0⊕{right arrow over (b)}1
{right arrow over (e)}1⊕{right arrow over (b)}2
{right arrow over (e)}2⊕{right arrow over (b)}3
{right arrow over (e)}3. [Eqn. 2]
Continuing with the example above, suppose that the unit vectors ({right arrow over (e)}i) are given by {right arrow over (e)}0=1, {right arrow over (e)}1=10000, {right arrow over (e)}2=100000000 and {right arrow over (e)}3=1000000000000. Next, the CRC of the message ({right arrow over (m)}) is given by the modulo-2 division of message ({right arrow over (m)}) by the CRC polynomial ({right arrow over (p)}) as given in Equation 3 below:
Using the modulation properties of Equations 4 and 5 below and after assuming that x is smaller than p (i.e., mod(x)p=x), Equation 3 may be simplified to Equation 6 below, where {right arrow over (β)}i≡CRC({right arrow over (e)}i) and {right arrow over (β)}i is a set of pre-computed coefficients:
Finally, Equation 6 simplifies to Equation 7 below, where the CRC calculation essentially becomes a series of Galois multiply-accumulate operations:
In Equation 7, the blocks ({right arrow over (b)}i) are of a particular size (e.g., W bits or less).
In accordance with one embodiment of the present disclosure, however, a series of modolu-2 multiply-accumulate operations is preferable. In alternate embodiments, modulo-2 multiplications may be used for at least some of the repetitive operations performed in the cyclic redundancy check (CRC) computations. As explained in greater detail below, a series of N-bit messages is parsed into blocks of size M for N/M parallel modulo-2 and multiply-accumulate operations. Finally, the accumulator is divided by the polynomial ({right arrow over (p)}).
As a specific example, Equation 3 above may be expanded using Equation 8 to arrive at Equation 9 below.
Assuming that the block sizes ({right arrow over (b)}i) are of size W bits or less, Equation 9 may be further simplified to a series of modolu-2 multiply-accumulate operations, as shown in Equation 10:
The division operation by the CRC polynomial is an epilog operation. Therefore, processing speed becomes less essential and reconfigurability becomes the main consideration.
Embodiments of the present disclosure offer a number of advantages over previously known systems and methods. For example, the present disclosure is based on modulo-2 multiplications and therefore uses relatively few logical gates and consumes less power when compared to prior art Galois multiplication techniques. Moreover, because the modulo-2 multiplication is not followed by a division, the operation may be performed at higher clock speed than the prior art systems based on Galois multiplications.
Conventional Galois multiplication methods depend upon the polynomials involved in the operation. As noted above, Galois multipliers have hardwired CRC polynomials and therefore are not reconfigurable to support other polynomials. Embodiments of the modulo-2 multiplication operation in accordance with the present disclosure, however, do not depend on a specific polynomial. Moreover, a lookup table approach may be implemented for full reconfigurability during polynomial division using, for example, lookup table 106. Thus, the polynomial value may be customized to suit a particular application.
Previous systems and methods require N/W CRC operations. According to one embodiment of the present disclosure, however, a series of GF(2) multiplications requires only one final CRC operation. Thus, one embodiment of the present disclosure saves at least (N/W)-1 unnecessary divisions.
Existing systems may be modified by turning off the carry bit capability and using the modulo-2 multiplication in accordance with the present disclosure. As another example, in one embodiment according to the present disclosure, the system and method may include performing the division of the accumulator by the CRC polynomial by a nibble using lookup table 106. Lookup table 106 is preferably made up of 16×W bits.
Although certain aspects of the present disclosure have been described in relation to specific systems, standards and structures, it should be easily appreciated by one skilled in the art that embodiments of the system of the present disclosure provides and comprehends a wide array of variations and combinations easily adapted to a number of signal processing systems. As described herein, the relative arrangement and operation of necessary functions may be provided in any manner suitable for a particular application. All such variations and modifications are hereby comprehended. It should also be appreciated that the constituent members or components of this system may be produced or provided using any suitable hardware, firmware, software, or combination(s) thereof.
The embodiments and examples set forth herein are therefore presented to best explain the present disclosure and its practical application, and to thereby enable those skilled in the art to make and utilize the system of the present disclosure. The description as set forth herein is therefore not intended to be exhaustive or to limit any invention to a precise form disclosed. As stated throughout, many modifications and variations are possible in light of the above teaching without departing from the spirit and scope of the following claims.