Page 225 - Hardware Implementation of Finite-Field Arithmetic
P. 225

m
                             Operations over  GF (2 )—Polynomial Bases      205

                  The computation primitives are
                             b(x)/x and c(x)x  − 1  mod f(x) if b  = 0
                                                       0
                       (a(x) + b(x))/x and (c(x) + d(x))x  − 1  mod f(x) if b  = 1
                                                             0
                  Given a polynomial  α(x), the computation of α(x)x  − 1  mod f(x),
               with

                                m
                          f(x) = x  + f  x m − 1  + f  x m − 2   +  . . .  + f x + 1
                                   m − 1    m − 2        1
               is performed as follows:
                                    α(x) ≡ α(x) + α f(x)
                                                0
                 = α  x m − 1  + α  x m − 2  +  . . .  + α x + α  + α x  + α   f  x m − 1
                                                   m
                  m − 1     m − 2        1    0   0    0 m − 1
                   + α f  x m − 2   +  . . .  + α   f x + α
                    0   m − 2      0 1   0
               = α x  + (α   + α   f  )x m − 1  + (α   +  α   f  )x m − 2  +  . . .  + (α  + α   f )x
                    m
                  0     m − 1  0 m − 1    m − 2  0 m − 2         1   0 1
               so that
                     − 1
                α(x)x  mod f(x) = α x m − 1  + (α   +  α   f  )x m − 2  + (α   +  α   f  )x m − 3
                                0       m − 1  0 m − 1    m − 2  0 m − 2
                                                +  . . .  + (α  + α   f )
                                      1   0 1
                  The corresponding datapath is shown in Fig. 7.8.
                  A generic VHDL model binary_algorithm_polynomials.vhd has been
               generated. The complete VHDL file is available at www.arithmetic-
               circuits.org. The entity declaration is



                                                      d
                   a  b  a  b   a    b a       d   c  m–2 c   d  c  d c
                    m  m–1  m–1  m–2  m–2  1  1  m–1  m–1  m–2  1  1  0  0

                 0
                 0  1  0  1  0  1  ...  0  1  b 0  0  1  0  1  ...  0  1  0  1  b 0
                         initially: h(x)  ce_bd
                                                    f    f       f
               0   b m–1  b m–2  b m–3 ...  b 0     m–1   m–2     1
                        initially: f(x)  ce_ac
                                  ...
               a  a    a      a      a
                m  m–1  m–2   m–3     0
                                                    initially: g(x)  ce_bd
                                               d   d    d   ...  d
                                                m–1  m–2  m–3    0
                                                     initially: 0   ce_ac
                                                            ...
                                              c m–1  c m–2  c m–3  c 0

               FIGURE 7.8  Binary algorithm: datapath.
   220   221   222   223   224   225   226   227   228   229   230