⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vkey_sel.v

📁 一个关于DES算法的verilog语言实现,包括了各个实现模块以及测试模块
💻 V
📖 第 1 页 / 共 2 页
字号:
/////////////////////////////////////////////////////////////////////
////                                                             ////
////  密钥设置模块                                               ////
////  根据给定的密钥设置16个48位的子密钥                         ////
////                                                             ////
/////////////////////////////////////////////////////////////////////


module  vkey_sel(K_sub, K, roundSel, dec);
output	[1:48]	K_sub;
input	[55:0]	K;
input	[3:0]	roundSel;
input		dec;

reg  [1:48]	K_sub;
wire [1:48]	K1, K2, K3, K4, K5, K6, K7, K8, K9;
wire [1:48]	K10, K11, K12, K13, K14, K15, K16;

always @(K1 or K2 or K3 or K4 or K5 or K6 or K7 or K8 or K9 or K10
              or K11 or K12 or K13 or K14 or K15 or K16 or roundSel)
	case (roundSel)		// 	明确指定步骤中该使用哪一个子密钥
            0:  K_sub = K1;
            1:  K_sub = K2;
            2:  K_sub = K3;
            3:  K_sub = K4;
            4:  K_sub = K5;
            5:  K_sub = K6;
            6:  K_sub = K7;
            7:  K_sub = K8;
            8:  K_sub = K9;
            9:  K_sub = K10;
            10: K_sub = K11;
            11: K_sub = K12;
            12: K_sub = K13;
            13: K_sub = K14;
            14: K_sub = K15;
            15: K_sub = K16;
	endcase

// 利用dec和密钥K各位的值逐一确定16个子密钥各位的值
assign K16[1] = dec ? K[47] : K[40]; 
assign K16[2] = dec ? K[11] : K[4];
assign K16[3] = dec ? K[26] : K[19];
assign K16[4] = dec ? K[3] : K[53];
assign K16[5] = dec ? K[13] : K[6];
assign K16[6] = dec ? K[41] : K[34];
assign K16[7] = dec ? K[27] : K[20];
assign K16[8] = dec ? K[6] : K[24];
assign K16[9] = dec ? K[54] : K[47];
assign K16[10] = dec ? K[48] : K[41];
assign K16[11] = dec ? K[39] : K[32];
assign K16[12] = dec ? K[19] : K[12];
assign K16[13] = dec ? K[53] : K[46];
assign K16[14] = dec ? K[25] : K[18];
assign K16[15] = dec ? K[33] : K[26];
assign K16[16] = dec ? K[34] : K[27];
assign K16[17] = dec ? K[17] : K[10];
assign K16[18] = dec ? K[5] : K[55];
assign K16[19] = dec ? K[4] : K[54];
assign K16[20] = dec ? K[55] : K[48];
assign K16[21] = dec ? K[24] : K[17];
assign K16[22] = dec ? K[32] : K[25];
assign K16[23] = dec ? K[40] : K[33];
assign K16[24] = dec ? K[20] : K[13];
assign K16[25] = dec ? K[36] : K[29];
assign K16[26] = dec ? K[31] : K[51];
assign K16[27] = dec ? K[21] : K[14];
assign K16[28] = dec ? K[8] : K[1];
assign K16[29] = dec ? K[23] : K[16];
assign K16[30] = dec ? K[52] : K[45];
assign K16[31] = dec ? K[14] : K[7];
assign K16[32] = dec ? K[29] : K[22];
assign K16[33] = dec ? K[51] : K[44];
assign K16[34] = dec ? K[9] : K[2];
assign K16[35] = dec ? K[35] : K[28];
assign K16[36] = dec ? K[30] : K[23];
assign K16[37] = dec ? K[2] : K[50];
assign K16[38] = dec ? K[37] : K[30];
assign K16[39] = dec ? K[22] : K[15];
assign K16[40] = dec ? K[0] : K[52];
assign K16[41] = dec ? K[42] : K[35];
assign K16[42] = dec ? K[38] : K[31];
assign K16[43] = dec ? K[16] : K[9];
assign K16[44] = dec ? K[43] : K[36];
assign K16[45] = dec ? K[44] : K[37];
assign K16[46] = dec ? K[1] : K[49];
assign K16[47] = dec ? K[7] : K[0];
assign K16[48] = dec ? K[28] : K[21];

