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

Operations over  Z [ x ]/ f ( x )   127
                                                               p

               a       f   a       f          a      f            f
                m–2     m–1  m–3    m–2       0       1           0
                                                                     a
                                          ...                         m–1
                                                          0
                    mod p       mod p             mod p       mod p
                   multiplier  multiplier        multiplier  multiplier


                  mod p        mod p            mod p       mod p
                 subtractor  subtractor        subtractor  subtractor


                  next_a      next_a            next_a       next_a
                       m–1         m–2              1            0
               c m–1   a m–1  c m–2  a m–2    c 1     a 1  c 0    a 0  b  i
                                          ...


                  k-bit by k-bits  k-bit by k-bits  k-bit by k-bits  k-bit by k-bits
                   multiplier  multiplier        multiplier  multiplier



                   adder       adder            adder       adder
                     2k bits     2k bits           2k bits     2k bits
                  mod p        mod p            mod p       mod p
                  reducer     reducer           reducer     reducer


                  next_c      next_c            next_c      next_c
                      m–1          m–2              1            0
               FIGURE 5.3  LSE-fi rst multiplier datapath.

               next_a_calc: for i in 1 to m-1 generate
                 mult_f_x_a(i) <= F(i) * int_a(M-1);
                 comp1: mod_239_reducer port map (mult_f_x_a(i),
                 mult_sub(i));
                 comp2:subtractor_mod_P port map (int_a(i-1),
                 mult_sub(i), next_a(i));
               end generate;
               mult_f_x_a(0) <= ( F(0) * int_a(M-1) );
               comp1: mod_239_reducer port map(mult_f_x_a(0),
               mult_sub(0));
               comp2: subtractor_mod_P port map(ZERO, mult_sub(0),
               next_a(0));
               registers_abc: process(clk)
               begin
               if clk’event and clk = ‘1’ then
   139   140   141   142   143   144   145   146   147   148   149