OpenCores
URL https://opencores.org/ocsvn/apbtoaes128/apbtoaes128/trunk

Subversion Repositories apbtoaes128

[/] [apbtoaes128/] [trunk/] [rtl/] [key_expander.v] - Diff between revs 9 and 14

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 9 Rev 14
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
//=====================================================================================
//=====================================================================================

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.