assign K15[1] = dec ? K[54] : K[33];
assign K15[2] = dec ? K[18] : K[54];
assign K15[3] = dec ? K[33] : K[12];
assign K15[4] = dec ? K[10] : K[46];
assign K15[5] = dec ? K[20] : K[24];
assign K15[6] = dec ? K[48] : K[27];
assign K15[7] = dec ? K[34] : K[13];
assign K15[8] = dec ? K[13] : K[17];
assign K15[9] = dec ? K[4] : K[40];
assign K15[10] = dec ? K[55] : K[34];
assign K15[11] = dec ? K[46] : K[25];
assign K15[12] = dec ? K[26] : K[5];
assign K15[13] = dec ? K[3] : K[39];
assign K15[14] = dec ? K[32] : K[11];
assign K15[15] = dec ? K[40] : K[19];
assign K15[16] = dec ? K[41] : K[20];
assign K15[17] = dec ? K[24] : K[3];
assign K15[18] = dec ? K[12] : K[48];
assign K15[19] = dec ? K[11] : K[47];
assign K15[20] = dec ? K[5] : K[41];
assign K15[21] = dec ? K[6] : K[10];
assign K15[22] = dec ? K[39] : K[18];
assign K15[23] = dec ? K[47] : K[26];
assign K15[24] = dec ? K[27] : K[6];
assign K15[25] = dec ? K[43] : K[22];
assign K15[26] = dec ? K[38] : K[44];
assign K15[27] = dec ? K[28] : K[7];
assign K15[28] = dec ? K[15] : K[49];
assign K15[29] = dec ? K[30] : K[9];
assign K15[30] = dec ? K[0] : K[38];
assign K15[31] = dec ? K[21] : K[0];
assign K15[32] = dec ? K[36] : K[15];
assign K15[33] = dec ? K[31] : K[37];
assign K15[34] = dec ? K[16] : K[50];
assign K15[35] = dec ? K[42] : K[21];
assign K15[36] = dec ? K[37] : K[16];
assign K15[37] = dec ? K[9] : K[43];
assign K15[38] = dec ? K[44] : K[23];
assign K15[39] = dec ? K[29] : K[8];
assign K15[40] = dec ? K[7] : K[45];
assign K15[41] = dec ? K[49] : K[28];
assign K15[42] = dec ? K[45] : K[51];
assign K15[43] = dec ? K[23] : K[2];
assign K15[44] = dec ? K[50] : K[29];
assign K15[45] = dec ? K[51] : K[30];
assign K15[46] = dec ? K[8] : K[42];
assign K15[47] = dec ? K[14] : K[52];
assign K15[48] = dec ? K[35] : K[14];

assign K14[1] = dec ? K[11] : K[19];
assign K14[2] = dec ? K[32] : K[40];
assign K14[3] = dec ? K[47] : K[55];
assign K14[4] = dec ? K[24] : K[32];
assign K14[5] = dec ? K[34] : K[10];
assign K14[6] = dec ? K[5] : K[13];
assign K14[7] = dec ? K[48] : K[24];
assign K14[8] = dec ? K[27] : K[3];
assign K14[9] = dec ? K[18] : K[26];
assign K14[10] = dec ? K[12] : K[20];
assign K14[11] = dec ? K[3] : K[11];
assign K14[12] = dec ? K[40] : K[48];
assign K14[13] = dec ? K[17] : K[25];
assign K14[14] = dec ? K[46] : K[54];
assign K14[15] = dec ? K[54] : K[5];
assign K14[16] = dec ? K[55] : K[6];
assign K14[17] = dec ? K[13] : K[46];
assign K14[18] = dec ? K[26] : K[34];
assign K14[19] = dec ? K[25] : K[33];
assign K14[20] = dec ? K[19] : K[27];
assign K14[21] = dec ? K[20] : K[53];
assign K14[22] = dec ? K[53] : K[4];
assign K14[23] = dec ? K[4] : K[12];
assign K14[24] = dec ? K[41] : K[17];
assign K14[25] = dec ? K[2] : K[8];
assign K14[26] = dec ? K[52] : K[30];
assign K14[27] = dec ? K[42] : K[52];
assign K14[28] = dec ? K[29] : K[35];
assign K14[29] = dec ? K[44] : K[50];
assign K14[30] = dec ? K[14] : K[51];
assign K14[31] = dec ? K[35] : K[45];
assign K14[32] = dec ? K[50] : K[1];
assign K14[33] = dec ? K[45] : K[23];
assign K14[34] = dec ? K[30] : K[36];
assign K14[35] = dec ? K[1] : K[7];
assign K14[36] = dec ? K[51] : K[2];
assign K14[37] = dec ? K[23] : K[29];
assign K14[38] = dec ? K[31] : K[9];
assign K14[39] = dec ? K[43] : K[49];
assign K14[40] = dec ? K[21] : K[31];
assign K14[41] = dec ? K[8] : K[14];
assign K14[42] = dec ? K[0] : K[37];
assign K14[43] = dec ? K[37] : K[43];
assign K14[44] = dec ? K[9] : K[15];
assign K14[45] = dec ? K[38] : K[16];
assign K14[46] = dec ? K[22] : K[28];
assign K14[47] = dec ? K[28] : K[38];
assign K14[48] = dec ? K[49] : K[0];

