Line 101... |
Line 101... |
// Key Generation
|
// Key Generation
|
//=====================================================================================
|
//=====================================================================================
|
generate
|
generate
|
genvar i;
|
genvar i;
|
for(i = 0; i < KEY_NUM; i = i + 1)
|
for(i = 0; i < KEY_NUM; i = i + 1)
|
begin
|
begin:KG
|
assign key[KEY_NUM - 1 - i] = key_in[KEY_WIDTH*(i + 1) - 1 : KEY_WIDTH*i];
|
assign key[KEY_NUM - 1 - i] = key_in[KEY_WIDTH*(i + 1) - 1 : KEY_WIDTH*i];
|
end
|
end
|
endgenerate
|
endgenerate
|
|
|
//=====================================================================================
|
//=====================================================================================
|
// Key Out Generation
|
// Key Out Generation
|
//=====================================================================================
|
//=====================================================================================
|
generate
|
generate
|
genvar j;
|
genvar j;
|
for(j = 0; j < KEY_NUM; j = j + 1)
|
for(j = 0; j < KEY_NUM; j = j + 1)
|
begin
|
begin:KGO
|
if(j == 0)
|
if(j == 0)
|
assign key_out[KEY_WIDTH*(KEY_NUM - j) - 1 : KEY_WIDTH*(KEY_NUM - j - 1)] = key[j] ^ g_func;
|
assign key_out[KEY_WIDTH*(KEY_NUM - j) - 1 : KEY_WIDTH*(KEY_NUM - j - 1)] = key[j] ^ g_func;
|
else
|
else
|
if(j == 1)
|
if(j == 1)
|
assign key_out[KEY_WIDTH*(KEY_NUM - j) - 1 : KEY_WIDTH*(KEY_NUM - j - 1)] = (add_w_out) ? key[j] ^ key[j - 1] ^ g_func : key[j] ^ key[j - 1];
|
assign key_out[KEY_WIDTH*(KEY_NUM - j) - 1 : KEY_WIDTH*(KEY_NUM - j - 1)] = (add_w_out) ? key[j] ^ key[j - 1] ^ g_func : key[j] ^ key[j - 1];
|
Line 129... |
Line 129... |
// G Function Input Generation
|
// G Function Input Generation
|
//=====================================================================================
|
//=====================================================================================
|
generate
|
generate
|
genvar k;
|
genvar k;
|
for(k = 0; k < KEY_NUM; k = k + 1)
|
for(k = 0; k < KEY_NUM; k = k + 1)
|
|
begin:GFIG
|
assign rot_in[k] = (enc_dec) ? key[KEY_NUM - 1][WORD*(k + 1) - 1 : WORD*k] : key[KEY_NUM - 1][WORD*(k + 1) - 1 : WORD*k] ^ key[KEY_NUM - 2][WORD*(k + 1) - 1 : WORD*k];
|
assign rot_in[k] = (enc_dec) ? key[KEY_NUM - 1][WORD*(k + 1) - 1 : WORD*k] : key[KEY_NUM - 1][WORD*(k + 1) - 1 : WORD*k] ^ key[KEY_NUM - 2][WORD*(k + 1) - 1 : WORD*k];
|
|
end
|
endgenerate
|
endgenerate
|
|
|
generate
|
generate
|
genvar l;
|
genvar l;
|
for(l = 0; l < KEY_NUM; l = l + 1)
|
for(l = 0; l < KEY_NUM; l = l + 1)
|
|
begin:GFIG1
|
assign g_in[WORD*(l + 1) - 1 : WORD*l] = rot_in[(KEY_NUM + l - 1)%KEY_NUM];
|
assign g_in[WORD*(l + 1) - 1 : WORD*l] = rot_in[(KEY_NUM + l - 1)%KEY_NUM];
|
|
end
|
endgenerate
|
endgenerate
|
|
|
//=====================================================================================
|
//=====================================================================================
|
// G Functin Output Processsing
|
// G Functin Output Processsing
|
//=====================================================================================
|
//=====================================================================================
|