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

📄 key_sel.v

📁 altera FPGA/CPLD高级篇(VHDL源代码)
💻 V
📖 第 1 页 / 共 3 页
字号:
/////////////////////////////////////////////////////////////////////
////                                                             ////
////  KEY_SEL                                                    ////
////  Select one of 16 sub-keys for round                        ////
////                                                             ////
////  Author: Rudolf Usselmann                                   ////
////          rudi@asics.ws                                      ////
////                                                             ////
/////////////////////////////////////////////////////////////////////
////                                                             ////
//// Copyright (C) 2001 Rudolf Usselmann                         ////
////                    rudi@asics.ws                            ////
////                                                             ////
//// This source file may be used and distributed without        ////
//// restriction provided that this copyright statement is not   ////
//// removed from the file and that any derivative work contains ////
//// the original copyright notice and the associated disclaimer.////
////                                                             ////
////     THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY     ////
//// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED   ////
//// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS   ////
//// FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL THE AUTHOR      ////
//// OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,         ////
//// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES    ////
//// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE   ////
//// GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR        ////
//// BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  ////
//// LIABILITY, WHETHER IN  CONTRACT, STRICT LIABILITY, OR TORT  ////
//// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT  ////
//// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE         ////
//// POSSIBILITY OF SUCH DAMAGE.                                 ////
////                                                             ////
/////////////////////////////////////////////////////////////////////

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

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)		// synopsys full_case parallel_case
            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


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

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

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

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

assign K12[1] = decrypt ? K[39] : K[48];
assign K12[2] = decrypt ? K[3] : K[12];
assign K12[3] = decrypt ? K[18] : K[27];
assign K12[4] = decrypt ? K[27] : K[4];
assign K12[5] = decrypt ? K[5] : K[39];
assign K12[6] = decrypt ? K[33] : K[10];
assign K12[7] = decrypt ? K[19] : K[53];
assign K12[8] = decrypt ? K[55] : K[32];
assign K12[9] = decrypt ? K[46] : K[55];
assign K12[10] = decrypt ? K[40] : K[17];
assign K12[11] = decrypt ? K[6] : K[40];
assign K12[12] = decrypt ? K[11] : K[20];
assign K12[13] = decrypt ? K[20] : K[54];
assign K12[14] = decrypt ? K[17] : K[26];
assign K12[15] = decrypt ? K[25] : K[34];
assign K12[16] = decrypt ? K[26] : K[3];
assign K12[17] = decrypt ? K[41] : K[18];
assign K12[18] = decrypt ? K[54] : K[6];
assign K12[19] = decrypt ? K[53] : K[5];
assign K12[20] = decrypt ? K[47] : K[24];
assign K12[21] = decrypt ? K[48] : K[25];
assign K12[22] = decrypt ? K[24] : K[33];

⌨️ 快捷键说明

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