assign K13[1] = dec ? K[25] : K[5];
assign K13[2] = dec ? K[46] : K[26];
assign K13[3] = dec ? K[4] : K[41];
assign K13[4] = dec ? K[13] : K[18];
assign K13[5] = dec ? K[48] : K[53];
assign K13[6] = dec ? K[19] : K[24];
assign K13[7] = dec ? K[5] : K[10];
assign K13[8] = dec ? K[41] : K[46];
assign K13[9] = dec ? K[32] : K[12];
assign K13[10] = dec ? K[26] : K[6];
assign K13[11] = dec ? K[17] : K[54];
assign K13[12] = dec ? K[54] : K[34];
assign K13[13] = dec ? K[6] : K[11];
assign K13[14] = dec ? K[3] : K[40];
assign K13[15] = dec ? K[11] : K[48];
assign K13[16] = dec ? K[12] : K[17];
assign K13[17] = dec ? K[27] : K[32];
assign K13[18] = dec ? K[40] : K[20];
assign K13[19] = dec ? K[39] : K[19];
assign K13[20] = dec ? K[33] : K[13];
assign K13[21] = dec ? K[34] : K[39];
assign K13[22] = dec ? K[10] : K[47];
assign K13[23] = dec ? K[18] : K[55];
assign K13[24] = dec ? K[55] : K[3];
assign K13[25] = dec ? K[16] : K[49];
assign K13[26] = dec ? K[7] : K[16];
assign K13[27] = dec ? K[1] : K[38];
assign K13[28] = dec ? K[43] : K[21];
assign K13[29] = dec ? K[31] : K[36];
assign K13[30] = dec ? K[28] : K[37];
assign K13[31] = dec ? K[49] : K[31];
assign K13[32] = dec ? K[9] : K[42];
assign K13[33] = dec ? K[0] : K[9];
assign K13[34] = dec ? K[44] : K[22];
assign K13[35] = dec ? K[15] : K[52];
assign K13[36] = dec ? K[38] : K[43];
assign K13[37] = dec ? K[37] : K[15];
assign K13[38] = dec ? K[45] : K[50];
assign K13[39] = dec ? K[2] : K[35];
assign K13[40] = dec ? K[35] : K[44];
assign K13[41] = dec ? K[22] : K[0];
assign K13[42] = dec ? K[14] : K[23];
assign K13[43] = dec ? K[51] : K[29];
assign K13[44] = dec ? K[23] : K[1];
assign K13[45] = dec ? K[52] : K[2];
assign K13[46] = dec ? K[36] : K[14];
assign K13[47] = dec ? K[42] : K[51];
assign K13[48] = dec ? K[8] : K[45];

