Page 223 - Hardware Implementation of Finite-Field Arithmetic
P. 223
m
Operations over GF (2 )—Polynomial Bases 203
when 2 => inic <= ‘0’; shift_r <= ‘0’; done <= ‘0’;
first <= ‘1’; strt_sq <= ‘0’; strt_mul <= ‘0’; last
<= ‘0’; capt <= ‘0’;
when 3 => inic <= ‘0’; shift_r <= ‘0’; done <= ‘0’;
first <= ‘0’; strt_sq <= ‘0’; strt_mul <= ‘1’; last
<= ‘0’; capt <= ‘0’;
when 4 => inic <= ‘0’; shift_r <= ‘0’; done <= ‘0’;
first <= ‘0’; strt_sq <= ‘0’; strt_mul <= ‘0’;last
<= ‘0’; capt <= ‘0’;
when 5 => inic <= ‘1’; shift_r <= ‘0’; done <= ‘0’;
first <= ‘0’; strt_sq <= ‘0’; strt_mul <= ‘0’;last
<= ‘0’; capt <= ‘0’;
when 6 => inic <= ‘0’; shift_r <= ‘0’; done <= ‘0’;
first <= ‘0’; strt_sq <= ‘1’; strt_mul <= ee(0);last
<= ‘0’; capt <= ‘0’;
when 7 => inic <= ‘0’; shift_r <= ‘0’; done <= ‘0’;
first <= ‘0’; strt_sq <= ‘0’; strt_mul <= ‘0’; last
<= ‘0’; capt <= ‘0’;
when 8 => inic <= ‘0’; shift_r <= ‘1’; done <= ‘0’;
first <= ‘0’; strt_sq <= ‘0’; strt_mul <= ‘0’; last
<= ‘0’; capt <= ‘0’;
when 9 => inic <= ‘0’; shift_r <= ‘0’; done <= ‘0’;
first <= ‘0’; strt_sq <= ‘0’; strt_mul <= ‘0’; last
<= ‘1’; capt <= ‘0’;
when 10 => inic <= ‘0’; shift_r <= ‘0’; done <= ‘0’;
first <= ‘0’; strt_sq <= ‘0’; strt_mul <= ‘1’; last
<= ‘0’; capt <= ‘0’;
when 11 => inic <= ‘0’; shift_r <= ‘0’; done <= ‘0’;
first <= ‘0’; strt_sq <= ‘0’; strt_mul <= ‘0’; last
<= ‘0’; capt <= ‘0’;
when 12 => inic <= ‘0’; shift_r <= ‘0’; done <= ‘0’;
first <= ‘0’; strt_sq <= ‘0’; strt_mul <= ‘0’; last
<= ‘0’; capt <= ‘1’;
end case;
if reset = ‘1’ then current_state <= 0;
elsif clk’event and clk = ‘1’ then
case current_state is
when 0 => if start = ‘0’ then current_state <= 1;
end if;
when 1 => if start = ‘1’ then current_state <= 2;
end if;
when 2 => current_state <= 3;
when 3 => current_state <= 4;
when 4 => if (done_mult = ‘1’) then current_state <= 5;
end if;
when 5 => current_state <= 6;
when 6 => current_state <= 7;
when 7 => if (done_sq = ‘1’ and (ee(0) = ‘0’ or
done_mult = ‘1’))then current_state <= 8; end if;