assign K12[1] = dec ? K[39] : K[48];
assign K12[2] = dec ? K[3] : K[12];
assign K12[3] = dec ? K[18] : K[27];
assign K12[4] = dec ? K[27] : K[4];
assign K12[5] = dec ? K[5] : K[39];
assign K12[6] = dec ? K[33] : K[10];
assign K12[7] = dec ? K[19] : K[53];
assign K12[8] = dec ? K[55] : K[32];
assign K12[9] = dec ? K[46] : K[55];
assign K12[10] = dec ? K[40] : K[17];
assign K12[11] = dec ? K[6] : K[40];
assign K12[12] = dec ? K[11] : K[20];
assign K12[13] = dec ? K[20] : K[54];
assign K12[14] = dec ? K[17] : K[26];
assign K12[15] = dec ? K[25] : K[34];
assign K12[16] = dec ? K[26] : K[3];
assign K12[17] = dec ? K[41] : K[18];
assign K12[18] = dec ? K[54] : K[6];
assign K12[19] = dec ? K[53] : K[5];
assign K12[20] = dec ? K[47] : K[24];
assign K12[21] = dec ? K[48] : K[25];
assign K12[22] = dec ? K[24] : K[33];
assign K12[23] = dec ? K[32] : K[41];
assign K12[24] = dec ? K[12] : K[46];
assign K12[25] = dec ? K[30] : K[35];
assign K12[26] = dec ? K[21] : K[2];
assign K12[27] = dec ? K[15] : K[51];
assign K12[28] = dec ? K[2] : K[7];
assign K12[29] = dec ? K[45] : K[22];
assign K12[30] = dec ? K[42] : K[23];
assign K12[31] = dec ? K[8] : K[44];
assign K12[32] = dec ? K[23] : K[28];
assign K12[33] = dec ? K[14] : K[50];
assign K12[34] = dec ? K[31] : K[8];
assign K12[35] = dec ? K[29] : K[38];
assign K12[36] = dec ? K[52] : K[29];
assign K12[37] = dec ? K[51] : K[1];
assign K12[38] = dec ? K[0] : K[36];
assign K12[39] = dec ? K[16] : K[21];
assign K12[40] = dec ? K[49] : K[30];
assign K12[41] = dec ? K[36] : K[45];
assign K12[42] = dec ? K[28] : K[9];
assign K12[43] = dec ? K[38] : K[15];
assign K12[44] = dec ? K[37] : K[42];
assign K12[45] = dec ? K[7] : K[43];
assign K12[46] = dec ? K[50] : K[0];
assign K12[47] = dec ? K[1] : K[37];
assign K12[48] = dec ? K[22] : K[31];

assign K11[1] = dec ? K[53] : K[34];
assign K11[2] = dec ? K[17] : K[55];
assign K11[3] = dec ? K[32] : K[13];
assign K11[4] = dec ? K[41] : K[47];
assign K11[5] = dec ? K[19] : K[25];
assign K11[6] = dec ? K[47] : K[53];
assign K11[7] = dec ? K[33] : K[39];
assign K11[8] = dec ? K[12] : K[18];
assign K11[9] = dec ? K[3] : K[41];
assign K11[10] = dec ? K[54] : K[3];
assign K11[11] = dec ? K[20] : K[26];
assign K11[12] = dec ? K[25] : K[6];
assign K11[13] = dec ? K[34] : K[40];
assign K11[14] = dec ? K[6] : K[12];
assign K11[15] = dec ? K[39] : K[20];
assign K11[16] = dec ? K[40] : K[46];
assign K11[17] = dec ? K[55] : K[4];
assign K11[18] = dec ? K[11] : K[17];
assign K11[19] = dec ? K[10] : K[48];
assign K11[20] = dec ? K[4] : K[10];
assign K11[21] = dec ? K[5] : K[11];
assign K11[22] = dec ? K[13] : K[19];
assign K11[23] = dec ? K[46] : K[27];
assign K11[24] = dec ? K[26] : K[32];
assign K11[25] = dec ? K[44] : K[21];
assign K11[26] = dec ? K[35] : K[43];
assign K11[27] = dec ? K[29] : K[37];
assign K11[28] = dec ? K[16] : K[52];
assign K11[29] = dec ? K[0] : K[8];
assign K11[30] = dec ? K[1] : K[9];
assign K11[31] = dec ? K[22] : K[30];
assign K11[32] = dec ? K[37] : K[14];
assign K11[33] = dec ? K[28] : K[36];
assign K11[34] = dec ? K[45] : K[49];
assign K11[35] = dec ? K[43] : K[51];
assign K11[36] = dec ? K[7] : K[15];
assign K11[37] = dec ? K[38] : K[42];
assign K11[38] = dec ? K[14] : K[22];
assign K11[39] = dec ? K[30] : K[7];
assign K11[40] = dec ? K[8] : K[16];
assign K11[41] = dec ? K[50] : K[31];
assign K11[42] = dec ? K[42] : K[50];
assign K11[43] = dec ? K[52] : K[1];
assign K11[44] = dec ? K[51] : K[28];
assign K11[45] = dec ? K[21] : K[29];
assign K11[46] = dec ? K[9] : K[45];
assign K11[47] = dec ? K[15] : K[23];
assign K11[48] = dec ? K[36] : K[44];

assign K10[1] = dec ? K[10] : K[20];
assign K10[2] = dec ? K[6] : K[41];
assign K10[3] = dec ? K[46] : K[24];
assign K10[4] = dec ? K[55] : K[33];
assign K10[5] = dec ? K[33] : K[11];
assign K10[6] = dec ? K[4] : K[39];
assign K10[7] = dec ? K[47] : K[25];
assign K10[8] = dec ? K[26] : K[4];
assign K10[9] = dec ? K[17] : K[27];
assign K10[10] = dec ? K[11] : K[46];
assign K10[11] = dec ? K[34] : K[12];
assign K10[12] = dec ? K[39] : K[17];
assign K10[13] = dec ? K[48] : K[26];
assign K10[14] = dec ? K[20] : K[55];
assign K10[15] = dec ? K[53] : K[6];
assign K10[16] = dec ? K[54] : K[32];
assign K10[17] = dec ? K[12] : K[47];
assign K10[18] = dec ? K[25] : K[3];
assign K10[19] = dec ? K[24] : K[34];
assign K10[20] = dec ? K[18] : K[53];
assign K10[21] = dec ? K[19] : K[54];
assign K10[22] = dec ? K[27] : K[5];
assign K10[23] = dec ? K[3] : K[13];
assign K10[24] = dec ? K[40] : K[18];
assign K10[25] = dec ? K[31] : K[7];
assign K10[26] = dec ? K[49] : K[29];
assign K10[27] = dec ? K[43] : K[23];
assign K10[28] = dec ? K[30] : K[38];
assign K10[29] = dec ? K[14] : K[49];
assign K10[30] = dec ? K[15] : K[50];
assign K10[31] = dec ? K[36] : K[16];
assign K10[32] = dec ? K[51] : K[0];
assign K10[33] = dec ? K[42] : K[22];
assign K10[34] = dec ? K[0] : K[35];
assign K10[35] = dec ? K[2] : K[37];
assign K10[36] = dec ? K[21] : K[1];
assign K10[37] = dec ? K[52] : K[28];
assign K10[38] = dec ? K[28] : K[8];
assign K10[39] = dec ? K[44] : K[52];
assign K10[40] = dec ? K[22] : K[2];
assign K10[41] = dec ? K[9] : K[44];
assign K10[42] = dec ? K[1] : K[36];
assign K10[43] = dec ? K[7] : K[42];
assign K10[44] = dec ? K[38] : K[14];
assign K10[45] = dec ? K[35] : K[15];
assign K10[46] = dec ? K[23] : K[31];
assign K10[47] = dec ? K[29] : K[9];
assign K10[48] = dec ? K[50] : K[30];

assign K9[1] = dec ? K[24] : K[6];
assign K9[2] = dec ? K[20] : K[27];
assign K9[3] = dec ? K[3] : K[10];
assign K9[4] = dec ? K[12] : K[19];
assign K9[5] = dec ? K[47] : K[54];
assign K9[6] = dec ? K[18] : K[25];
assign K9[7] = dec ? K[4] : K[11];
assign K9[8] = dec ? K[40] : K[47];
assign K9[9] = dec ? K[6] : K[13];
assign K9[10] = dec ? K[25] : K[32];
assign K9[11] = dec ? K[48] : K[55];
assign K9[12] = dec ? K[53] : K[3];
assign K9[13] = dec ? K[5] : K[12];
assign K9[14] = dec ? K[34] : K[41];
assign K9[15] = dec ? K[10] : K[17];
assign K9[16] = dec ? K[11] : K[18];
assign K9[17] = dec ? K[26] : K[33];
assign K9[18] = dec ? K[39] : K[46];
assign K9[19] = dec ? K[13] : K[20];
assign K9[20] = dec ? K[32] : K[39];
assign K9[21] = dec ? K[33] : K[40];
assign K9[22] = dec ? K[41] : K[48];
assign K9[23] = dec ? K[17] : K[24];
assign K9[24] = dec ? K[54] : K[4];
assign K9[25] = dec ? K[45] : K[52];
assign K9[26] = dec ? K[8] : K[15];
assign K9[27] = dec ? K[2] : K[9];
assign K9[28] = dec ? K[44] : K[51];
assign K9[29] = dec ? K[28] : K[35];
assign K9[30] = dec ? K[29] : K[36];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -